trtc-sdk-v5 5.10.2-beta.7 → 5.10.2-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/assets/debug-dialog.js +2 -2
  2. package/assets/face_detection/blaze_face_short_range.tflite +0 -0
  3. package/assets/face_detection/vision_wasm_internal.gz +0 -0
  4. package/assets/face_detection/vision_wasm_internal.js +20 -0
  5. package/assets/face_detection/vision_wasm_nosimd_internal.gz +0 -0
  6. package/assets/face_detection/vision_wasm_nosimd_internal.js +20 -0
  7. package/index.d.ts +48 -25
  8. package/package.json +1 -1
  9. package/plugins/cdn-streaming/package.json +1 -1
  10. package/plugins/cross-room/package.json +1 -1
  11. package/plugins/custom-encryption/package.json +1 -1
  12. package/plugins/device-detector/package.json +1 -1
  13. package/plugins/video-decoder/package.json +1 -1
  14. package/plugins/video-decoder/video-decoder.esm.js +1 -1
  15. package/plugins/video-decoder/video-decoder.umd.js +1 -1
  16. package/plugins/video-effect/basic-beauty/basic-beauty.esm.js +1 -1
  17. package/plugins/video-effect/basic-beauty/basic-beauty.umd.js +1 -1
  18. package/plugins/video-effect/basic-beauty/package.json +1 -1
  19. package/plugins/video-effect/beauty/package.json +1 -1
  20. package/plugins/video-effect/video-mixer/package.json +29 -0
  21. package/plugins/video-effect/video-mixer/video-mixer.esm.d.ts +20 -0
  22. package/plugins/video-effect/video-mixer/video-mixer.esm.js +1 -0
  23. package/plugins/video-effect/video-mixer/video-mixer.umd.js +1 -0
  24. package/plugins/video-effect/virtual-background/package.json +1 -1
  25. package/plugins/video-effect/virtual-background/virtual-background.esm.js +1 -1
  26. package/plugins/video-effect/virtual-background/virtual-background.umd.js +1 -1
  27. package/plugins/video-effect/watermark/package.json +1 -1
  28. package/plugins/voice-changer/package.json +1 -1
  29. package/trtc.esm.js +34 -61
  30. package/trtc.js +1 -17
  31. package/assets/audioProcessor-wasm.js +0 -1
package/trtc.esm.js CHANGED
@@ -1,17 +1,16 @@
1
- var H_=Object.create;var zo=Object.defineProperty,G_=Object.defineProperties,um=Object.getOwnPropertyDescriptor,W_=Object.getOwnPropertyDescriptors,z_=Object.getOwnPropertyNames,Aa=Object.getOwnPropertySymbols,hm=Object.getPrototypeOf,qc=Object.prototype.hasOwnProperty,mm=Object.prototype.propertyIsEnumerable,j_=Reflect.get;var jo=Math.pow,Jc=(s,i,e)=>i in s?zo(s,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[i]=e,K=(s,i)=>{for(var e in i||(i={}))qc.call(i,e)&&Jc(s,e,i[e]);if(Aa)for(var e of Aa(i))mm.call(i,e)&&Jc(s,e,i[e]);return s},ne=(s,i)=>G_(s,W_(i));var Jo=(s=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(s,{get:(i,e)=>(typeof require!="undefined"?require:i)[e]}):s)(function(s){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+s+'" is not supported')});var pm=(s,i)=>{var e={};for(var t in s)qc.call(s,t)&&i.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&Aa)for(var t of Aa(s))i.indexOf(t)<0&&mm.call(s,t)&&(e[t]=s[t]);return e};var Oi=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports),nr=(s,i)=>{for(var e in i)zo(s,e,{get:i[e],enumerable:!0})},J_=(s,i,e,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of z_(i))!qc.call(s,r)&&r!==e&&zo(s,r,{get:()=>i[r],enumerable:!(t=um(i,r))||t.enumerable});return s};var gt=(s,i,e)=>(e=s!=null?H_(hm(s)):{},J_(i||!s||!s.__esModule?zo(e,"default",{value:s,enumerable:!0}):e,s));var q=(s,i,e,t)=>{for(var r=t>1?void 0:t?um(i,e):i,o=s.length-1,n;o>=0;o--)(n=s[o])&&(r=(t?n(i,e,r):n(r))||r);return t&&r&&zo(i,e,r),r};var l=(s,i,e)=>Jc(s,typeof i!="symbol"?i+"":i,e);var Ct=(s,i,e)=>j_(hm(s),e,i);var I=(s,i,e)=>new Promise((t,r)=>{var o=d=>{try{a(e.next(d))}catch(c){r(c)}},n=d=>{try{a(e.throw(d))}catch(c){r(c)}},a=d=>d.done?t(d.value):Promise.resolve(d.value).then(o,n);a((e=e.apply(s,i)).next())});var Mt=Oi((KS,Xc)=>{"use strict";var q_=Object.prototype.hasOwnProperty,wt="~";function qo(){}Object.create&&(qo.prototype=Object.create(null),new qo().__proto__||(wt=!1));function X_(s,i,e){this.fn=s,this.context=i,this.once=e||!1}function fm(s,i,e,t,r){if(typeof e!="function")throw new TypeError("The listener must be a function");var o=new X_(e,t||s,r),n=wt?wt+i:i;return s._events[n]?s._events[n].fn?s._events[n]=[s._events[n],o]:s._events[n].push(o):(s._events[n]=o,s._eventsCount++),s}function Ca(s,i){--s._eventsCount===0?s._events=new qo:delete s._events[i]}function bt(){this._events=new qo,this._eventsCount=0}bt.prototype.eventNames=function(){var i=[],e,t;if(this._eventsCount===0)return i;for(t in e=this._events)q_.call(e,t)&&i.push(wt?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i};bt.prototype.listeners=function(i){var e=wt?wt+i:i,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var r=0,o=t.length,n=new Array(o);r<o;r++)n[r]=t[r].fn;return n};bt.prototype.listenerCount=function(i){var e=wt?wt+i:i,t=this._events[e];return t?t.fn?1:t.length:0};bt.prototype.emit=function(i,e,t,r,o,n){var a=wt?wt+i:i;if(!this._events[a])return!1;var d=this._events[a],c=arguments.length,h,u;if(d.fn){switch(d.once&&this.removeListener(i,d.fn,void 0,!0),c){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,t),!0;case 4:return d.fn.call(d.context,e,t,r),!0;case 5:return d.fn.call(d.context,e,t,r,o),!0;case 6:return d.fn.call(d.context,e,t,r,o,n),!0}for(u=1,h=new Array(c-1);u<c;u++)h[u-1]=arguments[u];d.fn.apply(d.context,h)}else{var m=d.length,p;for(u=0;u<m;u++)switch(d[u].once&&this.removeListener(i,d[u].fn,void 0,!0),c){case 1:d[u].fn.call(d[u].context);break;case 2:d[u].fn.call(d[u].context,e);break;case 3:d[u].fn.call(d[u].context,e,t);break;case 4:d[u].fn.call(d[u].context,e,t,r);break;default:if(!h)for(p=1,h=new Array(c-1);p<c;p++)h[p-1]=arguments[p];d[u].fn.apply(d[u].context,h)}}return!0};bt.prototype.on=function(i,e,t){return fm(this,i,e,t,!1)};bt.prototype.once=function(i,e,t){return fm(this,i,e,t,!0)};bt.prototype.removeListener=function(i,e,t,r){var o=wt?wt+i:i;if(!this._events[o])return this;if(!e)return Ca(this,o),this;var n=this._events[o];if(n.fn)n.fn===e&&(!r||n.once)&&(!t||n.context===t)&&Ca(this,o);else{for(var a=0,d=[],c=n.length;a<c;a++)(n[a].fn!==e||r&&!n[a].once||t&&n[a].context!==t)&&d.push(n[a]);d.length?this._events[o]=d.length===1?d[0]:d:Ca(this,o)}return this};bt.prototype.removeAllListeners=function(i){var e;return i?(e=wt?wt+i:i,this._events[e]&&Ca(this,e)):(this._events=new qo,this._eventsCount=0),this};bt.prototype.off=bt.prototype.removeListener;bt.prototype.addListener=bt.prototype.on;bt.prefixed=wt;bt.EventEmitter=bt;typeof Xc!="undefined"&&(Xc.exports=bt)});var md=Oi((iA,tp)=>{"use strict";var ep=tp.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(s){return s.encoding?"rtpmap:%d %s/%s/%s":s.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(s){return s.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(s){return s.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(s){return"extmap:%d"+(s.direction?"/%s":"%v")+(s["encrypt-uri"]?" %s":"%v")+" %s"+(s.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(s){return s.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(s){var i="candidate:%s %d %s %d %s %d typ %s";return i+=s.raddr!=null?" raddr %s rport %d":"%v%v",i+=s.tcptype!=null?" tcptype %s":"%v",s.generation!=null&&(i+=" generation %d"),i+=s["network-id"]!=null?" network-id %d":"%v",i+=s["network-cost"]!=null?" network-cost %d":"%v",i}},{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(s){var i="ssrc:%d";return s.attribute!=null&&(i+=" %s",s.value!=null&&(i+=":%s")),i}},{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(s){return s.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(s){return s.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(s){return"imageattr:%s %s %s"+(s.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(s){return"simulcast:%s %s"+(s.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(s){return"ts-refclk:%s"+(s.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(s){var i="mediaclk:";return i+=s.id!=null?"id=%s %s":"%v%s",i+=s.mediaClockValue!=null?"=%s":"",i+=s.rateNumerator!=null?" rate=%s":"",i+=s.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(ep).forEach(function(s){var i=ep[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var sp=Oi(Sr=>{"use strict";var mo=function(s){return String(Number(s))===s?Number(s):s},jg=function(s,i,e,t){if(t&&!e)i[t]=mo(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=mo(s[r+1]))},Jg=function(s,i,e){var t=s.name&&s.names;s.push&&!i[s.push]?i[s.push]=[]:t&&!i[s.name]&&(i[s.name]={});var r=s.push?{}:t?i[s.name]:i;jg(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},ip=md(),qg=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Sr.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(qg).forEach(function(r){var o=r[0],n=r.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(ip[o]||[]).length;a+=1){var d=ip[o][a];if(d.reg.test(n))return Jg(d,t,n)}}),i.media=e,i};var rp=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=mo(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};Sr.parseParams=function(s){return s.split(/;\s?/).reduce(rp,{})};Sr.parseFmtpConfig=Sr.parseParams;Sr.parsePayloads=function(s){return s.toString().split(" ").map(Number)};Sr.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(mo),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};Sr.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(rp,{})})};Sr.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=mo(e):(t=mo(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var np=Oi((sA,op)=>{"use strict";var Xl=md(),Xg=/%[sdv%]/g,Qg=function(s){var i=1,e=arguments,t=e.length;return s.replace(Xg,function(r){if(i>=t)return r;var o=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},Nn=function(s,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[s+"="+t];if(i.names)for(var o=0;o<i.names.length;o+=1){var n=i.names[o];i.name?r.push(e[i.name][n]):r.push(e[i.names[o]])}else r.push(e[i.name]);return Qg.apply(null,r)},Yg=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Zg=["i","c","b","a"];op.exports=function(s,i){i=i||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=i.outerOrder||Yg,t=i.innerOrder||Zg,r=[];return e.forEach(function(o){Xl[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(Nn(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(Nn(o,n,a))})})}),s.media.forEach(function(o){r.push(Nn("m",Xl.m[0],o)),t.forEach(function(n){Xl[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(Nn(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(d){r.push(Nn(n,a,d))})})})}),r.join(`\r
1
+ var Kp=Object.create;var Fs=Object.defineProperty,Zp=Object.defineProperties,Du=Object.getOwnPropertyDescriptor,ef=Object.getOwnPropertyDescriptors,tf=Object.getOwnPropertyNames,dn=Object.getOwnPropertySymbols,Ou=Object.getPrototypeOf,Cc=Object.prototype.hasOwnProperty,Mu=Object.prototype.propertyIsEnumerable,rf=Reflect.get;var Gi=Math.pow,Ac=(s,i,e)=>i in s?Fs(s,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[i]=e,v=(s,i)=>{for(var e in i||(i={}))Cc.call(i,e)&&Ac(s,e,i[e]);if(dn)for(var e of dn(i))Mu.call(i,e)&&Ac(s,e,i[e]);return s},x=(s,i)=>Zp(s,ef(i));var ku=(s,i)=>{var e={};for(var t in s)Cc.call(s,t)&&i.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&dn)for(var t of dn(s))i.indexOf(t)<0&&Mu.call(s,t)&&(e[t]=s[t]);return e};var pi=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports),fi=(s,i)=>{for(var e in i)Fs(s,e,{get:i[e],enumerable:!0})},sf=(s,i,e,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of tf(i))!Cc.call(s,r)&&r!==e&&Fs(s,r,{get:()=>i[r],enumerable:!(t=Du(i,r))||t.enumerable});return s};var Be=(s,i,e)=>(e=s!=null?Kp(Ou(s)):{},sf(i||!s||!s.__esModule?Fs(e,"default",{value:s,enumerable:!0}):e,s));var N=(s,i,e,t)=>{for(var r=t>1?void 0:t?Du(i,e):i,o=s.length-1,n;o>=0;o--)(n=s[o])&&(r=(t?n(i,e,r):n(r))||r);return t&&r&&Fs(i,e,r),r};var d=(s,i,e)=>Ac(s,typeof i!="symbol"?i+"":i,e);var Fe=(s,i,e)=>rf(Ou(s),e,i);var p=(s,i,e)=>new Promise((t,r)=>{var o=c=>{try{a(e.next(c))}catch(l){r(l)}},n=c=>{try{a(e.throw(c))}catch(l){r(l)}},a=c=>c.done?t(c.value):Promise.resolve(c.value).then(o,n);a((e=e.apply(s,i)).next())});var Qe=pi((aE,Rc)=>{"use strict";var of=Object.prototype.hasOwnProperty,ze="~";function $s(){}Object.create&&($s.prototype=Object.create(null),new $s().__proto__||(ze=!1));function nf(s,i,e){this.fn=s,this.context=i,this.once=e||!1}function Lu(s,i,e,t,r){if(typeof e!="function")throw new TypeError("The listener must be a function");var o=new nf(e,t||s,r),n=ze?ze+i:i;return s._events[n]?s._events[n].fn?s._events[n]=[s._events[n],o]:s._events[n].push(o):(s._events[n]=o,s._eventsCount++),s}function ln(s,i){--s._eventsCount===0?s._events=new $s:delete s._events[i]}function $e(){this._events=new $s,this._eventsCount=0}$e.prototype.eventNames=function(){var i=[],e,t;if(this._eventsCount===0)return i;for(t in e=this._events)of.call(e,t)&&i.push(ze?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i};$e.prototype.listeners=function(i){var e=ze?ze+i:i,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var r=0,o=t.length,n=new Array(o);r<o;r++)n[r]=t[r].fn;return n};$e.prototype.listenerCount=function(i){var e=ze?ze+i:i,t=this._events[e];return t?t.fn?1:t.length:0};$e.prototype.emit=function(i,e,t,r,o,n){var a=ze?ze+i:i;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,h;if(c.fn){switch(c.once&&this.removeListener(i,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,t),!0;case 4:return c.fn.call(c.context,e,t,r),!0;case 5:return c.fn.call(c.context,e,t,r,o),!0;case 6:return c.fn.call(c.context,e,t,r,o,n),!0}for(h=1,u=new Array(l-1);h<l;h++)u[h-1]=arguments[h];c.fn.apply(c.context,u)}else{var f=c.length,_;for(h=0;h<f;h++)switch(c[h].once&&this.removeListener(i,c[h].fn,void 0,!0),l){case 1:c[h].fn.call(c[h].context);break;case 2:c[h].fn.call(c[h].context,e);break;case 3:c[h].fn.call(c[h].context,e,t);break;case 4:c[h].fn.call(c[h].context,e,t,r);break;default:if(!u)for(_=1,u=new Array(l-1);_<l;_++)u[_-1]=arguments[_];c[h].fn.apply(c[h].context,u)}}return!0};$e.prototype.on=function(i,e,t){return Lu(this,i,e,t,!1)};$e.prototype.once=function(i,e,t){return Lu(this,i,e,t,!0)};$e.prototype.removeListener=function(i,e,t,r){var o=ze?ze+i:i;if(!this._events[o])return this;if(!e)return ln(this,o),this;var n=this._events[o];if(n.fn)n.fn===e&&(!r||n.once)&&(!t||n.context===t)&&ln(this,o);else{for(var a=0,c=[],l=n.length;a<l;a++)(n[a].fn!==e||r&&!n[a].once||t&&n[a].context!==t)&&c.push(n[a]);c.length?this._events[o]=c.length===1?c[0]:c:ln(this,o)}return this};$e.prototype.removeAllListeners=function(i){var e;return i?(e=ze?ze+i:i,this._events[e]&&ln(this,e)):(this._events=new $s,this._eventsCount=0),this};$e.prototype.off=$e.prototype.removeListener;$e.prototype.addListener=$e.prototype.on;$e.prefixed=ze;$e.EventEmitter=$e;typeof Rc!="undefined"&&(Rc.exports=$e)});var ea=pi((lS,Eh)=>{"use strict";var Th=Eh.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(s){return s.encoding?"rtpmap:%d %s/%s/%s":s.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(s){return s.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(s){return s.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(s){return"extmap:%d"+(s.direction?"/%s":"%v")+(s["encrypt-uri"]?" %s":"%v")+" %s"+(s.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(s){return s.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(s){var i="candidate:%s %d %s %d %s %d typ %s";return i+=s.raddr!=null?" raddr %s rport %d":"%v%v",i+=s.tcptype!=null?" tcptype %s":"%v",s.generation!=null&&(i+=" generation %d"),i+=s["network-id"]!=null?" network-id %d":"%v",i+=s["network-cost"]!=null?" network-cost %d":"%v",i}},{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(s){var i="ssrc:%d";return s.attribute!=null&&(i+=" %s",s.value!=null&&(i+=":%s")),i}},{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(s){return s.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(s){return s.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(s){return"imageattr:%s %s %s"+(s.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(s){return"simulcast:%s %s"+(s.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(s){return"ts-refclk:%s"+(s.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(s){var i="mediaclk:";return i+=s.id!=null?"id=%s %s":"%v%s",i+=s.mediaClockValue!=null?"=%s":"",i+=s.rateNumerator!=null?" rate=%s":"",i+=s.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Th).forEach(function(s){var i=Th[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Ah=pi(vi=>{"use strict";var fs=function(s){return String(Number(s))===s?Number(s):s},r_=function(s,i,e,t){if(t&&!e)i[t]=fs(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=fs(s[r+1]))},s_=function(s,i,e){var t=s.name&&s.names;s.push&&!i[s.push]?i[s.push]=[]:t&&!i[s.name]&&(i[s.name]={});var r=s.push?{}:t?i[s.name]:i;r_(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},Sh=ea(),o_=RegExp.prototype.test.bind(/^([a-z])=(.*)/);vi.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(o_).forEach(function(r){var o=r[0],n=r.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(Sh[o]||[]).length;a+=1){var c=Sh[o][a];if(c.reg.test(n))return s_(c,t,n)}}),i.media=e,i};var Ih=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=fs(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};vi.parseParams=function(s){return s.split(/;\s?/).reduce(Ih,{})};vi.parseFmtpConfig=vi.parseParams;vi.parsePayloads=function(s){return s.toString().split(" ").map(Number)};vi.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(fs),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};vi.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(Ih,{})})};vi.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=fs(e):(t=fs(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var Rh=pi((hS,Ch)=>{"use strict";var Cd=ea(),n_=/%[sdv%]/g,a_=function(s){var i=1,e=arguments,t=e.length;return s.replace(n_,function(r){if(i>=t)return r;var o=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},So=function(s,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[s+"="+t];if(i.names)for(var o=0;o<i.names.length;o+=1){var n=i.names[o];i.name?r.push(e[i.name][n]):r.push(e[i.names[o]])}else r.push(e[i.name]);return a_.apply(null,r)},c_=["v","o","s","i","u","e","p","c","b","t","r","z","a"],d_=["i","c","b","a"];Ch.exports=function(s,i){i=i||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=i.outerOrder||c_,t=i.innerOrder||d_,r=[];return e.forEach(function(o){Cd[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(So(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(So(o,n,a))})})}),s.media.forEach(function(o){r.push(So("m",Cd.m[0],o)),t.forEach(function(n){Cd[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(So(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(c){r.push(So(n,a,c))})})})}),r.join(`\r
2
2
  `)+`\r
3
- `}});var ap=Oi(Fi=>{"use strict";var Es=sp(),Kg=np(),eE=md();Fi.grammar=eE;Fi.write=Kg;Fi.parse=Es.parse;Fi.parseParams=Es.parseParams;Fi.parseFmtpConfig=Es.parseFmtpConfig;Fi.parsePayloads=Es.parsePayloads;Fi.parseRemoteCandidates=Es.parseRemoteCandidates;Fi.parseImageAttributes=Es.parseImageAttributes;Fi.parseSimulcastStreamList=Es.parseSimulcastStreamList});var Nf=Oi((vf,Mh)=>{"use strict";(function(s){typeof vf=="object"&&typeof Mh!="undefined"?Mh.exports=s():typeof define=="function"&&define.amd?define([],s):(typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:this).JSZip=s()})(function(){return function s(i,e,t){function r(a,d){if(!e[a]){if(!i[a]){var c=typeof Jo=="function"&&Jo;if(!d&&c)return c(a,!0);if(o)return o(a,!0);var h=new Error("Cannot find module '"+a+"'");throw h.code="MODULE_NOT_FOUND",h}var u=e[a]={exports:{}};i[a][0].call(u.exports,function(m){var p=i[a][1][m];return r(p||m)},u,u.exports,s,i,e,t)}return e[a].exports}for(var o=typeof Jo=="function"&&Jo,n=0;n<t.length;n++)r(t[n]);return r}({1:[function(s,i,e){"use strict";var t=s("./utils"),r=s("./support"),o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e.encode=function(n){for(var a,d,c,h,u,m,p,g=[],f=0,T=n.length,C=T,b=t.getTypeOf(n)!=="string";f<n.length;)C=T-f,c=b?(a=n[f++],d=f<T?n[f++]:0,f<T?n[f++]:0):(a=n.charCodeAt(f++),d=f<T?n.charCodeAt(f++):0,f<T?n.charCodeAt(f++):0),h=a>>2,u=(3&a)<<4|d>>4,m=1<C?(15&d)<<2|c>>6:64,p=2<C?63&c:64,g.push(o.charAt(h)+o.charAt(u)+o.charAt(m)+o.charAt(p));return g.join("")},e.decode=function(n){var a,d,c,h,u,m,p=0,g=0,f="data:";if(n.substr(0,f.length)===f)throw new Error("Invalid base64 input, it looks like a data url.");var T,C=3*(n=n.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(n.charAt(n.length-1)===o.charAt(64)&&C--,n.charAt(n.length-2)===o.charAt(64)&&C--,C%1!=0)throw new Error("Invalid base64 input, bad content length.");for(T=r.uint8array?new Uint8Array(0|C):new Array(0|C);p<n.length;)a=o.indexOf(n.charAt(p++))<<2|(h=o.indexOf(n.charAt(p++)))>>4,d=(15&h)<<4|(u=o.indexOf(n.charAt(p++)))>>2,c=(3&u)<<6|(m=o.indexOf(n.charAt(p++))),T[g++]=a,u!==64&&(T[g++]=d),m!==64&&(T[g++]=c);return T}},{"./support":30,"./utils":32}],2:[function(s,i,e){"use strict";var t=s("./external"),r=s("./stream/DataWorker"),o=s("./stream/Crc32Probe"),n=s("./stream/DataLengthProbe");function a(d,c,h,u,m){this.compressedSize=d,this.uncompressedSize=c,this.crc32=h,this.compression=u,this.compressedContent=m}a.prototype={getContentWorker:function(){var d=new r(t.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new n("data_length")),c=this;return d.on("end",function(){if(this.streamInfo.data_length!==c.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),d},getCompressedWorker:function(){return new r(t.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},a.createWorkerFrom=function(d,c,h){return d.pipe(new o).pipe(new n("uncompressedSize")).pipe(c.compressWorker(h)).pipe(new n("compressedSize")).withStreamInfo("compression",c)},i.exports=a},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(s,i,e){"use strict";var t=s("./stream/GenericWorker");e.STORE={magic:"\0\0",compressWorker:function(){return new t("STORE compression")},uncompressWorker:function(){return new t("STORE decompression")}},e.DEFLATE=s("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(s,i,e){"use strict";var t=s("./utils"),r=function(){for(var o,n=[],a=0;a<256;a++){o=a;for(var d=0;d<8;d++)o=1&o?3988292384^o>>>1:o>>>1;n[a]=o}return n}();i.exports=function(o,n){return o!==void 0&&o.length?t.getTypeOf(o)!=="string"?function(a,d,c,h){var u=r,m=h+c;a^=-1;for(var p=h;p<m;p++)a=a>>>8^u[255&(a^d[p])];return-1^a}(0|n,o,o.length,0):function(a,d,c,h){var u=r,m=h+c;a^=-1;for(var p=h;p<m;p++)a=a>>>8^u[255&(a^d.charCodeAt(p))];return-1^a}(0|n,o,o.length,0):0}},{"./utils":32}],5:[function(s,i,e){"use strict";e.base64=!1,e.binary=!1,e.dir=!1,e.createFolders=!0,e.date=null,e.compression=null,e.compressionOptions=null,e.comment=null,e.unixPermissions=null,e.dosPermissions=null},{}],6:[function(s,i,e){"use strict";var t=null;t=typeof Promise!="undefined"?Promise:s("lie"),i.exports={Promise:t}},{lie:37}],7:[function(s,i,e){"use strict";var t=typeof Uint8Array!="undefined"&&typeof Uint16Array!="undefined"&&typeof Uint32Array!="undefined",r=s("pako"),o=s("./utils"),n=s("./stream/GenericWorker"),a=t?"uint8array":"array";function d(c,h){n.call(this,"FlateWorker/"+c),this._pako=null,this._pakoAction=c,this._pakoOptions=h,this.meta={}}e.magic="\b\0",o.inherits(d,n),d.prototype.processChunk=function(c){this.meta=c.meta,this._pako===null&&this._createPako(),this._pako.push(o.transformTo(a,c.data),!1)},d.prototype.flush=function(){n.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},d.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this._pako=null},d.prototype._createPako=function(){this._pako=new r[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var c=this;this._pako.onData=function(h){c.push({data:h,meta:c.meta})}},e.compressWorker=function(c){return new d("Deflate",c)},e.uncompressWorker=function(){return new d("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(s,i,e){"use strict";function t(u,m){var p,g="";for(p=0;p<m;p++)g+=String.fromCharCode(255&u),u>>>=8;return g}function r(u,m,p,g,f,T){var C,b,v=u.file,$=u.compression,N=T!==a.utf8encode,X=o.transformTo("string",T(v.name)),w=o.transformTo("string",a.utf8encode(v.name)),W=v.comment,ce=o.transformTo("string",T(W)),y=o.transformTo("string",a.utf8encode(W)),G=w.length!==v.name.length,E=y.length!==W.length,J="",_e="",k="",ye=v.dir,te=v.date,Ce={crc32:0,compressedSize:0,uncompressedSize:0};m&&!p||(Ce.crc32=u.crc32,Ce.compressedSize=u.compressedSize,Ce.uncompressedSize=u.uncompressedSize);var B=0;m&&(B|=8),N||!G&&!E||(B|=2048);var U=0,Ie=0;ye&&(U|=16),f==="UNIX"?(Ie=798,U|=function(se,st){var yt=se;return se||(yt=st?16893:33204),(65535&yt)<<16}(v.unixPermissions,ye)):(Ie=20,U|=function(se){return 63&(se||0)}(v.dosPermissions)),C=te.getUTCHours(),C<<=6,C|=te.getUTCMinutes(),C<<=5,C|=te.getUTCSeconds()/2,b=te.getUTCFullYear()-1980,b<<=4,b|=te.getUTCMonth()+1,b<<=5,b|=te.getUTCDate(),G&&(_e=t(1,1)+t(d(X),4)+w,J+="up"+t(_e.length,2)+_e),E&&(k=t(1,1)+t(d(ce),4)+y,J+="uc"+t(k.length,2)+k);var ae="";return ae+=`
4
- \0`,ae+=t(B,2),ae+=$.magic,ae+=t(C,2),ae+=t(b,2),ae+=t(Ce.crc32,4),ae+=t(Ce.compressedSize,4),ae+=t(Ce.uncompressedSize,4),ae+=t(X.length,2),ae+=t(J.length,2),{fileRecord:c.LOCAL_FILE_HEADER+ae+X+J,dirRecord:c.CENTRAL_FILE_HEADER+t(Ie,2)+ae+t(ce.length,2)+"\0\0\0\0"+t(U,4)+t(g,4)+X+J+ce}}var o=s("../utils"),n=s("../stream/GenericWorker"),a=s("../utf8"),d=s("../crc32"),c=s("../signature");function h(u,m,p,g){n.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=m,this.zipPlatform=p,this.encodeFileName=g,this.streamFiles=u,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}o.inherits(h,n),h.prototype.push=function(u){var m=u.meta.percent||0,p=this.entriesCount,g=this._sources.length;this.accumulate?this.contentBuffer.push(u):(this.bytesWritten+=u.data.length,n.prototype.push.call(this,{data:u.data,meta:{currentFile:this.currentFile,percent:p?(m+100*(p-g-1))/p:100}}))},h.prototype.openedSource=function(u){this.currentSourceOffset=this.bytesWritten,this.currentFile=u.file.name;var m=this.streamFiles&&!u.file.dir;if(m){var p=r(u,m,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:p.fileRecord,meta:{percent:0}})}else this.accumulate=!0},h.prototype.closedSource=function(u){this.accumulate=!1;var m=this.streamFiles&&!u.file.dir,p=r(u,m,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(p.dirRecord),m)this.push({data:function(g){return c.DATA_DESCRIPTOR+t(g.crc32,4)+t(g.compressedSize,4)+t(g.uncompressedSize,4)}(u),meta:{percent:100}});else for(this.push({data:p.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},h.prototype.flush=function(){for(var u=this.bytesWritten,m=0;m<this.dirRecords.length;m++)this.push({data:this.dirRecords[m],meta:{percent:100}});var p=this.bytesWritten-u,g=function(f,T,C,b,v){var $=o.transformTo("string",v(b));return c.CENTRAL_DIRECTORY_END+"\0\0\0\0"+t(f,2)+t(f,2)+t(T,4)+t(C,4)+t($.length,2)+$}(this.dirRecords.length,p,u,this.zipComment,this.encodeFileName);this.push({data:g,meta:{percent:100}})},h.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},h.prototype.registerPrevious=function(u){this._sources.push(u);var m=this;return u.on("data",function(p){m.processChunk(p)}),u.on("end",function(){m.closedSource(m.previous.streamInfo),m._sources.length?m.prepareNextSource():m.end()}),u.on("error",function(p){m.error(p)}),this},h.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},h.prototype.error=function(u){var m=this._sources;if(!n.prototype.error.call(this,u))return!1;for(var p=0;p<m.length;p++)try{m[p].error(u)}catch(g){}return!0},h.prototype.lock=function(){n.prototype.lock.call(this);for(var u=this._sources,m=0;m<u.length;m++)u[m].lock()},i.exports=h},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(s,i,e){"use strict";var t=s("../compressions"),r=s("./ZipFileWorker");e.generateWorker=function(o,n,a){var d=new r(n.streamFiles,a,n.platform,n.encodeFileName),c=0;try{o.forEach(function(h,u){c++;var m=function(T,C){var b=T||C,v=t[b];if(!v)throw new Error(b+" is not a valid compression method !");return v}(u.options.compression,n.compression),p=u.options.compressionOptions||n.compressionOptions||{},g=u.dir,f=u.date;u._compressWorker(m,p).withStreamInfo("file",{name:h,dir:g,date:f,comment:u.comment||"",unixPermissions:u.unixPermissions,dosPermissions:u.dosPermissions}).pipe(d)}),d.entriesCount=c}catch(h){d.error(h)}return d}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(s,i,e){"use strict";function t(){if(!(this instanceof t))return new t;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var r=new t;for(var o in this)typeof this[o]!="function"&&(r[o]=this[o]);return r}}(t.prototype=s("./object")).loadAsync=s("./load"),t.support=s("./support"),t.defaults=s("./defaults"),t.version="3.10.1",t.loadAsync=function(r,o){return new t().loadAsync(r,o)},t.external=s("./external"),i.exports=t},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(s,i,e){"use strict";var t=s("./utils"),r=s("./external"),o=s("./utf8"),n=s("./zipEntries"),a=s("./stream/Crc32Probe"),d=s("./nodejsUtils");function c(h){return new r.Promise(function(u,m){var p=h.decompressed.getContentWorker().pipe(new a);p.on("error",function(g){m(g)}).on("end",function(){p.streamInfo.crc32!==h.decompressed.crc32?m(new Error("Corrupted zip : CRC32 mismatch")):u()}).resume()})}i.exports=function(h,u){var m=this;return u=t.extend(u||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),d.isNode&&d.isStream(h)?r.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):t.prepareContent("the loaded zip file",h,!0,u.optimizedBinaryString,u.base64).then(function(p){var g=new n(u);return g.load(p),g}).then(function(p){var g=[r.Promise.resolve(p)],f=p.files;if(u.checkCRC32)for(var T=0;T<f.length;T++)g.push(c(f[T]));return r.Promise.all(g)}).then(function(p){for(var g=p.shift(),f=g.files,T=0;T<f.length;T++){var C=f[T],b=C.fileNameStr,v=t.resolve(C.fileNameStr);m.file(v,C.decompressed,{binary:!0,optimizedBinaryString:!0,date:C.date,dir:C.dir,comment:C.fileCommentStr.length?C.fileCommentStr:null,unixPermissions:C.unixPermissions,dosPermissions:C.dosPermissions,createFolders:u.createFolders}),C.dir||(m.file(v).unsafeOriginalName=b)}return g.zipComment.length&&(m.comment=g.zipComment),m})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(s,i,e){"use strict";var t=s("../utils"),r=s("../stream/GenericWorker");function o(n,a){r.call(this,"Nodejs stream input adapter for "+n),this._upstreamEnded=!1,this._bindStream(a)}t.inherits(o,r),o.prototype._bindStream=function(n){var a=this;(this._stream=n).pause(),n.on("data",function(d){a.push({data:d,meta:{percent:0}})}).on("error",function(d){a.isPaused?this.generatedError=d:a.error(d)}).on("end",function(){a.isPaused?a._upstreamEnded=!0:a.end()})},o.prototype.pause=function(){return!!r.prototype.pause.call(this)&&(this._stream.pause(),!0)},o.prototype.resume=function(){return!!r.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},i.exports=o},{"../stream/GenericWorker":28,"../utils":32}],13:[function(s,i,e){"use strict";var t=s("readable-stream").Readable;function r(o,n,a){t.call(this,n),this._helper=o;var d=this;o.on("data",function(c,h){d.push(c)||d._helper.pause(),a&&a(h)}).on("error",function(c){d.emit("error",c)}).on("end",function(){d.push(null)})}s("../utils").inherits(r,t),r.prototype._read=function(){this._helper.resume()},i.exports=r},{"../utils":32,"readable-stream":16}],14:[function(s,i,e){"use strict";i.exports={isNode:typeof Buffer!="undefined",newBufferFrom:function(t,r){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(t,r);if(typeof t=="number")throw new Error('The "data" argument must not be a number');return new Buffer(t,r)},allocBuffer:function(t){if(Buffer.alloc)return Buffer.alloc(t);var r=new Buffer(t);return r.fill(0),r},isBuffer:function(t){return Buffer.isBuffer(t)},isStream:function(t){return t&&typeof t.on=="function"&&typeof t.pause=="function"&&typeof t.resume=="function"}}},{}],15:[function(s,i,e){"use strict";function t(v,$,N){var X,w=o.getTypeOf($),W=o.extend(N||{},d);W.date=W.date||new Date,W.compression!==null&&(W.compression=W.compression.toUpperCase()),typeof W.unixPermissions=="string"&&(W.unixPermissions=parseInt(W.unixPermissions,8)),W.unixPermissions&&16384&W.unixPermissions&&(W.dir=!0),W.dosPermissions&&16&W.dosPermissions&&(W.dir=!0),W.dir&&(v=f(v)),W.createFolders&&(X=g(v))&&T.call(this,X,!0);var ce=w==="string"&&W.binary===!1&&W.base64===!1;N&&N.binary!==void 0||(W.binary=!ce),($ instanceof c&&$.uncompressedSize===0||W.dir||!$||$.length===0)&&(W.base64=!1,W.binary=!0,$="",W.compression="STORE",w="string");var y=null;y=$ instanceof c||$ instanceof n?$:m.isNode&&m.isStream($)?new p(v,$):o.prepareContent(v,$,W.binary,W.optimizedBinaryString,W.base64);var G=new h(v,y,W);this.files[v]=G}var r=s("./utf8"),o=s("./utils"),n=s("./stream/GenericWorker"),a=s("./stream/StreamHelper"),d=s("./defaults"),c=s("./compressedObject"),h=s("./zipObject"),u=s("./generate"),m=s("./nodejsUtils"),p=s("./nodejs/NodejsStreamInputAdapter"),g=function(v){v.slice(-1)==="/"&&(v=v.substring(0,v.length-1));var $=v.lastIndexOf("/");return 0<$?v.substring(0,$):""},f=function(v){return v.slice(-1)!=="/"&&(v+="/"),v},T=function(v,$){return $=$!==void 0?$:d.createFolders,v=f(v),this.files[v]||t.call(this,v,null,{dir:!0,createFolders:$}),this.files[v]};function C(v){return Object.prototype.toString.call(v)==="[object RegExp]"}var b={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(v){var $,N,X;for($ in this.files)X=this.files[$],(N=$.slice(this.root.length,$.length))&&$.slice(0,this.root.length)===this.root&&v(N,X)},filter:function(v){var $=[];return this.forEach(function(N,X){v(N,X)&&$.push(X)}),$},file:function(v,$,N){if(arguments.length!==1)return v=this.root+v,t.call(this,v,$,N),this;if(C(v)){var X=v;return this.filter(function(W,ce){return!ce.dir&&X.test(W)})}var w=this.files[this.root+v];return w&&!w.dir?w:null},folder:function(v){if(!v)return this;if(C(v))return this.filter(function(w,W){return W.dir&&v.test(w)});var $=this.root+v,N=T.call(this,$),X=this.clone();return X.root=N.name,X},remove:function(v){v=this.root+v;var $=this.files[v];if($||(v.slice(-1)!=="/"&&(v+="/"),$=this.files[v]),$&&!$.dir)delete this.files[v];else for(var N=this.filter(function(w,W){return W.name.slice(0,v.length)===v}),X=0;X<N.length;X++)delete this.files[N[X].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(v){var $,N={};try{if((N=o.extend(v||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:r.utf8encode})).type=N.type.toLowerCase(),N.compression=N.compression.toUpperCase(),N.type==="binarystring"&&(N.type="string"),!N.type)throw new Error("No output type specified.");o.checkSupport(N.type),N.platform!=="darwin"&&N.platform!=="freebsd"&&N.platform!=="linux"&&N.platform!=="sunos"||(N.platform="UNIX"),N.platform==="win32"&&(N.platform="DOS");var X=N.comment||this.comment||"";$=u.generateWorker(this,N,X)}catch(w){($=new n("error")).error(w)}return new a($,N.type||"string",N.mimeType)},generateAsync:function(v,$){return this.generateInternalStream(v).accumulate($)},generateNodeStream:function(v,$){return(v=v||{}).type||(v.type="nodebuffer"),this.generateInternalStream(v).toNodejsStream($)}};i.exports=b},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(s,i,e){"use strict";i.exports=s("stream")},{stream:void 0}],17:[function(s,i,e){"use strict";var t=s("./DataReader");function r(o){t.call(this,o);for(var n=0;n<this.data.length;n++)o[n]=255&o[n]}s("../utils").inherits(r,t),r.prototype.byteAt=function(o){return this.data[this.zero+o]},r.prototype.lastIndexOfSignature=function(o){for(var n=o.charCodeAt(0),a=o.charCodeAt(1),d=o.charCodeAt(2),c=o.charCodeAt(3),h=this.length-4;0<=h;--h)if(this.data[h]===n&&this.data[h+1]===a&&this.data[h+2]===d&&this.data[h+3]===c)return h-this.zero;return-1},r.prototype.readAndCheckSignature=function(o){var n=o.charCodeAt(0),a=o.charCodeAt(1),d=o.charCodeAt(2),c=o.charCodeAt(3),h=this.readData(4);return n===h[0]&&a===h[1]&&d===h[2]&&c===h[3]},r.prototype.readData=function(o){if(this.checkOffset(o),o===0)return[];var n=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,n},i.exports=r},{"../utils":32,"./DataReader":18}],18:[function(s,i,e){"use strict";var t=s("../utils");function r(o){this.data=o,this.length=o.length,this.index=0,this.zero=0}r.prototype={checkOffset:function(o){this.checkIndex(this.index+o)},checkIndex:function(o){if(this.length<this.zero+o||o<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+o+"). Corrupted zip ?")},setIndex:function(o){this.checkIndex(o),this.index=o},skip:function(o){this.setIndex(this.index+o)},byteAt:function(){},readInt:function(o){var n,a=0;for(this.checkOffset(o),n=this.index+o-1;n>=this.index;n--)a=(a<<8)+this.byteAt(n);return this.index+=o,a},readString:function(o){return t.transformTo("string",this.readData(o))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var o=this.readInt(4);return new Date(Date.UTC(1980+(o>>25&127),(o>>21&15)-1,o>>16&31,o>>11&31,o>>5&63,(31&o)<<1))}},i.exports=r},{"../utils":32}],19:[function(s,i,e){"use strict";var t=s("./Uint8ArrayReader");function r(o){t.call(this,o)}s("../utils").inherits(r,t),r.prototype.readData=function(o){this.checkOffset(o);var n=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,n},i.exports=r},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(s,i,e){"use strict";var t=s("./DataReader");function r(o){t.call(this,o)}s("../utils").inherits(r,t),r.prototype.byteAt=function(o){return this.data.charCodeAt(this.zero+o)},r.prototype.lastIndexOfSignature=function(o){return this.data.lastIndexOf(o)-this.zero},r.prototype.readAndCheckSignature=function(o){return o===this.readData(4)},r.prototype.readData=function(o){this.checkOffset(o);var n=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,n},i.exports=r},{"../utils":32,"./DataReader":18}],21:[function(s,i,e){"use strict";var t=s("./ArrayReader");function r(o){t.call(this,o)}s("../utils").inherits(r,t),r.prototype.readData=function(o){if(this.checkOffset(o),o===0)return new Uint8Array(0);var n=this.data.subarray(this.zero+this.index,this.zero+this.index+o);return this.index+=o,n},i.exports=r},{"../utils":32,"./ArrayReader":17}],22:[function(s,i,e){"use strict";var t=s("../utils"),r=s("../support"),o=s("./ArrayReader"),n=s("./StringReader"),a=s("./NodeBufferReader"),d=s("./Uint8ArrayReader");i.exports=function(c){var h=t.getTypeOf(c);return t.checkSupport(h),h!=="string"||r.uint8array?h==="nodebuffer"?new a(c):r.uint8array?new d(t.transformTo("uint8array",c)):new o(t.transformTo("array",c)):new n(c)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(s,i,e){"use strict";e.LOCAL_FILE_HEADER="PK",e.CENTRAL_FILE_HEADER="PK",e.CENTRAL_DIRECTORY_END="PK",e.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",e.ZIP64_CENTRAL_DIRECTORY_END="PK",e.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(s,i,e){"use strict";var t=s("./GenericWorker"),r=s("../utils");function o(n){t.call(this,"ConvertWorker to "+n),this.destType=n}r.inherits(o,t),o.prototype.processChunk=function(n){this.push({data:r.transformTo(this.destType,n.data),meta:n.meta})},i.exports=o},{"../utils":32,"./GenericWorker":28}],25:[function(s,i,e){"use strict";var t=s("./GenericWorker"),r=s("../crc32");function o(){t.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}s("../utils").inherits(o,t),o.prototype.processChunk=function(n){this.streamInfo.crc32=r(n.data,this.streamInfo.crc32||0),this.push(n)},i.exports=o},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(s,i,e){"use strict";var t=s("../utils"),r=s("./GenericWorker");function o(n){r.call(this,"DataLengthProbe for "+n),this.propName=n,this.withStreamInfo(n,0)}t.inherits(o,r),o.prototype.processChunk=function(n){if(n){var a=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=a+n.data.length}r.prototype.processChunk.call(this,n)},i.exports=o},{"../utils":32,"./GenericWorker":28}],27:[function(s,i,e){"use strict";var t=s("../utils"),r=s("./GenericWorker");function o(n){r.call(this,"DataWorker");var a=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,n.then(function(d){a.dataIsReady=!0,a.data=d,a.max=d&&d.length||0,a.type=t.getTypeOf(d),a.isPaused||a._tickAndRepeat()},function(d){a.error(d)})}t.inherits(o,r),o.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!r.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,t.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(t.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var n=null,a=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":n=this.data.substring(this.index,a);break;case"uint8array":n=this.data.subarray(this.index,a);break;case"array":case"nodebuffer":n=this.data.slice(this.index,a)}return this.index=a,this.push({data:n,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=o},{"../utils":32,"./GenericWorker":28}],28:[function(s,i,e){"use strict";function t(r){this.name=r||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}t.prototype={push:function(r){this.emit("data",r)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(r){this.emit("error",r)}return!0},error:function(r){return!this.isFinished&&(this.isPaused?this.generatedError=r:(this.isFinished=!0,this.emit("error",r),this.previous&&this.previous.error(r),this.cleanUp()),!0)},on:function(r,o){return this._listeners[r].push(o),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(r,o){if(this._listeners[r])for(var n=0;n<this._listeners[r].length;n++)this._listeners[r][n].call(this,o)},pipe:function(r){return r.registerPrevious(this)},registerPrevious:function(r){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=r.streamInfo,this.mergeStreamInfo(),this.previous=r;var o=this;return r.on("data",function(n){o.processChunk(n)}),r.on("end",function(){o.end()}),r.on("error",function(n){o.error(n)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var r=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),r=!0),this.previous&&this.previous.resume(),!r},flush:function(){},processChunk:function(r){this.push(r)},withStreamInfo:function(r,o){return this.extraStreamInfo[r]=o,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var r in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,r)&&(this.streamInfo[r]=this.extraStreamInfo[r])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var r="Worker "+this.name;return this.previous?this.previous+" -> "+r:r}},i.exports=t},{}],29:[function(s,i,e){"use strict";var t=s("../utils"),r=s("./ConvertWorker"),o=s("./GenericWorker"),n=s("../base64"),a=s("../support"),d=s("../external"),c=null;if(a.nodestream)try{c=s("../nodejs/NodejsStreamOutputAdapter")}catch(m){}function h(m,p){return new d.Promise(function(g,f){var T=[],C=m._internalType,b=m._outputType,v=m._mimeType;m.on("data",function($,N){T.push($),p&&p(N)}).on("error",function($){T=[],f($)}).on("end",function(){try{var $=function(N,X,w){switch(N){case"blob":return t.newBlob(t.transformTo("arraybuffer",X),w);case"base64":return n.encode(X);default:return t.transformTo(N,X)}}(b,function(N,X){var w,W=0,ce=null,y=0;for(w=0;w<X.length;w++)y+=X[w].length;switch(N){case"string":return X.join("");case"array":return Array.prototype.concat.apply([],X);case"uint8array":for(ce=new Uint8Array(y),w=0;w<X.length;w++)ce.set(X[w],W),W+=X[w].length;return ce;case"nodebuffer":return Buffer.concat(X);default:throw new Error("concat : unsupported type '"+N+"'")}}(C,T),v);g($)}catch(N){f(N)}T=[]}).resume()})}function u(m,p,g){var f=p;switch(p){case"blob":case"arraybuffer":f="uint8array";break;case"base64":f="string"}try{this._internalType=f,this._outputType=p,this._mimeType=g,t.checkSupport(f),this._worker=m.pipe(new r(f)),m.lock()}catch(T){this._worker=new o("error"),this._worker.error(T)}}u.prototype={accumulate:function(m){return h(this,m)},on:function(m,p){var g=this;return m==="data"?this._worker.on(m,function(f){p.call(g,f.data,f.meta)}):this._worker.on(m,function(){t.delay(p,arguments,g)}),this},resume:function(){return t.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(m){if(t.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new c(this,{objectMode:this._outputType!=="nodebuffer"},m)}},i.exports=u},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(s,i,e){"use strict";if(e.base64=!0,e.array=!0,e.string=!0,e.arraybuffer=typeof ArrayBuffer!="undefined"&&typeof Uint8Array!="undefined",e.nodebuffer=typeof Buffer!="undefined",e.uint8array=typeof Uint8Array!="undefined",typeof ArrayBuffer=="undefined")e.blob=!1;else{var t=new ArrayBuffer(0);try{e.blob=new Blob([t],{type:"application/zip"}).size===0}catch(o){try{var r=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);r.append(t),e.blob=r.getBlob("application/zip").size===0}catch(n){e.blob=!1}}}try{e.nodestream=!!s("readable-stream").Readable}catch(o){e.nodestream=!1}},{"readable-stream":16}],31:[function(s,i,e){"use strict";for(var t=s("./utils"),r=s("./support"),o=s("./nodejsUtils"),n=s("./stream/GenericWorker"),a=new Array(256),d=0;d<256;d++)a[d]=252<=d?6:248<=d?5:240<=d?4:224<=d?3:192<=d?2:1;a[254]=a[254]=1;function c(){n.call(this,"utf-8 decode"),this.leftOver=null}function h(){n.call(this,"utf-8 encode")}e.utf8encode=function(u){return r.nodebuffer?o.newBufferFrom(u,"utf-8"):function(m){var p,g,f,T,C,b=m.length,v=0;for(T=0;T<b;T++)(64512&(g=m.charCodeAt(T)))==55296&&T+1<b&&(64512&(f=m.charCodeAt(T+1)))==56320&&(g=65536+(g-55296<<10)+(f-56320),T++),v+=g<128?1:g<2048?2:g<65536?3:4;for(p=r.uint8array?new Uint8Array(v):new Array(v),T=C=0;C<v;T++)(64512&(g=m.charCodeAt(T)))==55296&&T+1<b&&(64512&(f=m.charCodeAt(T+1)))==56320&&(g=65536+(g-55296<<10)+(f-56320),T++),g<128?p[C++]=g:(g<2048?p[C++]=192|g>>>6:(g<65536?p[C++]=224|g>>>12:(p[C++]=240|g>>>18,p[C++]=128|g>>>12&63),p[C++]=128|g>>>6&63),p[C++]=128|63&g);return p}(u)},e.utf8decode=function(u){return r.nodebuffer?t.transformTo("nodebuffer",u).toString("utf-8"):function(m){var p,g,f,T,C=m.length,b=new Array(2*C);for(p=g=0;p<C;)if((f=m[p++])<128)b[g++]=f;else if(4<(T=a[f]))b[g++]=65533,p+=T-1;else{for(f&=T===2?31:T===3?15:7;1<T&&p<C;)f=f<<6|63&m[p++],T--;1<T?b[g++]=65533:f<65536?b[g++]=f:(f-=65536,b[g++]=55296|f>>10&1023,b[g++]=56320|1023&f)}return b.length!==g&&(b.subarray?b=b.subarray(0,g):b.length=g),t.applyFromCharCode(b)}(u=t.transformTo(r.uint8array?"uint8array":"array",u))},t.inherits(c,n),c.prototype.processChunk=function(u){var m=t.transformTo(r.uint8array?"uint8array":"array",u.data);if(this.leftOver&&this.leftOver.length){if(r.uint8array){var p=m;(m=new Uint8Array(p.length+this.leftOver.length)).set(this.leftOver,0),m.set(p,this.leftOver.length)}else m=this.leftOver.concat(m);this.leftOver=null}var g=function(T,C){var b;for((C=C||T.length)>T.length&&(C=T.length),b=C-1;0<=b&&(192&T[b])==128;)b--;return b<0||b===0?C:b+a[T[b]]>C?b:C}(m),f=m;g!==m.length&&(r.uint8array?(f=m.subarray(0,g),this.leftOver=m.subarray(g,m.length)):(f=m.slice(0,g),this.leftOver=m.slice(g,m.length))),this.push({data:e.utf8decode(f),meta:u.meta})},c.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:e.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},e.Utf8DecodeWorker=c,t.inherits(h,n),h.prototype.processChunk=function(u){this.push({data:e.utf8encode(u.data),meta:u.meta})},e.Utf8EncodeWorker=h},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(s,i,e){"use strict";var t=s("./support"),r=s("./base64"),o=s("./nodejsUtils"),n=s("./external");function a(p){return p}function d(p,g){for(var f=0;f<p.length;++f)g[f]=255&p.charCodeAt(f);return g}s("setimmediate"),e.newBlob=function(p,g){e.checkSupport("blob");try{return new Blob([p],{type:g})}catch(T){try{var f=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return f.append(p),f.getBlob(g)}catch(C){throw new Error("Bug : can't construct the Blob.")}}};var c={stringifyByChunk:function(p,g,f){var T=[],C=0,b=p.length;if(b<=f)return String.fromCharCode.apply(null,p);for(;C<b;)g==="array"||g==="nodebuffer"?T.push(String.fromCharCode.apply(null,p.slice(C,Math.min(C+f,b)))):T.push(String.fromCharCode.apply(null,p.subarray(C,Math.min(C+f,b)))),C+=f;return T.join("")},stringifyByChar:function(p){for(var g="",f=0;f<p.length;f++)g+=String.fromCharCode(p[f]);return g},applyCanBeUsed:{uint8array:function(){try{return t.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch(p){return!1}}(),nodebuffer:function(){try{return t.nodebuffer&&String.fromCharCode.apply(null,o.allocBuffer(1)).length===1}catch(p){return!1}}()}};function h(p){var g=65536,f=e.getTypeOf(p),T=!0;if(f==="uint8array"?T=c.applyCanBeUsed.uint8array:f==="nodebuffer"&&(T=c.applyCanBeUsed.nodebuffer),T)for(;1<g;)try{return c.stringifyByChunk(p,f,g)}catch(C){g=Math.floor(g/2)}return c.stringifyByChar(p)}function u(p,g){for(var f=0;f<p.length;f++)g[f]=p[f];return g}e.applyFromCharCode=h;var m={};m.string={string:a,array:function(p){return d(p,new Array(p.length))},arraybuffer:function(p){return m.string.uint8array(p).buffer},uint8array:function(p){return d(p,new Uint8Array(p.length))},nodebuffer:function(p){return d(p,o.allocBuffer(p.length))}},m.array={string:h,array:a,arraybuffer:function(p){return new Uint8Array(p).buffer},uint8array:function(p){return new Uint8Array(p)},nodebuffer:function(p){return o.newBufferFrom(p)}},m.arraybuffer={string:function(p){return h(new Uint8Array(p))},array:function(p){return u(new Uint8Array(p),new Array(p.byteLength))},arraybuffer:a,uint8array:function(p){return new Uint8Array(p)},nodebuffer:function(p){return o.newBufferFrom(new Uint8Array(p))}},m.uint8array={string:h,array:function(p){return u(p,new Array(p.length))},arraybuffer:function(p){return p.buffer},uint8array:a,nodebuffer:function(p){return o.newBufferFrom(p)}},m.nodebuffer={string:h,array:function(p){return u(p,new Array(p.length))},arraybuffer:function(p){return m.nodebuffer.uint8array(p).buffer},uint8array:function(p){return u(p,new Uint8Array(p.length))},nodebuffer:a},e.transformTo=function(p,g){if(g=g||"",!p)return g;e.checkSupport(p);var f=e.getTypeOf(g);return m[f][p](g)},e.resolve=function(p){for(var g=p.split("/"),f=[],T=0;T<g.length;T++){var C=g[T];C==="."||C===""&&T!==0&&T!==g.length-1||(C===".."?f.pop():f.push(C))}return f.join("/")},e.getTypeOf=function(p){return typeof p=="string"?"string":Object.prototype.toString.call(p)==="[object Array]"?"array":t.nodebuffer&&o.isBuffer(p)?"nodebuffer":t.uint8array&&p instanceof Uint8Array?"uint8array":t.arraybuffer&&p instanceof ArrayBuffer?"arraybuffer":void 0},e.checkSupport=function(p){if(!t[p.toLowerCase()])throw new Error(p+" is not supported by this platform")},e.MAX_VALUE_16BITS=65535,e.MAX_VALUE_32BITS=-1,e.pretty=function(p){var g,f,T="";for(f=0;f<(p||"").length;f++)T+="\\x"+((g=p.charCodeAt(f))<16?"0":"")+g.toString(16).toUpperCase();return T},e.delay=function(p,g,f){setImmediate(function(){p.apply(f||null,g||[])})},e.inherits=function(p,g){function f(){}f.prototype=g.prototype,p.prototype=new f},e.extend=function(){var p,g,f={};for(p=0;p<arguments.length;p++)for(g in arguments[p])Object.prototype.hasOwnProperty.call(arguments[p],g)&&f[g]===void 0&&(f[g]=arguments[p][g]);return f},e.prepareContent=function(p,g,f,T,C){return n.Promise.resolve(g).then(function(b){return t.blob&&(b instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(b))!==-1)&&typeof FileReader!="undefined"?new n.Promise(function(v,$){var N=new FileReader;N.onload=function(X){v(X.target.result)},N.onerror=function(X){$(X.target.error)},N.readAsArrayBuffer(b)}):b}).then(function(b){var v=e.getTypeOf(b);return v?(v==="arraybuffer"?b=e.transformTo("uint8array",b):v==="string"&&(C?b=r.decode(b):f&&T!==!0&&(b=function($){return d($,t.uint8array?new Uint8Array($.length):new Array($.length))}(b))),b):n.Promise.reject(new Error("Can't read the data of '"+p+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(s,i,e){"use strict";var t=s("./reader/readerFor"),r=s("./utils"),o=s("./signature"),n=s("./zipEntry"),a=s("./support");function d(c){this.files=[],this.loadOptions=c}d.prototype={checkSignature:function(c){if(!this.reader.readAndCheckSignature(c)){this.reader.index-=4;var h=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+r.pretty(h)+", expected "+r.pretty(c)+")")}},isSignature:function(c,h){var u=this.reader.index;this.reader.setIndex(c);var m=this.reader.readString(4)===h;return this.reader.setIndex(u),m},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var c=this.reader.readData(this.zipCommentLength),h=a.uint8array?"uint8array":"array",u=r.transformTo(h,c);this.zipComment=this.loadOptions.decodeFileName(u)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var c,h,u,m=this.zip64EndOfCentralSize-44;0<m;)c=this.reader.readInt(2),h=this.reader.readInt(4),u=this.reader.readData(h),this.zip64ExtensibleData[c]={id:c,length:h,value:u}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var c,h;for(c=0;c<this.files.length;c++)h=this.files[c],this.reader.setIndex(h.localHeaderOffset),this.checkSignature(o.LOCAL_FILE_HEADER),h.readLocalPart(this.reader),h.handleUTF8(),h.processAttributes()},readCentralDir:function(){var c;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(o.CENTRAL_FILE_HEADER);)(c=new n({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(c);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var c=this.reader.lastIndexOfSignature(o.CENTRAL_DIRECTORY_END);if(c<0)throw this.isSignature(0,o.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can't find end of central directory"):new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(c);var h=c;if(this.checkSignature(o.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===r.MAX_VALUE_16BITS||this.diskWithCentralDirStart===r.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===r.MAX_VALUE_16BITS||this.centralDirRecords===r.MAX_VALUE_16BITS||this.centralDirSize===r.MAX_VALUE_32BITS||this.centralDirOffset===r.MAX_VALUE_32BITS){if(this.zip64=!0,(c=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(c),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,o.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var u=this.centralDirOffset+this.centralDirSize;this.zip64&&(u+=20,u+=12+this.zip64EndOfCentralSize);var m=h-u;if(0<m)this.isSignature(h,o.CENTRAL_FILE_HEADER)||(this.reader.zero=m);else if(m<0)throw new Error("Corrupted zip: missing "+Math.abs(m)+" bytes.")},prepareReader:function(c){this.reader=t(c)},load:function(c){this.prepareReader(c),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},i.exports=d},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(s,i,e){"use strict";var t=s("./reader/readerFor"),r=s("./utils"),o=s("./compressedObject"),n=s("./crc32"),a=s("./utf8"),d=s("./compressions"),c=s("./support");function h(u,m){this.options=u,this.loadOptions=m}h.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(u){var m,p;if(u.skip(22),this.fileNameLength=u.readInt(2),p=u.readInt(2),this.fileName=u.readData(this.fileNameLength),u.skip(p),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((m=function(g){for(var f in d)if(Object.prototype.hasOwnProperty.call(d,f)&&d[f].magic===g)return d[f];return null}(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+r.pretty(this.compressionMethod)+" unknown (inner file : "+r.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,m,u.readData(this.compressedSize))},readCentralPart:function(u){this.versionMadeBy=u.readInt(2),u.skip(2),this.bitFlag=u.readInt(2),this.compressionMethod=u.readString(2),this.date=u.readDate(),this.crc32=u.readInt(4),this.compressedSize=u.readInt(4),this.uncompressedSize=u.readInt(4);var m=u.readInt(2);if(this.extraFieldsLength=u.readInt(2),this.fileCommentLength=u.readInt(2),this.diskNumberStart=u.readInt(2),this.internalFileAttributes=u.readInt(2),this.externalFileAttributes=u.readInt(4),this.localHeaderOffset=u.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");u.skip(m),this.readExtraFields(u),this.parseZIP64ExtraField(u),this.fileComment=u.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var u=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),u==0&&(this.dosPermissions=63&this.externalFileAttributes),u==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var u=t(this.extraFields[1].value);this.uncompressedSize===r.MAX_VALUE_32BITS&&(this.uncompressedSize=u.readInt(8)),this.compressedSize===r.MAX_VALUE_32BITS&&(this.compressedSize=u.readInt(8)),this.localHeaderOffset===r.MAX_VALUE_32BITS&&(this.localHeaderOffset=u.readInt(8)),this.diskNumberStart===r.MAX_VALUE_32BITS&&(this.diskNumberStart=u.readInt(4))}},readExtraFields:function(u){var m,p,g,f=u.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});u.index+4<f;)m=u.readInt(2),p=u.readInt(2),g=u.readData(p),this.extraFields[m]={id:m,length:p,value:g};u.setIndex(f)},handleUTF8:function(){var u=c.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=a.utf8decode(this.fileName),this.fileCommentStr=a.utf8decode(this.fileComment);else{var m=this.findExtraFieldUnicodePath();if(m!==null)this.fileNameStr=m;else{var p=r.transformTo(u,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(p)}var g=this.findExtraFieldUnicodeComment();if(g!==null)this.fileCommentStr=g;else{var f=r.transformTo(u,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(f)}}},findExtraFieldUnicodePath:function(){var u=this.extraFields[28789];if(u){var m=t(u.value);return m.readInt(1)!==1||n(this.fileName)!==m.readInt(4)?null:a.utf8decode(m.readData(u.length-5))}return null},findExtraFieldUnicodeComment:function(){var u=this.extraFields[25461];if(u){var m=t(u.value);return m.readInt(1)!==1||n(this.fileComment)!==m.readInt(4)?null:a.utf8decode(m.readData(u.length-5))}return null}},i.exports=h},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(s,i,e){"use strict";function t(m,p,g){this.name=m,this.dir=g.dir,this.date=g.date,this.comment=g.comment,this.unixPermissions=g.unixPermissions,this.dosPermissions=g.dosPermissions,this._data=p,this._dataBinary=g.binary,this.options={compression:g.compression,compressionOptions:g.compressionOptions}}var r=s("./stream/StreamHelper"),o=s("./stream/DataWorker"),n=s("./utf8"),a=s("./compressedObject"),d=s("./stream/GenericWorker");t.prototype={internalStream:function(m){var p=null,g="string";try{if(!m)throw new Error("No output type specified.");var f=(g=m.toLowerCase())==="string"||g==="text";g!=="binarystring"&&g!=="text"||(g="string"),p=this._decompressWorker();var T=!this._dataBinary;T&&!f&&(p=p.pipe(new n.Utf8EncodeWorker)),!T&&f&&(p=p.pipe(new n.Utf8DecodeWorker))}catch(C){(p=new d("error")).error(C)}return new r(p,g,"")},async:function(m,p){return this.internalStream(m).accumulate(p)},nodeStream:function(m,p){return this.internalStream(m||"nodebuffer").toNodejsStream(p)},_compressWorker:function(m,p){if(this._data instanceof a&&this._data.compression.magic===m.magic)return this._data.getCompressedWorker();var g=this._decompressWorker();return this._dataBinary||(g=g.pipe(new n.Utf8EncodeWorker)),a.createWorkerFrom(g,m,p)},_decompressWorker:function(){return this._data instanceof a?this._data.getContentWorker():this._data instanceof d?this._data:new o(this._data)}};for(var c=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],h=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},u=0;u<c.length;u++)t.prototype[c[u]]=h;i.exports=t},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(s,i,e){(function(t){"use strict";var r,o,n=t.MutationObserver||t.WebKitMutationObserver;if(n){var a=0,d=new n(m),c=t.document.createTextNode("");d.observe(c,{characterData:!0}),r=function(){c.data=a=++a%2}}else if(t.setImmediate||t.MessageChannel===void 0)r="document"in t&&"onreadystatechange"in t.document.createElement("script")?function(){var p=t.document.createElement("script");p.onreadystatechange=function(){m(),p.onreadystatechange=null,p.parentNode.removeChild(p),p=null},t.document.documentElement.appendChild(p)}:function(){setTimeout(m,0)};else{var h=new t.MessageChannel;h.port1.onmessage=m,r=function(){h.port2.postMessage(0)}}var u=[];function m(){var p,g;o=!0;for(var f=u.length;f;){for(g=u,u=[],p=-1;++p<f;)g[p]();f=u.length}o=!1}i.exports=function(p){u.push(p)!==1||o||r()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],37:[function(s,i,e){"use strict";var t=s("immediate");function r(){}var o={},n=["REJECTED"],a=["FULFILLED"],d=["PENDING"];function c(f){if(typeof f!="function")throw new TypeError("resolver must be a function");this.state=d,this.queue=[],this.outcome=void 0,f!==r&&p(this,f)}function h(f,T,C){this.promise=f,typeof T=="function"&&(this.onFulfilled=T,this.callFulfilled=this.otherCallFulfilled),typeof C=="function"&&(this.onRejected=C,this.callRejected=this.otherCallRejected)}function u(f,T,C){t(function(){var b;try{b=T(C)}catch(v){return o.reject(f,v)}b===f?o.reject(f,new TypeError("Cannot resolve promise with itself")):o.resolve(f,b)})}function m(f){var T=f&&f.then;if(f&&(typeof f=="object"||typeof f=="function")&&typeof T=="function")return function(){T.apply(f,arguments)}}function p(f,T){var C=!1;function b(N){C||(C=!0,o.reject(f,N))}function v(N){C||(C=!0,o.resolve(f,N))}var $=g(function(){T(v,b)});$.status==="error"&&b($.value)}function g(f,T){var C={};try{C.value=f(T),C.status="success"}catch(b){C.status="error",C.value=b}return C}(i.exports=c).prototype.finally=function(f){if(typeof f!="function")return this;var T=this.constructor;return this.then(function(C){return T.resolve(f()).then(function(){return C})},function(C){return T.resolve(f()).then(function(){throw C})})},c.prototype.catch=function(f){return this.then(null,f)},c.prototype.then=function(f,T){if(typeof f!="function"&&this.state===a||typeof T!="function"&&this.state===n)return this;var C=new this.constructor(r);return this.state!==d?u(C,this.state===a?f:T,this.outcome):this.queue.push(new h(C,f,T)),C},h.prototype.callFulfilled=function(f){o.resolve(this.promise,f)},h.prototype.otherCallFulfilled=function(f){u(this.promise,this.onFulfilled,f)},h.prototype.callRejected=function(f){o.reject(this.promise,f)},h.prototype.otherCallRejected=function(f){u(this.promise,this.onRejected,f)},o.resolve=function(f,T){var C=g(m,T);if(C.status==="error")return o.reject(f,C.value);var b=C.value;if(b)p(f,b);else{f.state=a,f.outcome=T;for(var v=-1,$=f.queue.length;++v<$;)f.queue[v].callFulfilled(T)}return f},o.reject=function(f,T){f.state=n,f.outcome=T;for(var C=-1,b=f.queue.length;++C<b;)f.queue[C].callRejected(T);return f},c.resolve=function(f){return f instanceof this?f:o.resolve(new this(r),f)},c.reject=function(f){var T=new this(r);return o.reject(T,f)},c.all=function(f){var T=this;if(Object.prototype.toString.call(f)!=="[object Array]")return this.reject(new TypeError("must be an array"));var C=f.length,b=!1;if(!C)return this.resolve([]);for(var v=new Array(C),$=0,N=-1,X=new this(r);++N<C;)w(f[N],N);return X;function w(W,ce){T.resolve(W).then(function(y){v[ce]=y,++$!==C||b||(b=!0,o.resolve(X,v))},function(y){b||(b=!0,o.reject(X,y))})}},c.race=function(f){var T=this;if(Object.prototype.toString.call(f)!=="[object Array]")return this.reject(new TypeError("must be an array"));var C=f.length,b=!1;if(!C)return this.resolve([]);for(var v=-1,$=new this(r);++v<C;)N=f[v],T.resolve(N).then(function(X){b||(b=!0,o.resolve($,X))},function(X){b||(b=!0,o.reject($,X))});var N;return $}},{immediate:36}],38:[function(s,i,e){"use strict";var t={};(0,s("./lib/utils/common").assign)(t,s("./lib/deflate"),s("./lib/inflate"),s("./lib/zlib/constants")),i.exports=t},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(s,i,e){"use strict";var t=s("./zlib/deflate"),r=s("./utils/common"),o=s("./utils/strings"),n=s("./zlib/messages"),a=s("./zlib/zstream"),d=Object.prototype.toString,c=0,h=-1,u=0,m=8;function p(f){if(!(this instanceof p))return new p(f);this.options=r.assign({level:h,method:m,chunkSize:16384,windowBits:15,memLevel:8,strategy:u,to:""},f||{});var T=this.options;T.raw&&0<T.windowBits?T.windowBits=-T.windowBits:T.gzip&&0<T.windowBits&&T.windowBits<16&&(T.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new a,this.strm.avail_out=0;var C=t.deflateInit2(this.strm,T.level,T.method,T.windowBits,T.memLevel,T.strategy);if(C!==c)throw new Error(n[C]);if(T.header&&t.deflateSetHeader(this.strm,T.header),T.dictionary){var b;if(b=typeof T.dictionary=="string"?o.string2buf(T.dictionary):d.call(T.dictionary)==="[object ArrayBuffer]"?new Uint8Array(T.dictionary):T.dictionary,(C=t.deflateSetDictionary(this.strm,b))!==c)throw new Error(n[C]);this._dict_set=!0}}function g(f,T){var C=new p(T);if(C.push(f,!0),C.err)throw C.msg||n[C.err];return C.result}p.prototype.push=function(f,T){var C,b,v=this.strm,$=this.options.chunkSize;if(this.ended)return!1;b=T===~~T?T:T===!0?4:0,typeof f=="string"?v.input=o.string2buf(f):d.call(f)==="[object ArrayBuffer]"?v.input=new Uint8Array(f):v.input=f,v.next_in=0,v.avail_in=v.input.length;do{if(v.avail_out===0&&(v.output=new r.Buf8($),v.next_out=0,v.avail_out=$),(C=t.deflate(v,b))!==1&&C!==c)return this.onEnd(C),!(this.ended=!0);v.avail_out!==0&&(v.avail_in!==0||b!==4&&b!==2)||(this.options.to==="string"?this.onData(o.buf2binstring(r.shrinkBuf(v.output,v.next_out))):this.onData(r.shrinkBuf(v.output,v.next_out)))}while((0<v.avail_in||v.avail_out===0)&&C!==1);return b===4?(C=t.deflateEnd(this.strm),this.onEnd(C),this.ended=!0,C===c):b!==2||(this.onEnd(c),!(v.avail_out=0))},p.prototype.onData=function(f){this.chunks.push(f)},p.prototype.onEnd=function(f){f===c&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=f,this.msg=this.strm.msg},e.Deflate=p,e.deflate=g,e.deflateRaw=function(f,T){return(T=T||{}).raw=!0,g(f,T)},e.gzip=function(f,T){return(T=T||{}).gzip=!0,g(f,T)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(s,i,e){"use strict";var t=s("./zlib/inflate"),r=s("./utils/common"),o=s("./utils/strings"),n=s("./zlib/constants"),a=s("./zlib/messages"),d=s("./zlib/zstream"),c=s("./zlib/gzheader"),h=Object.prototype.toString;function u(p){if(!(this instanceof u))return new u(p);this.options=r.assign({chunkSize:16384,windowBits:0,to:""},p||{});var g=this.options;g.raw&&0<=g.windowBits&&g.windowBits<16&&(g.windowBits=-g.windowBits,g.windowBits===0&&(g.windowBits=-15)),!(0<=g.windowBits&&g.windowBits<16)||p&&p.windowBits||(g.windowBits+=32),15<g.windowBits&&g.windowBits<48&&(15&g.windowBits)==0&&(g.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var f=t.inflateInit2(this.strm,g.windowBits);if(f!==n.Z_OK)throw new Error(a[f]);this.header=new c,t.inflateGetHeader(this.strm,this.header)}function m(p,g){var f=new u(g);if(f.push(p,!0),f.err)throw f.msg||a[f.err];return f.result}u.prototype.push=function(p,g){var f,T,C,b,v,$,N=this.strm,X=this.options.chunkSize,w=this.options.dictionary,W=!1;if(this.ended)return!1;T=g===~~g?g:g===!0?n.Z_FINISH:n.Z_NO_FLUSH,typeof p=="string"?N.input=o.binstring2buf(p):h.call(p)==="[object ArrayBuffer]"?N.input=new Uint8Array(p):N.input=p,N.next_in=0,N.avail_in=N.input.length;do{if(N.avail_out===0&&(N.output=new r.Buf8(X),N.next_out=0,N.avail_out=X),(f=t.inflate(N,n.Z_NO_FLUSH))===n.Z_NEED_DICT&&w&&($=typeof w=="string"?o.string2buf(w):h.call(w)==="[object ArrayBuffer]"?new Uint8Array(w):w,f=t.inflateSetDictionary(this.strm,$)),f===n.Z_BUF_ERROR&&W===!0&&(f=n.Z_OK,W=!1),f!==n.Z_STREAM_END&&f!==n.Z_OK)return this.onEnd(f),!(this.ended=!0);N.next_out&&(N.avail_out!==0&&f!==n.Z_STREAM_END&&(N.avail_in!==0||T!==n.Z_FINISH&&T!==n.Z_SYNC_FLUSH)||(this.options.to==="string"?(C=o.utf8border(N.output,N.next_out),b=N.next_out-C,v=o.buf2string(N.output,C),N.next_out=b,N.avail_out=X-b,b&&r.arraySet(N.output,N.output,C,b,0),this.onData(v)):this.onData(r.shrinkBuf(N.output,N.next_out)))),N.avail_in===0&&N.avail_out===0&&(W=!0)}while((0<N.avail_in||N.avail_out===0)&&f!==n.Z_STREAM_END);return f===n.Z_STREAM_END&&(T=n.Z_FINISH),T===n.Z_FINISH?(f=t.inflateEnd(this.strm),this.onEnd(f),this.ended=!0,f===n.Z_OK):T!==n.Z_SYNC_FLUSH||(this.onEnd(n.Z_OK),!(N.avail_out=0))},u.prototype.onData=function(p){this.chunks.push(p)},u.prototype.onEnd=function(p){p===n.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=p,this.msg=this.strm.msg},e.Inflate=u,e.inflate=m,e.inflateRaw=function(p,g){return(g=g||{}).raw=!0,m(p,g)},e.ungzip=m},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(s,i,e){"use strict";var t=typeof Uint8Array!="undefined"&&typeof Uint16Array!="undefined"&&typeof Int32Array!="undefined";e.assign=function(n){for(var a=Array.prototype.slice.call(arguments,1);a.length;){var d=a.shift();if(d){if(typeof d!="object")throw new TypeError(d+"must be non-object");for(var c in d)d.hasOwnProperty(c)&&(n[c]=d[c])}}return n},e.shrinkBuf=function(n,a){return n.length===a?n:n.subarray?n.subarray(0,a):(n.length=a,n)};var r={arraySet:function(n,a,d,c,h){if(a.subarray&&n.subarray)n.set(a.subarray(d,d+c),h);else for(var u=0;u<c;u++)n[h+u]=a[d+u]},flattenChunks:function(n){var a,d,c,h,u,m;for(a=c=0,d=n.length;a<d;a++)c+=n[a].length;for(m=new Uint8Array(c),a=h=0,d=n.length;a<d;a++)u=n[a],m.set(u,h),h+=u.length;return m}},o={arraySet:function(n,a,d,c,h){for(var u=0;u<c;u++)n[h+u]=a[d+u]},flattenChunks:function(n){return[].concat.apply([],n)}};e.setTyped=function(n){n?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,r)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,o))},e.setTyped(t)},{}],42:[function(s,i,e){"use strict";var t=s("./common"),r=!0,o=!0;try{String.fromCharCode.apply(null,[0])}catch(c){r=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(c){o=!1}for(var n=new t.Buf8(256),a=0;a<256;a++)n[a]=252<=a?6:248<=a?5:240<=a?4:224<=a?3:192<=a?2:1;function d(c,h){if(h<65537&&(c.subarray&&o||!c.subarray&&r))return String.fromCharCode.apply(null,t.shrinkBuf(c,h));for(var u="",m=0;m<h;m++)u+=String.fromCharCode(c[m]);return u}n[254]=n[254]=1,e.string2buf=function(c){var h,u,m,p,g,f=c.length,T=0;for(p=0;p<f;p++)(64512&(u=c.charCodeAt(p)))==55296&&p+1<f&&(64512&(m=c.charCodeAt(p+1)))==56320&&(u=65536+(u-55296<<10)+(m-56320),p++),T+=u<128?1:u<2048?2:u<65536?3:4;for(h=new t.Buf8(T),p=g=0;g<T;p++)(64512&(u=c.charCodeAt(p)))==55296&&p+1<f&&(64512&(m=c.charCodeAt(p+1)))==56320&&(u=65536+(u-55296<<10)+(m-56320),p++),u<128?h[g++]=u:(u<2048?h[g++]=192|u>>>6:(u<65536?h[g++]=224|u>>>12:(h[g++]=240|u>>>18,h[g++]=128|u>>>12&63),h[g++]=128|u>>>6&63),h[g++]=128|63&u);return h},e.buf2binstring=function(c){return d(c,c.length)},e.binstring2buf=function(c){for(var h=new t.Buf8(c.length),u=0,m=h.length;u<m;u++)h[u]=c.charCodeAt(u);return h},e.buf2string=function(c,h){var u,m,p,g,f=h||c.length,T=new Array(2*f);for(u=m=0;u<f;)if((p=c[u++])<128)T[m++]=p;else if(4<(g=n[p]))T[m++]=65533,u+=g-1;else{for(p&=g===2?31:g===3?15:7;1<g&&u<f;)p=p<<6|63&c[u++],g--;1<g?T[m++]=65533:p<65536?T[m++]=p:(p-=65536,T[m++]=55296|p>>10&1023,T[m++]=56320|1023&p)}return d(T,m)},e.utf8border=function(c,h){var u;for((h=h||c.length)>c.length&&(h=c.length),u=h-1;0<=u&&(192&c[u])==128;)u--;return u<0||u===0?h:u+n[c[u]]>h?u:h}},{"./common":41}],43:[function(s,i,e){"use strict";i.exports=function(t,r,o,n){for(var a=65535&t|0,d=t>>>16&65535|0,c=0;o!==0;){for(o-=c=2e3<o?2e3:o;d=d+(a=a+r[n++]|0)|0,--c;);a%=65521,d%=65521}return a|d<<16|0}},{}],44:[function(s,i,e){"use strict";i.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(s,i,e){"use strict";var t=function(){for(var r,o=[],n=0;n<256;n++){r=n;for(var a=0;a<8;a++)r=1&r?3988292384^r>>>1:r>>>1;o[n]=r}return o}();i.exports=function(r,o,n,a){var d=t,c=a+n;r^=-1;for(var h=a;h<c;h++)r=r>>>8^d[255&(r^o[h])];return-1^r}},{}],46:[function(s,i,e){"use strict";var t,r=s("../utils/common"),o=s("./trees"),n=s("./adler32"),a=s("./crc32"),d=s("./messages"),c=0,h=4,u=0,m=-2,p=-1,g=4,f=2,T=8,C=9,b=286,v=30,$=19,N=2*b+1,X=15,w=3,W=258,ce=W+w+1,y=42,G=113,E=1,J=2,_e=3,k=4;function ye(_,O){return _.msg=d[O],O}function te(_){return(_<<1)-(4<_?9:0)}function Ce(_){for(var O=_.length;0<=--O;)_[O]=0}function B(_){var O=_.state,F=O.pending;F>_.avail_out&&(F=_.avail_out),F!==0&&(r.arraySet(_.output,O.pending_buf,O.pending_out,F,_.next_out),_.next_out+=F,O.pending_out+=F,_.total_out+=F,_.avail_out-=F,O.pending-=F,O.pending===0&&(O.pending_out=0))}function U(_,O){o._tr_flush_block(_,0<=_.block_start?_.block_start:-1,_.strstart-_.block_start,O),_.block_start=_.strstart,B(_.strm)}function Ie(_,O){_.pending_buf[_.pending++]=O}function ae(_,O){_.pending_buf[_.pending++]=O>>>8&255,_.pending_buf[_.pending++]=255&O}function se(_,O){var F,R,A=_.max_chain_length,D=_.strstart,Z=_.prev_length,ee=_.nice_match,M=_.strstart>_.w_size-ce?_.strstart-(_.w_size-ce):0,ie=_.window,de=_.w_mask,re=_.prev,Te=_.strstart+W,P=ie[D+Z-1],Pe=ie[D+Z];_.prev_length>=_.good_match&&(A>>=2),ee>_.lookahead&&(ee=_.lookahead);do if(ie[(F=O)+Z]===Pe&&ie[F+Z-1]===P&&ie[F]===ie[D]&&ie[++F]===ie[D+1]){D+=2,F++;do;while(ie[++D]===ie[++F]&&ie[++D]===ie[++F]&&ie[++D]===ie[++F]&&ie[++D]===ie[++F]&&ie[++D]===ie[++F]&&ie[++D]===ie[++F]&&ie[++D]===ie[++F]&&ie[++D]===ie[++F]&&D<Te);if(R=W-(Te-D),D=Te-W,Z<R){if(_.match_start=O,ee<=(Z=R))break;P=ie[D+Z-1],Pe=ie[D+Z]}}while((O=re[O&de])>M&&--A!=0);return Z<=_.lookahead?Z:_.lookahead}function st(_){var O,F,R,A,D,Z,ee,M,ie,de,re=_.w_size;do{if(A=_.window_size-_.lookahead-_.strstart,_.strstart>=re+(re-ce)){for(r.arraySet(_.window,_.window,re,re,0),_.match_start-=re,_.strstart-=re,_.block_start-=re,O=F=_.hash_size;R=_.head[--O],_.head[O]=re<=R?R-re:0,--F;);for(O=F=re;R=_.prev[--O],_.prev[O]=re<=R?R-re:0,--F;);A+=re}if(_.strm.avail_in===0)break;if(Z=_.strm,ee=_.window,M=_.strstart+_.lookahead,ie=A,de=void 0,de=Z.avail_in,ie<de&&(de=ie),F=de===0?0:(Z.avail_in-=de,r.arraySet(ee,Z.input,Z.next_in,de,M),Z.state.wrap===1?Z.adler=n(Z.adler,ee,de,M):Z.state.wrap===2&&(Z.adler=a(Z.adler,ee,de,M)),Z.next_in+=de,Z.total_in+=de,de),_.lookahead+=F,_.lookahead+_.insert>=w)for(D=_.strstart-_.insert,_.ins_h=_.window[D],_.ins_h=(_.ins_h<<_.hash_shift^_.window[D+1])&_.hash_mask;_.insert&&(_.ins_h=(_.ins_h<<_.hash_shift^_.window[D+w-1])&_.hash_mask,_.prev[D&_.w_mask]=_.head[_.ins_h],_.head[_.ins_h]=D,D++,_.insert--,!(_.lookahead+_.insert<w)););}while(_.lookahead<ce&&_.strm.avail_in!==0)}function yt(_,O){for(var F,R;;){if(_.lookahead<ce){if(st(_),_.lookahead<ce&&O===c)return E;if(_.lookahead===0)break}if(F=0,_.lookahead>=w&&(_.ins_h=(_.ins_h<<_.hash_shift^_.window[_.strstart+w-1])&_.hash_mask,F=_.prev[_.strstart&_.w_mask]=_.head[_.ins_h],_.head[_.ins_h]=_.strstart),F!==0&&_.strstart-F<=_.w_size-ce&&(_.match_length=se(_,F)),_.match_length>=w)if(R=o._tr_tally(_,_.strstart-_.match_start,_.match_length-w),_.lookahead-=_.match_length,_.match_length<=_.max_lazy_match&&_.lookahead>=w){for(_.match_length--;_.strstart++,_.ins_h=(_.ins_h<<_.hash_shift^_.window[_.strstart+w-1])&_.hash_mask,F=_.prev[_.strstart&_.w_mask]=_.head[_.ins_h],_.head[_.ins_h]=_.strstart,--_.match_length!=0;);_.strstart++}else _.strstart+=_.match_length,_.match_length=0,_.ins_h=_.window[_.strstart],_.ins_h=(_.ins_h<<_.hash_shift^_.window[_.strstart+1])&_.hash_mask;else R=o._tr_tally(_,0,_.window[_.strstart]),_.lookahead--,_.strstart++;if(R&&(U(_,!1),_.strm.avail_out===0))return E}return _.insert=_.strstart<w-1?_.strstart:w-1,O===h?(U(_,!0),_.strm.avail_out===0?_e:k):_.last_lit&&(U(_,!1),_.strm.avail_out===0)?E:J}function z(_,O){for(var F,R,A;;){if(_.lookahead<ce){if(st(_),_.lookahead<ce&&O===c)return E;if(_.lookahead===0)break}if(F=0,_.lookahead>=w&&(_.ins_h=(_.ins_h<<_.hash_shift^_.window[_.strstart+w-1])&_.hash_mask,F=_.prev[_.strstart&_.w_mask]=_.head[_.ins_h],_.head[_.ins_h]=_.strstart),_.prev_length=_.match_length,_.prev_match=_.match_start,_.match_length=w-1,F!==0&&_.prev_length<_.max_lazy_match&&_.strstart-F<=_.w_size-ce&&(_.match_length=se(_,F),_.match_length<=5&&(_.strategy===1||_.match_length===w&&4096<_.strstart-_.match_start)&&(_.match_length=w-1)),_.prev_length>=w&&_.match_length<=_.prev_length){for(A=_.strstart+_.lookahead-w,R=o._tr_tally(_,_.strstart-1-_.prev_match,_.prev_length-w),_.lookahead-=_.prev_length-1,_.prev_length-=2;++_.strstart<=A&&(_.ins_h=(_.ins_h<<_.hash_shift^_.window[_.strstart+w-1])&_.hash_mask,F=_.prev[_.strstart&_.w_mask]=_.head[_.ins_h],_.head[_.ins_h]=_.strstart),--_.prev_length!=0;);if(_.match_available=0,_.match_length=w-1,_.strstart++,R&&(U(_,!1),_.strm.avail_out===0))return E}else if(_.match_available){if((R=o._tr_tally(_,0,_.window[_.strstart-1]))&&U(_,!1),_.strstart++,_.lookahead--,_.strm.avail_out===0)return E}else _.match_available=1,_.strstart++,_.lookahead--}return _.match_available&&(R=o._tr_tally(_,0,_.window[_.strstart-1]),_.match_available=0),_.insert=_.strstart<w-1?_.strstart:w-1,O===h?(U(_,!0),_.strm.avail_out===0?_e:k):_.last_lit&&(U(_,!1),_.strm.avail_out===0)?E:J}function Be(_,O,F,R,A){this.good_length=_,this.max_lazy=O,this.nice_length=F,this.max_chain=R,this.func=A}function _t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=T,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new r.Buf16(2*N),this.dyn_dtree=new r.Buf16(2*(2*v+1)),this.bl_tree=new r.Buf16(2*(2*$+1)),Ce(this.dyn_ltree),Ce(this.dyn_dtree),Ce(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new r.Buf16(X+1),this.heap=new r.Buf16(2*b+1),Ce(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new r.Buf16(2*b+1),Ce(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function ot(_){var O;return _&&_.state?(_.total_in=_.total_out=0,_.data_type=f,(O=_.state).pending=0,O.pending_out=0,O.wrap<0&&(O.wrap=-O.wrap),O.status=O.wrap?y:G,_.adler=O.wrap===2?0:1,O.last_flush=c,o._tr_init(O),u):ye(_,m)}function Di(_){var O=ot(_);return O===u&&function(F){F.window_size=2*F.w_size,Ce(F.head),F.max_lazy_match=t[F.level].max_lazy,F.good_match=t[F.level].good_length,F.nice_match=t[F.level].nice_length,F.max_chain_length=t[F.level].max_chain,F.strstart=0,F.block_start=0,F.lookahead=0,F.insert=0,F.match_length=F.prev_length=w-1,F.match_available=0,F.ins_h=0}(_.state),O}function hi(_,O,F,R,A,D){if(!_)return m;var Z=1;if(O===p&&(O=6),R<0?(Z=0,R=-R):15<R&&(Z=2,R-=16),A<1||C<A||F!==T||R<8||15<R||O<0||9<O||D<0||g<D)return ye(_,m);R===8&&(R=9);var ee=new _t;return(_.state=ee).strm=_,ee.wrap=Z,ee.gzhead=null,ee.w_bits=R,ee.w_size=1<<ee.w_bits,ee.w_mask=ee.w_size-1,ee.hash_bits=A+7,ee.hash_size=1<<ee.hash_bits,ee.hash_mask=ee.hash_size-1,ee.hash_shift=~~((ee.hash_bits+w-1)/w),ee.window=new r.Buf8(2*ee.w_size),ee.head=new r.Buf16(ee.hash_size),ee.prev=new r.Buf16(ee.w_size),ee.lit_bufsize=1<<A+6,ee.pending_buf_size=4*ee.lit_bufsize,ee.pending_buf=new r.Buf8(ee.pending_buf_size),ee.d_buf=1*ee.lit_bufsize,ee.l_buf=3*ee.lit_bufsize,ee.level=O,ee.strategy=D,ee.method=F,Di(_)}t=[new Be(0,0,0,0,function(_,O){var F=65535;for(F>_.pending_buf_size-5&&(F=_.pending_buf_size-5);;){if(_.lookahead<=1){if(st(_),_.lookahead===0&&O===c)return E;if(_.lookahead===0)break}_.strstart+=_.lookahead,_.lookahead=0;var R=_.block_start+F;if((_.strstart===0||_.strstart>=R)&&(_.lookahead=_.strstart-R,_.strstart=R,U(_,!1),_.strm.avail_out===0)||_.strstart-_.block_start>=_.w_size-ce&&(U(_,!1),_.strm.avail_out===0))return E}return _.insert=0,O===h?(U(_,!0),_.strm.avail_out===0?_e:k):(_.strstart>_.block_start&&(U(_,!1),_.strm.avail_out),E)}),new Be(4,4,8,4,yt),new Be(4,5,16,8,yt),new Be(4,6,32,32,yt),new Be(4,4,16,16,z),new Be(8,16,32,32,z),new Be(8,16,128,128,z),new Be(8,32,128,256,z),new Be(32,128,258,1024,z),new Be(32,258,258,4096,z)],e.deflateInit=function(_,O){return hi(_,O,T,15,8,0)},e.deflateInit2=hi,e.deflateReset=Di,e.deflateResetKeep=ot,e.deflateSetHeader=function(_,O){return _&&_.state?_.state.wrap!==2?m:(_.state.gzhead=O,u):m},e.deflate=function(_,O){var F,R,A,D;if(!_||!_.state||5<O||O<0)return _?ye(_,m):m;if(R=_.state,!_.output||!_.input&&_.avail_in!==0||R.status===666&&O!==h)return ye(_,_.avail_out===0?-5:m);if(R.strm=_,F=R.last_flush,R.last_flush=O,R.status===y)if(R.wrap===2)_.adler=0,Ie(R,31),Ie(R,139),Ie(R,8),R.gzhead?(Ie(R,(R.gzhead.text?1:0)+(R.gzhead.hcrc?2:0)+(R.gzhead.extra?4:0)+(R.gzhead.name?8:0)+(R.gzhead.comment?16:0)),Ie(R,255&R.gzhead.time),Ie(R,R.gzhead.time>>8&255),Ie(R,R.gzhead.time>>16&255),Ie(R,R.gzhead.time>>24&255),Ie(R,R.level===9?2:2<=R.strategy||R.level<2?4:0),Ie(R,255&R.gzhead.os),R.gzhead.extra&&R.gzhead.extra.length&&(Ie(R,255&R.gzhead.extra.length),Ie(R,R.gzhead.extra.length>>8&255)),R.gzhead.hcrc&&(_.adler=a(_.adler,R.pending_buf,R.pending,0)),R.gzindex=0,R.status=69):(Ie(R,0),Ie(R,0),Ie(R,0),Ie(R,0),Ie(R,0),Ie(R,R.level===9?2:2<=R.strategy||R.level<2?4:0),Ie(R,3),R.status=G);else{var Z=T+(R.w_bits-8<<4)<<8;Z|=(2<=R.strategy||R.level<2?0:R.level<6?1:R.level===6?2:3)<<6,R.strstart!==0&&(Z|=32),Z+=31-Z%31,R.status=G,ae(R,Z),R.strstart!==0&&(ae(R,_.adler>>>16),ae(R,65535&_.adler)),_.adler=1}if(R.status===69)if(R.gzhead.extra){for(A=R.pending;R.gzindex<(65535&R.gzhead.extra.length)&&(R.pending!==R.pending_buf_size||(R.gzhead.hcrc&&R.pending>A&&(_.adler=a(_.adler,R.pending_buf,R.pending-A,A)),B(_),A=R.pending,R.pending!==R.pending_buf_size));)Ie(R,255&R.gzhead.extra[R.gzindex]),R.gzindex++;R.gzhead.hcrc&&R.pending>A&&(_.adler=a(_.adler,R.pending_buf,R.pending-A,A)),R.gzindex===R.gzhead.extra.length&&(R.gzindex=0,R.status=73)}else R.status=73;if(R.status===73)if(R.gzhead.name){A=R.pending;do{if(R.pending===R.pending_buf_size&&(R.gzhead.hcrc&&R.pending>A&&(_.adler=a(_.adler,R.pending_buf,R.pending-A,A)),B(_),A=R.pending,R.pending===R.pending_buf_size)){D=1;break}D=R.gzindex<R.gzhead.name.length?255&R.gzhead.name.charCodeAt(R.gzindex++):0,Ie(R,D)}while(D!==0);R.gzhead.hcrc&&R.pending>A&&(_.adler=a(_.adler,R.pending_buf,R.pending-A,A)),D===0&&(R.gzindex=0,R.status=91)}else R.status=91;if(R.status===91)if(R.gzhead.comment){A=R.pending;do{if(R.pending===R.pending_buf_size&&(R.gzhead.hcrc&&R.pending>A&&(_.adler=a(_.adler,R.pending_buf,R.pending-A,A)),B(_),A=R.pending,R.pending===R.pending_buf_size)){D=1;break}D=R.gzindex<R.gzhead.comment.length?255&R.gzhead.comment.charCodeAt(R.gzindex++):0,Ie(R,D)}while(D!==0);R.gzhead.hcrc&&R.pending>A&&(_.adler=a(_.adler,R.pending_buf,R.pending-A,A)),D===0&&(R.status=103)}else R.status=103;if(R.status===103&&(R.gzhead.hcrc?(R.pending+2>R.pending_buf_size&&B(_),R.pending+2<=R.pending_buf_size&&(Ie(R,255&_.adler),Ie(R,_.adler>>8&255),_.adler=0,R.status=G)):R.status=G),R.pending!==0){if(B(_),_.avail_out===0)return R.last_flush=-1,u}else if(_.avail_in===0&&te(O)<=te(F)&&O!==h)return ye(_,-5);if(R.status===666&&_.avail_in!==0)return ye(_,-5);if(_.avail_in!==0||R.lookahead!==0||O!==c&&R.status!==666){var ee=R.strategy===2?function(M,ie){for(var de;;){if(M.lookahead===0&&(st(M),M.lookahead===0)){if(ie===c)return E;break}if(M.match_length=0,de=o._tr_tally(M,0,M.window[M.strstart]),M.lookahead--,M.strstart++,de&&(U(M,!1),M.strm.avail_out===0))return E}return M.insert=0,ie===h?(U(M,!0),M.strm.avail_out===0?_e:k):M.last_lit&&(U(M,!1),M.strm.avail_out===0)?E:J}(R,O):R.strategy===3?function(M,ie){for(var de,re,Te,P,Pe=M.window;;){if(M.lookahead<=W){if(st(M),M.lookahead<=W&&ie===c)return E;if(M.lookahead===0)break}if(M.match_length=0,M.lookahead>=w&&0<M.strstart&&(re=Pe[Te=M.strstart-1])===Pe[++Te]&&re===Pe[++Te]&&re===Pe[++Te]){P=M.strstart+W;do;while(re===Pe[++Te]&&re===Pe[++Te]&&re===Pe[++Te]&&re===Pe[++Te]&&re===Pe[++Te]&&re===Pe[++Te]&&re===Pe[++Te]&&re===Pe[++Te]&&Te<P);M.match_length=W-(P-Te),M.match_length>M.lookahead&&(M.match_length=M.lookahead)}if(M.match_length>=w?(de=o._tr_tally(M,1,M.match_length-w),M.lookahead-=M.match_length,M.strstart+=M.match_length,M.match_length=0):(de=o._tr_tally(M,0,M.window[M.strstart]),M.lookahead--,M.strstart++),de&&(U(M,!1),M.strm.avail_out===0))return E}return M.insert=0,ie===h?(U(M,!0),M.strm.avail_out===0?_e:k):M.last_lit&&(U(M,!1),M.strm.avail_out===0)?E:J}(R,O):t[R.level].func(R,O);if(ee!==_e&&ee!==k||(R.status=666),ee===E||ee===_e)return _.avail_out===0&&(R.last_flush=-1),u;if(ee===J&&(O===1?o._tr_align(R):O!==5&&(o._tr_stored_block(R,0,0,!1),O===3&&(Ce(R.head),R.lookahead===0&&(R.strstart=0,R.block_start=0,R.insert=0))),B(_),_.avail_out===0))return R.last_flush=-1,u}return O!==h?u:R.wrap<=0?1:(R.wrap===2?(Ie(R,255&_.adler),Ie(R,_.adler>>8&255),Ie(R,_.adler>>16&255),Ie(R,_.adler>>24&255),Ie(R,255&_.total_in),Ie(R,_.total_in>>8&255),Ie(R,_.total_in>>16&255),Ie(R,_.total_in>>24&255)):(ae(R,_.adler>>>16),ae(R,65535&_.adler)),B(_),0<R.wrap&&(R.wrap=-R.wrap),R.pending!==0?u:1)},e.deflateEnd=function(_){var O;return _&&_.state?(O=_.state.status)!==y&&O!==69&&O!==73&&O!==91&&O!==103&&O!==G&&O!==666?ye(_,m):(_.state=null,O===G?ye(_,-3):u):m},e.deflateSetDictionary=function(_,O){var F,R,A,D,Z,ee,M,ie,de=O.length;if(!_||!_.state||(D=(F=_.state).wrap)===2||D===1&&F.status!==y||F.lookahead)return m;for(D===1&&(_.adler=n(_.adler,O,de,0)),F.wrap=0,de>=F.w_size&&(D===0&&(Ce(F.head),F.strstart=0,F.block_start=0,F.insert=0),ie=new r.Buf8(F.w_size),r.arraySet(ie,O,de-F.w_size,F.w_size,0),O=ie,de=F.w_size),Z=_.avail_in,ee=_.next_in,M=_.input,_.avail_in=de,_.next_in=0,_.input=O,st(F);F.lookahead>=w;){for(R=F.strstart,A=F.lookahead-(w-1);F.ins_h=(F.ins_h<<F.hash_shift^F.window[R+w-1])&F.hash_mask,F.prev[R&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=R,R++,--A;);F.strstart=R,F.lookahead=w-1,st(F)}return F.strstart+=F.lookahead,F.block_start=F.strstart,F.insert=F.lookahead,F.lookahead=0,F.match_length=F.prev_length=w-1,F.match_available=0,_.next_in=ee,_.input=M,_.avail_in=Z,F.wrap=D,u},e.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(s,i,e){"use strict";i.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(s,i,e){"use strict";i.exports=function(t,r){var o,n,a,d,c,h,u,m,p,g,f,T,C,b,v,$,N,X,w,W,ce,y,G,E,J;o=t.state,n=t.next_in,E=t.input,a=n+(t.avail_in-5),d=t.next_out,J=t.output,c=d-(r-t.avail_out),h=d+(t.avail_out-257),u=o.dmax,m=o.wsize,p=o.whave,g=o.wnext,f=o.window,T=o.hold,C=o.bits,b=o.lencode,v=o.distcode,$=(1<<o.lenbits)-1,N=(1<<o.distbits)-1;e:do{C<15&&(T+=E[n++]<<C,C+=8,T+=E[n++]<<C,C+=8),X=b[T&$];t:for(;;){if(T>>>=w=X>>>24,C-=w,(w=X>>>16&255)===0)J[d++]=65535&X;else{if(!(16&w)){if((64&w)==0){X=b[(65535&X)+(T&(1<<w)-1)];continue t}if(32&w){o.mode=12;break e}t.msg="invalid literal/length code",o.mode=30;break e}W=65535&X,(w&=15)&&(C<w&&(T+=E[n++]<<C,C+=8),W+=T&(1<<w)-1,T>>>=w,C-=w),C<15&&(T+=E[n++]<<C,C+=8,T+=E[n++]<<C,C+=8),X=v[T&N];i:for(;;){if(T>>>=w=X>>>24,C-=w,!(16&(w=X>>>16&255))){if((64&w)==0){X=v[(65535&X)+(T&(1<<w)-1)];continue i}t.msg="invalid distance code",o.mode=30;break e}if(ce=65535&X,C<(w&=15)&&(T+=E[n++]<<C,(C+=8)<w&&(T+=E[n++]<<C,C+=8)),u<(ce+=T&(1<<w)-1)){t.msg="invalid distance too far back",o.mode=30;break e}if(T>>>=w,C-=w,(w=d-c)<ce){if(p<(w=ce-w)&&o.sane){t.msg="invalid distance too far back",o.mode=30;break e}if(G=f,(y=0)===g){if(y+=m-w,w<W){for(W-=w;J[d++]=f[y++],--w;);y=d-ce,G=J}}else if(g<w){if(y+=m+g-w,(w-=g)<W){for(W-=w;J[d++]=f[y++],--w;);if(y=0,g<W){for(W-=w=g;J[d++]=f[y++],--w;);y=d-ce,G=J}}}else if(y+=g-w,w<W){for(W-=w;J[d++]=f[y++],--w;);y=d-ce,G=J}for(;2<W;)J[d++]=G[y++],J[d++]=G[y++],J[d++]=G[y++],W-=3;W&&(J[d++]=G[y++],1<W&&(J[d++]=G[y++]))}else{for(y=d-ce;J[d++]=J[y++],J[d++]=J[y++],J[d++]=J[y++],2<(W-=3););W&&(J[d++]=J[y++],1<W&&(J[d++]=J[y++]))}break}}break}}while(n<a&&d<h);n-=W=C>>3,T&=(1<<(C-=W<<3))-1,t.next_in=n,t.next_out=d,t.avail_in=n<a?a-n+5:5-(n-a),t.avail_out=d<h?h-d+257:257-(d-h),o.hold=T,o.bits=C}},{}],49:[function(s,i,e){"use strict";var t=s("../utils/common"),r=s("./adler32"),o=s("./crc32"),n=s("./inffast"),a=s("./inftrees"),d=1,c=2,h=0,u=-2,m=1,p=852,g=592;function f(y){return(y>>>24&255)+(y>>>8&65280)+((65280&y)<<8)+((255&y)<<24)}function T(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new t.Buf16(320),this.work=new t.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function C(y){var G;return y&&y.state?(G=y.state,y.total_in=y.total_out=G.total=0,y.msg="",G.wrap&&(y.adler=1&G.wrap),G.mode=m,G.last=0,G.havedict=0,G.dmax=32768,G.head=null,G.hold=0,G.bits=0,G.lencode=G.lendyn=new t.Buf32(p),G.distcode=G.distdyn=new t.Buf32(g),G.sane=1,G.back=-1,h):u}function b(y){var G;return y&&y.state?((G=y.state).wsize=0,G.whave=0,G.wnext=0,C(y)):u}function v(y,G){var E,J;return y&&y.state?(J=y.state,G<0?(E=0,G=-G):(E=1+(G>>4),G<48&&(G&=15)),G&&(G<8||15<G)?u:(J.window!==null&&J.wbits!==G&&(J.window=null),J.wrap=E,J.wbits=G,b(y))):u}function $(y,G){var E,J;return y?(J=new T,(y.state=J).window=null,(E=v(y,G))!==h&&(y.state=null),E):u}var N,X,w=!0;function W(y){if(w){var G;for(N=new t.Buf32(512),X=new t.Buf32(32),G=0;G<144;)y.lens[G++]=8;for(;G<256;)y.lens[G++]=9;for(;G<280;)y.lens[G++]=7;for(;G<288;)y.lens[G++]=8;for(a(d,y.lens,0,288,N,0,y.work,{bits:9}),G=0;G<32;)y.lens[G++]=5;a(c,y.lens,0,32,X,0,y.work,{bits:5}),w=!1}y.lencode=N,y.lenbits=9,y.distcode=X,y.distbits=5}function ce(y,G,E,J){var _e,k=y.state;return k.window===null&&(k.wsize=1<<k.wbits,k.wnext=0,k.whave=0,k.window=new t.Buf8(k.wsize)),J>=k.wsize?(t.arraySet(k.window,G,E-k.wsize,k.wsize,0),k.wnext=0,k.whave=k.wsize):(J<(_e=k.wsize-k.wnext)&&(_e=J),t.arraySet(k.window,G,E-J,_e,k.wnext),(J-=_e)?(t.arraySet(k.window,G,E-J,J,0),k.wnext=J,k.whave=k.wsize):(k.wnext+=_e,k.wnext===k.wsize&&(k.wnext=0),k.whave<k.wsize&&(k.whave+=_e))),0}e.inflateReset=b,e.inflateReset2=v,e.inflateResetKeep=C,e.inflateInit=function(y){return $(y,15)},e.inflateInit2=$,e.inflate=function(y,G){var E,J,_e,k,ye,te,Ce,B,U,Ie,ae,se,st,yt,z,Be,_t,ot,Di,hi,_,O,F,R,A=0,D=new t.Buf8(4),Z=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!y||!y.state||!y.output||!y.input&&y.avail_in!==0)return u;(E=y.state).mode===12&&(E.mode=13),ye=y.next_out,_e=y.output,Ce=y.avail_out,k=y.next_in,J=y.input,te=y.avail_in,B=E.hold,U=E.bits,Ie=te,ae=Ce,O=h;e:for(;;)switch(E.mode){case m:if(E.wrap===0){E.mode=13;break}for(;U<16;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}if(2&E.wrap&&B===35615){D[E.check=0]=255&B,D[1]=B>>>8&255,E.check=o(E.check,D,2,0),U=B=0,E.mode=2;break}if(E.flags=0,E.head&&(E.head.done=!1),!(1&E.wrap)||(((255&B)<<8)+(B>>8))%31){y.msg="incorrect header check",E.mode=30;break}if((15&B)!=8){y.msg="unknown compression method",E.mode=30;break}if(U-=4,_=8+(15&(B>>>=4)),E.wbits===0)E.wbits=_;else if(_>E.wbits){y.msg="invalid window size",E.mode=30;break}E.dmax=1<<_,y.adler=E.check=1,E.mode=512&B?10:12,U=B=0;break;case 2:for(;U<16;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}if(E.flags=B,(255&E.flags)!=8){y.msg="unknown compression method",E.mode=30;break}if(57344&E.flags){y.msg="unknown header flags set",E.mode=30;break}E.head&&(E.head.text=B>>8&1),512&E.flags&&(D[0]=255&B,D[1]=B>>>8&255,E.check=o(E.check,D,2,0)),U=B=0,E.mode=3;case 3:for(;U<32;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}E.head&&(E.head.time=B),512&E.flags&&(D[0]=255&B,D[1]=B>>>8&255,D[2]=B>>>16&255,D[3]=B>>>24&255,E.check=o(E.check,D,4,0)),U=B=0,E.mode=4;case 4:for(;U<16;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}E.head&&(E.head.xflags=255&B,E.head.os=B>>8),512&E.flags&&(D[0]=255&B,D[1]=B>>>8&255,E.check=o(E.check,D,2,0)),U=B=0,E.mode=5;case 5:if(1024&E.flags){for(;U<16;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}E.length=B,E.head&&(E.head.extra_len=B),512&E.flags&&(D[0]=255&B,D[1]=B>>>8&255,E.check=o(E.check,D,2,0)),U=B=0}else E.head&&(E.head.extra=null);E.mode=6;case 6:if(1024&E.flags&&(te<(se=E.length)&&(se=te),se&&(E.head&&(_=E.head.extra_len-E.length,E.head.extra||(E.head.extra=new Array(E.head.extra_len)),t.arraySet(E.head.extra,J,k,se,_)),512&E.flags&&(E.check=o(E.check,J,se,k)),te-=se,k+=se,E.length-=se),E.length))break e;E.length=0,E.mode=7;case 7:if(2048&E.flags){if(te===0)break e;for(se=0;_=J[k+se++],E.head&&_&&E.length<65536&&(E.head.name+=String.fromCharCode(_)),_&&se<te;);if(512&E.flags&&(E.check=o(E.check,J,se,k)),te-=se,k+=se,_)break e}else E.head&&(E.head.name=null);E.length=0,E.mode=8;case 8:if(4096&E.flags){if(te===0)break e;for(se=0;_=J[k+se++],E.head&&_&&E.length<65536&&(E.head.comment+=String.fromCharCode(_)),_&&se<te;);if(512&E.flags&&(E.check=o(E.check,J,se,k)),te-=se,k+=se,_)break e}else E.head&&(E.head.comment=null);E.mode=9;case 9:if(512&E.flags){for(;U<16;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}if(B!==(65535&E.check)){y.msg="header crc mismatch",E.mode=30;break}U=B=0}E.head&&(E.head.hcrc=E.flags>>9&1,E.head.done=!0),y.adler=E.check=0,E.mode=12;break;case 10:for(;U<32;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}y.adler=E.check=f(B),U=B=0,E.mode=11;case 11:if(E.havedict===0)return y.next_out=ye,y.avail_out=Ce,y.next_in=k,y.avail_in=te,E.hold=B,E.bits=U,2;y.adler=E.check=1,E.mode=12;case 12:if(G===5||G===6)break e;case 13:if(E.last){B>>>=7&U,U-=7&U,E.mode=27;break}for(;U<3;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}switch(E.last=1&B,U-=1,3&(B>>>=1)){case 0:E.mode=14;break;case 1:if(W(E),E.mode=20,G!==6)break;B>>>=2,U-=2;break e;case 2:E.mode=17;break;case 3:y.msg="invalid block type",E.mode=30}B>>>=2,U-=2;break;case 14:for(B>>>=7&U,U-=7&U;U<32;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}if((65535&B)!=(B>>>16^65535)){y.msg="invalid stored block lengths",E.mode=30;break}if(E.length=65535&B,U=B=0,E.mode=15,G===6)break e;case 15:E.mode=16;case 16:if(se=E.length){if(te<se&&(se=te),Ce<se&&(se=Ce),se===0)break e;t.arraySet(_e,J,k,se,ye),te-=se,k+=se,Ce-=se,ye+=se,E.length-=se;break}E.mode=12;break;case 17:for(;U<14;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}if(E.nlen=257+(31&B),B>>>=5,U-=5,E.ndist=1+(31&B),B>>>=5,U-=5,E.ncode=4+(15&B),B>>>=4,U-=4,286<E.nlen||30<E.ndist){y.msg="too many length or distance symbols",E.mode=30;break}E.have=0,E.mode=18;case 18:for(;E.have<E.ncode;){for(;U<3;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}E.lens[Z[E.have++]]=7&B,B>>>=3,U-=3}for(;E.have<19;)E.lens[Z[E.have++]]=0;if(E.lencode=E.lendyn,E.lenbits=7,F={bits:E.lenbits},O=a(0,E.lens,0,19,E.lencode,0,E.work,F),E.lenbits=F.bits,O){y.msg="invalid code lengths set",E.mode=30;break}E.have=0,E.mode=19;case 19:for(;E.have<E.nlen+E.ndist;){for(;Be=(A=E.lencode[B&(1<<E.lenbits)-1])>>>16&255,_t=65535&A,!((z=A>>>24)<=U);){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}if(_t<16)B>>>=z,U-=z,E.lens[E.have++]=_t;else{if(_t===16){for(R=z+2;U<R;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}if(B>>>=z,U-=z,E.have===0){y.msg="invalid bit length repeat",E.mode=30;break}_=E.lens[E.have-1],se=3+(3&B),B>>>=2,U-=2}else if(_t===17){for(R=z+3;U<R;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}U-=z,_=0,se=3+(7&(B>>>=z)),B>>>=3,U-=3}else{for(R=z+7;U<R;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}U-=z,_=0,se=11+(127&(B>>>=z)),B>>>=7,U-=7}if(E.have+se>E.nlen+E.ndist){y.msg="invalid bit length repeat",E.mode=30;break}for(;se--;)E.lens[E.have++]=_}}if(E.mode===30)break;if(E.lens[256]===0){y.msg="invalid code -- missing end-of-block",E.mode=30;break}if(E.lenbits=9,F={bits:E.lenbits},O=a(d,E.lens,0,E.nlen,E.lencode,0,E.work,F),E.lenbits=F.bits,O){y.msg="invalid literal/lengths set",E.mode=30;break}if(E.distbits=6,E.distcode=E.distdyn,F={bits:E.distbits},O=a(c,E.lens,E.nlen,E.ndist,E.distcode,0,E.work,F),E.distbits=F.bits,O){y.msg="invalid distances set",E.mode=30;break}if(E.mode=20,G===6)break e;case 20:E.mode=21;case 21:if(6<=te&&258<=Ce){y.next_out=ye,y.avail_out=Ce,y.next_in=k,y.avail_in=te,E.hold=B,E.bits=U,n(y,ae),ye=y.next_out,_e=y.output,Ce=y.avail_out,k=y.next_in,J=y.input,te=y.avail_in,B=E.hold,U=E.bits,E.mode===12&&(E.back=-1);break}for(E.back=0;Be=(A=E.lencode[B&(1<<E.lenbits)-1])>>>16&255,_t=65535&A,!((z=A>>>24)<=U);){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}if(Be&&(240&Be)==0){for(ot=z,Di=Be,hi=_t;Be=(A=E.lencode[hi+((B&(1<<ot+Di)-1)>>ot)])>>>16&255,_t=65535&A,!(ot+(z=A>>>24)<=U);){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}B>>>=ot,U-=ot,E.back+=ot}if(B>>>=z,U-=z,E.back+=z,E.length=_t,Be===0){E.mode=26;break}if(32&Be){E.back=-1,E.mode=12;break}if(64&Be){y.msg="invalid literal/length code",E.mode=30;break}E.extra=15&Be,E.mode=22;case 22:if(E.extra){for(R=E.extra;U<R;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}E.length+=B&(1<<E.extra)-1,B>>>=E.extra,U-=E.extra,E.back+=E.extra}E.was=E.length,E.mode=23;case 23:for(;Be=(A=E.distcode[B&(1<<E.distbits)-1])>>>16&255,_t=65535&A,!((z=A>>>24)<=U);){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}if((240&Be)==0){for(ot=z,Di=Be,hi=_t;Be=(A=E.distcode[hi+((B&(1<<ot+Di)-1)>>ot)])>>>16&255,_t=65535&A,!(ot+(z=A>>>24)<=U);){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}B>>>=ot,U-=ot,E.back+=ot}if(B>>>=z,U-=z,E.back+=z,64&Be){y.msg="invalid distance code",E.mode=30;break}E.offset=_t,E.extra=15&Be,E.mode=24;case 24:if(E.extra){for(R=E.extra;U<R;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}E.offset+=B&(1<<E.extra)-1,B>>>=E.extra,U-=E.extra,E.back+=E.extra}if(E.offset>E.dmax){y.msg="invalid distance too far back",E.mode=30;break}E.mode=25;case 25:if(Ce===0)break e;if(se=ae-Ce,E.offset>se){if((se=E.offset-se)>E.whave&&E.sane){y.msg="invalid distance too far back",E.mode=30;break}st=se>E.wnext?(se-=E.wnext,E.wsize-se):E.wnext-se,se>E.length&&(se=E.length),yt=E.window}else yt=_e,st=ye-E.offset,se=E.length;for(Ce<se&&(se=Ce),Ce-=se,E.length-=se;_e[ye++]=yt[st++],--se;);E.length===0&&(E.mode=21);break;case 26:if(Ce===0)break e;_e[ye++]=E.length,Ce--,E.mode=21;break;case 27:if(E.wrap){for(;U<32;){if(te===0)break e;te--,B|=J[k++]<<U,U+=8}if(ae-=Ce,y.total_out+=ae,E.total+=ae,ae&&(y.adler=E.check=E.flags?o(E.check,_e,ae,ye-ae):r(E.check,_e,ae,ye-ae)),ae=Ce,(E.flags?B:f(B))!==E.check){y.msg="incorrect data check",E.mode=30;break}U=B=0}E.mode=28;case 28:if(E.wrap&&E.flags){for(;U<32;){if(te===0)break e;te--,B+=J[k++]<<U,U+=8}if(B!==(4294967295&E.total)){y.msg="incorrect length check",E.mode=30;break}U=B=0}E.mode=29;case 29:O=1;break e;case 30:O=-3;break e;case 31:return-4;case 32:default:return u}return y.next_out=ye,y.avail_out=Ce,y.next_in=k,y.avail_in=te,E.hold=B,E.bits=U,(E.wsize||ae!==y.avail_out&&E.mode<30&&(E.mode<27||G!==4))&&ce(y,y.output,y.next_out,ae-y.avail_out)?(E.mode=31,-4):(Ie-=y.avail_in,ae-=y.avail_out,y.total_in+=Ie,y.total_out+=ae,E.total+=ae,E.wrap&&ae&&(y.adler=E.check=E.flags?o(E.check,_e,ae,y.next_out-ae):r(E.check,_e,ae,y.next_out-ae)),y.data_type=E.bits+(E.last?64:0)+(E.mode===12?128:0)+(E.mode===20||E.mode===15?256:0),(Ie==0&&ae===0||G===4)&&O===h&&(O=-5),O)},e.inflateEnd=function(y){if(!y||!y.state)return u;var G=y.state;return G.window&&(G.window=null),y.state=null,h},e.inflateGetHeader=function(y,G){var E;return y&&y.state?(2&(E=y.state).wrap)==0?u:((E.head=G).done=!1,h):u},e.inflateSetDictionary=function(y,G){var E,J=G.length;return y&&y.state?(E=y.state).wrap!==0&&E.mode!==11?u:E.mode===11&&r(1,G,J,0)!==E.check?-3:ce(y,G,J,J)?(E.mode=31,-4):(E.havedict=1,h):u},e.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(s,i,e){"use strict";var t=s("../utils/common"),r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],n=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],a=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];i.exports=function(d,c,h,u,m,p,g,f){var T,C,b,v,$,N,X,w,W,ce=f.bits,y=0,G=0,E=0,J=0,_e=0,k=0,ye=0,te=0,Ce=0,B=0,U=null,Ie=0,ae=new t.Buf16(16),se=new t.Buf16(16),st=null,yt=0;for(y=0;y<=15;y++)ae[y]=0;for(G=0;G<u;G++)ae[c[h+G]]++;for(_e=ce,J=15;1<=J&&ae[J]===0;J--);if(J<_e&&(_e=J),J===0)return m[p++]=20971520,m[p++]=20971520,f.bits=1,0;for(E=1;E<J&&ae[E]===0;E++);for(_e<E&&(_e=E),y=te=1;y<=15;y++)if(te<<=1,(te-=ae[y])<0)return-1;if(0<te&&(d===0||J!==1))return-1;for(se[1]=0,y=1;y<15;y++)se[y+1]=se[y]+ae[y];for(G=0;G<u;G++)c[h+G]!==0&&(g[se[c[h+G]]++]=G);if(N=d===0?(U=st=g,19):d===1?(U=r,Ie-=257,st=o,yt-=257,256):(U=n,st=a,-1),y=E,$=p,ye=G=B=0,b=-1,v=(Ce=1<<(k=_e))-1,d===1&&852<Ce||d===2&&592<Ce)return 1;for(;;){for(X=y-ye,W=g[G]<N?(w=0,g[G]):g[G]>N?(w=st[yt+g[G]],U[Ie+g[G]]):(w=96,0),T=1<<y-ye,E=C=1<<k;m[$+(B>>ye)+(C-=T)]=X<<24|w<<16|W|0,C!==0;);for(T=1<<y-1;B&T;)T>>=1;if(T!==0?(B&=T-1,B+=T):B=0,G++,--ae[y]==0){if(y===J)break;y=c[h+g[G]]}if(_e<y&&(B&v)!==b){for(ye===0&&(ye=_e),$+=E,te=1<<(k=y-ye);k+ye<J&&!((te-=ae[k+ye])<=0);)k++,te<<=1;if(Ce+=1<<k,d===1&&852<Ce||d===2&&592<Ce)return 1;m[b=B&v]=_e<<24|k<<16|$-p|0}}return B!==0&&(m[$+B]=y-ye<<24|64<<16|0),f.bits=_e,0}},{"../utils/common":41}],51:[function(s,i,e){"use strict";i.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(s,i,e){"use strict";var t=s("../utils/common"),r=0,o=1;function n(A){for(var D=A.length;0<=--D;)A[D]=0}var a=0,d=29,c=256,h=c+1+d,u=30,m=19,p=2*h+1,g=15,f=16,T=7,C=256,b=16,v=17,$=18,N=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],X=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],w=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],W=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ce=new Array(2*(h+2));n(ce);var y=new Array(2*u);n(y);var G=new Array(512);n(G);var E=new Array(256);n(E);var J=new Array(d);n(J);var _e,k,ye,te=new Array(u);function Ce(A,D,Z,ee,M){this.static_tree=A,this.extra_bits=D,this.extra_base=Z,this.elems=ee,this.max_length=M,this.has_stree=A&&A.length}function B(A,D){this.dyn_tree=A,this.max_code=0,this.stat_desc=D}function U(A){return A<256?G[A]:G[256+(A>>>7)]}function Ie(A,D){A.pending_buf[A.pending++]=255&D,A.pending_buf[A.pending++]=D>>>8&255}function ae(A,D,Z){A.bi_valid>f-Z?(A.bi_buf|=D<<A.bi_valid&65535,Ie(A,A.bi_buf),A.bi_buf=D>>f-A.bi_valid,A.bi_valid+=Z-f):(A.bi_buf|=D<<A.bi_valid&65535,A.bi_valid+=Z)}function se(A,D,Z){ae(A,Z[2*D],Z[2*D+1])}function st(A,D){for(var Z=0;Z|=1&A,A>>>=1,Z<<=1,0<--D;);return Z>>>1}function yt(A,D,Z){var ee,M,ie=new Array(g+1),de=0;for(ee=1;ee<=g;ee++)ie[ee]=de=de+Z[ee-1]<<1;for(M=0;M<=D;M++){var re=A[2*M+1];re!==0&&(A[2*M]=st(ie[re]++,re))}}function z(A){var D;for(D=0;D<h;D++)A.dyn_ltree[2*D]=0;for(D=0;D<u;D++)A.dyn_dtree[2*D]=0;for(D=0;D<m;D++)A.bl_tree[2*D]=0;A.dyn_ltree[2*C]=1,A.opt_len=A.static_len=0,A.last_lit=A.matches=0}function Be(A){8<A.bi_valid?Ie(A,A.bi_buf):0<A.bi_valid&&(A.pending_buf[A.pending++]=A.bi_buf),A.bi_buf=0,A.bi_valid=0}function _t(A,D,Z,ee){var M=2*D,ie=2*Z;return A[M]<A[ie]||A[M]===A[ie]&&ee[D]<=ee[Z]}function ot(A,D,Z){for(var ee=A.heap[Z],M=Z<<1;M<=A.heap_len&&(M<A.heap_len&&_t(D,A.heap[M+1],A.heap[M],A.depth)&&M++,!_t(D,ee,A.heap[M],A.depth));)A.heap[Z]=A.heap[M],Z=M,M<<=1;A.heap[Z]=ee}function Di(A,D,Z){var ee,M,ie,de,re=0;if(A.last_lit!==0)for(;ee=A.pending_buf[A.d_buf+2*re]<<8|A.pending_buf[A.d_buf+2*re+1],M=A.pending_buf[A.l_buf+re],re++,ee===0?se(A,M,D):(se(A,(ie=E[M])+c+1,D),(de=N[ie])!==0&&ae(A,M-=J[ie],de),se(A,ie=U(--ee),Z),(de=X[ie])!==0&&ae(A,ee-=te[ie],de)),re<A.last_lit;);se(A,C,D)}function hi(A,D){var Z,ee,M,ie=D.dyn_tree,de=D.stat_desc.static_tree,re=D.stat_desc.has_stree,Te=D.stat_desc.elems,P=-1;for(A.heap_len=0,A.heap_max=p,Z=0;Z<Te;Z++)ie[2*Z]!==0?(A.heap[++A.heap_len]=P=Z,A.depth[Z]=0):ie[2*Z+1]=0;for(;A.heap_len<2;)ie[2*(M=A.heap[++A.heap_len]=P<2?++P:0)]=1,A.depth[M]=0,A.opt_len--,re&&(A.static_len-=de[2*M+1]);for(D.max_code=P,Z=A.heap_len>>1;1<=Z;Z--)ot(A,ie,Z);for(M=Te;Z=A.heap[1],A.heap[1]=A.heap[A.heap_len--],ot(A,ie,1),ee=A.heap[1],A.heap[--A.heap_max]=Z,A.heap[--A.heap_max]=ee,ie[2*M]=ie[2*Z]+ie[2*ee],A.depth[M]=(A.depth[Z]>=A.depth[ee]?A.depth[Z]:A.depth[ee])+1,ie[2*Z+1]=ie[2*ee+1]=M,A.heap[1]=M++,ot(A,ie,1),2<=A.heap_len;);A.heap[--A.heap_max]=A.heap[1],function(Pe,ii){var Ho,ki,Go,nt,Sa,jc,or=ii.dyn_tree,cm=ii.max_code,B_=ii.stat_desc.static_tree,$_=ii.stat_desc.has_stree,F_=ii.stat_desc.extra_bits,lm=ii.stat_desc.extra_base,Wo=ii.stat_desc.max_length,Ia=0;for(nt=0;nt<=g;nt++)Pe.bl_count[nt]=0;for(or[2*Pe.heap[Pe.heap_max]+1]=0,Ho=Pe.heap_max+1;Ho<p;Ho++)Wo<(nt=or[2*or[2*(ki=Pe.heap[Ho])+1]+1]+1)&&(nt=Wo,Ia++),or[2*ki+1]=nt,cm<ki||(Pe.bl_count[nt]++,Sa=0,lm<=ki&&(Sa=F_[ki-lm]),jc=or[2*ki],Pe.opt_len+=jc*(nt+Sa),$_&&(Pe.static_len+=jc*(B_[2*ki+1]+Sa)));if(Ia!==0){do{for(nt=Wo-1;Pe.bl_count[nt]===0;)nt--;Pe.bl_count[nt]--,Pe.bl_count[nt+1]+=2,Pe.bl_count[Wo]--,Ia-=2}while(0<Ia);for(nt=Wo;nt!==0;nt--)for(ki=Pe.bl_count[nt];ki!==0;)cm<(Go=Pe.heap[--Ho])||(or[2*Go+1]!==nt&&(Pe.opt_len+=(nt-or[2*Go+1])*or[2*Go],or[2*Go+1]=nt),ki--)}}(A,D),yt(ie,P,A.bl_count)}function _(A,D,Z){var ee,M,ie=-1,de=D[1],re=0,Te=7,P=4;for(de===0&&(Te=138,P=3),D[2*(Z+1)+1]=65535,ee=0;ee<=Z;ee++)M=de,de=D[2*(ee+1)+1],++re<Te&&M===de||(re<P?A.bl_tree[2*M]+=re:M!==0?(M!==ie&&A.bl_tree[2*M]++,A.bl_tree[2*b]++):re<=10?A.bl_tree[2*v]++:A.bl_tree[2*$]++,ie=M,P=(re=0)===de?(Te=138,3):M===de?(Te=6,3):(Te=7,4))}function O(A,D,Z){var ee,M,ie=-1,de=D[1],re=0,Te=7,P=4;for(de===0&&(Te=138,P=3),ee=0;ee<=Z;ee++)if(M=de,de=D[2*(ee+1)+1],!(++re<Te&&M===de)){if(re<P)for(;se(A,M,A.bl_tree),--re!=0;);else M!==0?(M!==ie&&(se(A,M,A.bl_tree),re--),se(A,b,A.bl_tree),ae(A,re-3,2)):re<=10?(se(A,v,A.bl_tree),ae(A,re-3,3)):(se(A,$,A.bl_tree),ae(A,re-11,7));ie=M,P=(re=0)===de?(Te=138,3):M===de?(Te=6,3):(Te=7,4)}}n(te);var F=!1;function R(A,D,Z,ee){ae(A,(a<<1)+(ee?1:0),3),function(M,ie,de,re){Be(M),re&&(Ie(M,de),Ie(M,~de)),t.arraySet(M.pending_buf,M.window,ie,de,M.pending),M.pending+=de}(A,D,Z,!0)}e._tr_init=function(A){F||(function(){var D,Z,ee,M,ie,de=new Array(g+1);for(M=ee=0;M<d-1;M++)for(J[M]=ee,D=0;D<1<<N[M];D++)E[ee++]=M;for(E[ee-1]=M,M=ie=0;M<16;M++)for(te[M]=ie,D=0;D<1<<X[M];D++)G[ie++]=M;for(ie>>=7;M<u;M++)for(te[M]=ie<<7,D=0;D<1<<X[M]-7;D++)G[256+ie++]=M;for(Z=0;Z<=g;Z++)de[Z]=0;for(D=0;D<=143;)ce[2*D+1]=8,D++,de[8]++;for(;D<=255;)ce[2*D+1]=9,D++,de[9]++;for(;D<=279;)ce[2*D+1]=7,D++,de[7]++;for(;D<=287;)ce[2*D+1]=8,D++,de[8]++;for(yt(ce,h+1,de),D=0;D<u;D++)y[2*D+1]=5,y[2*D]=st(D,5);_e=new Ce(ce,N,c+1,h,g),k=new Ce(y,X,0,u,g),ye=new Ce(new Array(0),w,0,m,T)}(),F=!0),A.l_desc=new B(A.dyn_ltree,_e),A.d_desc=new B(A.dyn_dtree,k),A.bl_desc=new B(A.bl_tree,ye),A.bi_buf=0,A.bi_valid=0,z(A)},e._tr_stored_block=R,e._tr_flush_block=function(A,D,Z,ee){var M,ie,de=0;0<A.level?(A.strm.data_type===2&&(A.strm.data_type=function(re){var Te,P=4093624447;for(Te=0;Te<=31;Te++,P>>>=1)if(1&P&&re.dyn_ltree[2*Te]!==0)return r;if(re.dyn_ltree[18]!==0||re.dyn_ltree[20]!==0||re.dyn_ltree[26]!==0)return o;for(Te=32;Te<c;Te++)if(re.dyn_ltree[2*Te]!==0)return o;return r}(A)),hi(A,A.l_desc),hi(A,A.d_desc),de=function(re){var Te;for(_(re,re.dyn_ltree,re.l_desc.max_code),_(re,re.dyn_dtree,re.d_desc.max_code),hi(re,re.bl_desc),Te=m-1;3<=Te&&re.bl_tree[2*W[Te]+1]===0;Te--);return re.opt_len+=3*(Te+1)+5+5+4,Te}(A),M=A.opt_len+3+7>>>3,(ie=A.static_len+3+7>>>3)<=M&&(M=ie)):M=ie=Z+5,Z+4<=M&&D!==-1?R(A,D,Z,ee):A.strategy===4||ie===M?(ae(A,2+(ee?1:0),3),Di(A,ce,y)):(ae(A,4+(ee?1:0),3),function(re,Te,P,Pe){var ii;for(ae(re,Te-257,5),ae(re,P-1,5),ae(re,Pe-4,4),ii=0;ii<Pe;ii++)ae(re,re.bl_tree[2*W[ii]+1],3);O(re,re.dyn_ltree,Te-1),O(re,re.dyn_dtree,P-1)}(A,A.l_desc.max_code+1,A.d_desc.max_code+1,de+1),Di(A,A.dyn_ltree,A.dyn_dtree)),z(A),ee&&Be(A)},e._tr_tally=function(A,D,Z){return A.pending_buf[A.d_buf+2*A.last_lit]=D>>>8&255,A.pending_buf[A.d_buf+2*A.last_lit+1]=255&D,A.pending_buf[A.l_buf+A.last_lit]=255&Z,A.last_lit++,D===0?A.dyn_ltree[2*Z]++:(A.matches++,D--,A.dyn_ltree[2*(E[Z]+c+1)]++,A.dyn_dtree[2*U(D)]++),A.last_lit===A.lit_bufsize-1},e._tr_align=function(A){ae(A,2,3),se(A,C,ce),function(D){D.bi_valid===16?(Ie(D,D.bi_buf),D.bi_buf=0,D.bi_valid=0):8<=D.bi_valid&&(D.pending_buf[D.pending++]=255&D.bi_buf,D.bi_buf>>=8,D.bi_valid-=8)}(A)}},{"../utils/common":41}],53:[function(s,i,e){"use strict";i.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(s,i,e){(function(t){(function(r,o){"use strict";if(!r.setImmediate){var n,a,d,c,h=1,u={},m=!1,p=r.document,g=Object.getPrototypeOf&&Object.getPrototypeOf(r);g=g&&g.setTimeout?g:r,n={}.toString.call(r.process)==="[object process]"?function(b){process.nextTick(function(){T(b)})}:function(){if(r.postMessage&&!r.importScripts){var b=!0,v=r.onmessage;return r.onmessage=function(){b=!1},r.postMessage("","*"),r.onmessage=v,b}}()?(c="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",C,!1):r.attachEvent("onmessage",C),function(b){r.postMessage(c+b,"*")}):r.MessageChannel?((d=new MessageChannel).port1.onmessage=function(b){T(b.data)},function(b){d.port2.postMessage(b)}):p&&"onreadystatechange"in p.createElement("script")?(a=p.documentElement,function(b){var v=p.createElement("script");v.onreadystatechange=function(){T(b),v.onreadystatechange=null,a.removeChild(v),v=null},a.appendChild(v)}):function(b){setTimeout(T,0,b)},g.setImmediate=function(b){typeof b!="function"&&(b=new Function(""+b));for(var v=new Array(arguments.length-1),$=0;$<v.length;$++)v[$]=arguments[$+1];var N={callback:b,args:v};return u[h]=N,n(h),h++},g.clearImmediate=f}function f(b){delete u[b]}function T(b){if(m)setTimeout(T,0,b);else{var v=u[b];if(v){m=!0;try{(function($){var N=$.callback,X=$.args;switch(X.length){case 0:N();break;case 1:N(X[0]);break;case 2:N(X[0],X[1]);break;case 3:N(X[0],X[1],X[2]);break;default:N.apply(o,X)}})(v)}finally{f(b),m=!1}}}}function C(b){b.source===r&&typeof b.data=="string"&&b.data.indexOf(c)===0&&T(+b.data.slice(c.length))}})(typeof self=="undefined"?t===void 0?this:t:self)}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}]},{},[10])(10)})});var jh=Oi((KP,e_)=>{"use strict";var Kf=e_.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(s){return s.encoding?"rtpmap:%d %s/%s/%s":s.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(s){return s.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(s){return s.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(s){return"extmap:%d"+(s.direction?"/%s":"%v")+(s["encrypt-uri"]?" %s":"%v")+" %s"+(s.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(s){return s.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(s){var i="candidate:%s %d %s %d %s %d typ %s";return i+=s.raddr!=null?" raddr %s rport %d":"%v%v",i+=s.tcptype!=null?" tcptype %s":"%v",s.generation!=null&&(i+=" generation %d"),i+=s["network-id"]!=null?" network-id %d":"%v",i+=s["network-cost"]!=null?" network-cost %d":"%v",i}},{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(s){var i="ssrc:%d";return s.attribute!=null&&(i+=" %s",s.value!=null&&(i+=":%s")),i}},{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(s){return s.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(s){return s.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(s){return"imageattr:%s %s %s"+(s.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(s){return"simulcast:%s %s"+(s.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(s){return"ts-refclk:%s"+(s.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(s){var i="mediaclk:";return i+=s.id!=null?"id=%s %s":"%v%s",i+=s.mediaClockValue!=null?"=%s":"",i+=s.rateNumerator!=null?" rate=%s":"",i+=s.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Kf).forEach(function(s){var i=Kf[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var r_=Oi(Vr=>{"use strict";var Po=function(s){return String(Number(s))===s?Number(s):s},RS=function(s,i,e,t){if(t&&!e)i[t]=Po(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=Po(s[r+1]))},yS=function(s,i,e){var t=s.name&&s.names;s.push&&!i[s.push]?i[s.push]=[]:t&&!i[s.name]&&(i[s.name]={});var r=s.push?{}:t?i[s.name]:i;RS(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},t_=jh(),bS=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Vr.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(bS).forEach(function(r){var o=r[0],n=r.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(t_[o]||[]).length;a+=1){var d=t_[o][a];if(d.reg.test(n))return yS(d,t,n)}}),i.media=e,i};var i_=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=Po(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};Vr.parseParams=function(s){return s.split(/;\s?/).reduce(i_,{})};Vr.parseFmtpConfig=Vr.parseParams;Vr.parsePayloads=function(s){return s.toString().split(" ").map(Number)};Vr.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(Po),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};Vr.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(i_,{})})};Vr.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=Po(e):(t=Po(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var o_=Oi((tU,s_)=>{"use strict";var Jh=jh(),vS=/%[sdv%]/g,NS=function(s){var i=1,e=arguments,t=e.length;return s.replace(vS,function(r){if(i>=t)return r;var o=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},ma=function(s,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[s+"="+t];if(i.names)for(var o=0;o<i.names.length;o+=1){var n=i.names[o];i.name?r.push(e[i.name][n]):r.push(e[i.names[o]])}else r.push(e[i.name]);return NS.apply(null,r)},DS=["v","o","s","i","u","e","p","c","b","t","r","z","a"],kS=["i","c","b","a"];s_.exports=function(s,i){i=i||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=i.outerOrder||DS,t=i.innerOrder||kS,r=[];return e.forEach(function(o){Jh[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(ma(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(ma(o,n,a))})})}),s.media.forEach(function(o){r.push(ma("m",Jh.m[0],o)),t.forEach(function(n){Jh[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(ma(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(d){r.push(ma(n,a,d))})})})}),r.join(`\r
3
+ `}});var yh=pi(Kt=>{"use strict";var Cr=Ah(),l_=Rh(),u_=ea();Kt.grammar=u_;Kt.write=l_;Kt.parse=Cr.parse;Kt.parseParams=Cr.parseParams;Kt.parseFmtpConfig=Cr.parseFmtpConfig;Kt.parsePayloads=Cr.parsePayloads;Kt.parseRemoteCandidates=Cr.parseRemoteCandidates;Kt.parseImageAttributes=Cr.parseImageAttributes;Kt.parseSimulcastStreamList=Cr.parseSimulcastStreamList});var hu=pi((Bx,op)=>{"use strict";var sp=op.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(s){return s.encoding?"rtpmap:%d %s/%s/%s":s.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(s){return s.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(s){return s.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(s){return"extmap:%d"+(s.direction?"/%s":"%v")+(s["encrypt-uri"]?" %s":"%v")+" %s"+(s.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(s){return s.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(s){var i="candidate:%s %d %s %d %s %d typ %s";return i+=s.raddr!=null?" raddr %s rport %d":"%v%v",i+=s.tcptype!=null?" tcptype %s":"%v",s.generation!=null&&(i+=" generation %d"),i+=s["network-id"]!=null?" network-id %d":"%v",i+=s["network-cost"]!=null?" network-cost %d":"%v",i}},{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(s){var i="ssrc:%d";return s.attribute!=null&&(i+=" %s",s.value!=null&&(i+=":%s")),i}},{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(s){return s.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(s){return s.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(s){return"imageattr:%s %s %s"+(s.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(s){return"simulcast:%s %s"+(s.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(s){return"ts-refclk:%s"+(s.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(s){var i="mediaclk:";return i+=s.id!=null?"id=%s %s":"%v%s",i+=s.mediaClockValue!=null?"=%s":"",i+=s.rateNumerator!=null?" rate=%s":"",i+=s.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(sp).forEach(function(s){var i=sp[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var cp=pi($i=>{"use strict";var Ps=function(s){return String(Number(s))===s?Number(s):s},kT=function(s,i,e,t){if(t&&!e)i[t]=Ps(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=Ps(s[r+1]))},LT=function(s,i,e){var t=s.name&&s.names;s.push&&!i[s.push]?i[s.push]=[]:t&&!i[s.name]&&(i[s.name]={});var r=s.push?{}:t?i[s.name]:i;kT(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},np=hu(),PT=RegExp.prototype.test.bind(/^([a-z])=(.*)/);$i.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(PT).forEach(function(r){var o=r[0],n=r.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(np[o]||[]).length;a+=1){var c=np[o][a];if(c.reg.test(n))return LT(c,t,n)}}),i.media=e,i};var ap=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=Ps(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};$i.parseParams=function(s){return s.split(/;\s?/).reduce(ap,{})};$i.parseFmtpConfig=$i.parseParams;$i.parsePayloads=function(s){return s.toString().split(" ").map(Number)};$i.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(Ps),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};$i.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(ap,{})})};$i.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=Ps(e):(t=Ps(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var lp=pi(($x,dp)=>{"use strict";var mu=hu(),xT=/%[sdv%]/g,wT=function(s){var i=1,e=arguments,t=e.length;return s.replace(xT,function(r){if(i>=t)return r;var o=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},en=function(s,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[s+"="+t];if(i.names)for(var o=0;o<i.names.length;o+=1){var n=i.names[o];i.name?r.push(e[i.name][n]):r.push(e[i.names[o]])}else r.push(e[i.name]);return wT.apply(null,r)},UT=["v","o","s","i","u","e","p","c","b","t","r","z","a"],VT=["i","c","b","a"];dp.exports=function(s,i){i=i||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=i.outerOrder||UT,t=i.innerOrder||VT,r=[];return e.forEach(function(o){mu[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(en(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(en(o,n,a))})})}),s.media.forEach(function(o){r.push(en("m",mu.m[0],o)),t.forEach(function(n){mu[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(en(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(c){r.push(en(n,a,c))})})})}),r.join(`\r
5
4
  `)+`\r
6
- `}});var qh=Oi(Br=>{"use strict";var Ps=r_(),OS=o_();Br.write=OS;Br.parse=Ps.parse;Br.parseParams=Ps.parseParams;Br.parseFmtpConfig=Ps.parseFmtpConfig;Br.parsePayloads=Ps.parsePayloads;Br.parseRemoteCandidates=Ps.parseRemoteCandidates;Br.parseImageAttributes=Ps.parseImageAttributes;Br.parseSimulcastStreamList=Ps.parseSimulcastStreamList});import HH from"webrtc-adapter";var zf=gt(Mt());var _m=(k=>(k[k.INVALID_PARAMETER=4096]="INVALID_PARAMETER",k[k.INVALID_OPERATION=4097]="INVALID_OPERATION",k[k.NOT_SUPPORTED=4098]="NOT_SUPPORTED",k[k.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",k[k.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",k[k.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",k[k.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",k[k.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",k[k.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",k[k.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",k[k.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",k[k.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",k[k.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",k[k.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",k[k.CLIENT_BANNED=16448]="CLIENT_BANNED",k[k.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",k[k.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",k[k.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",k[k.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",k[k.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",k[k.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",k[k.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",k[k.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",k[k.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",k[k.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",k[k.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",k[k.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",k[k.API_CALL_ABORTED=16461]="API_CALL_ABORTED",k[k.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",k[k.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",k[k.UNKNOWN=65535]="UNKNOWN",k))(_m||{}),H=_m;var Q_=function(s){for(let i in H)if(H[i]===s)return i;return"UNKNOWN"},Qc=class extends Error{constructor({name:e="RtcError",message:t,code:r=H.UNKNOWN,extraCode:o=0,constraint:n}){let a=`<${Q_(r)} 0x${r.toString(16)}>`,d=`${t}${n?` constraint: ${n}`:""}${t!=null&&t.includes(a)?"":` ${a}`}`;super(d);l(this,"code");l(this,"extraCode");l(this,"message");l(this,"originMessage");l(this,"name");l(this,"constraint");this.code=r,this.extraCode=o,this.name=e,this.message=d,this.constraint=n,this.originMessage=t}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},Q=Qc;var gm=new Date().getTime(),Yc=0,Em=function(s){gm=s,Yc=gm-new Date().getTime();let i=new Date;i.setTime(s),j.info(`baseTime from server: ${i} offset: ${Yc}`)},Xo=function(){return new Date().getTime()+Yc},Ra=function(){let s=new Date;return s.setTime(Xo()),s.toLocaleString()},Hs=function(s){let i=String(s.getMilliseconds());return"padStart"in String.prototype&&(i=i.toString().padStart(3,"0")),`${s.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${i}`};var Jt={};nr(Jt,{bytes2ms:()=>bm,convertObjectNumberToInt:()=>cn,copyProperties:()=>ym,deepClone:()=>ls,deepMerge:()=>Li,delay:()=>hr,fibonacci:()=>hs,formatedTime:()=>xm,getConstructorName:()=>an,getContainerFromElement:()=>Mm,getEnv:()=>Cm,getInternalVersion:()=>Om,getLoggerUrl:()=>lr,getMediaStreamTrackInfo:()=>Fa,getMuteStateFromFlag:()=>ur,getNetworkType:()=>hl,getNumNetworkType:()=>us,getReconnectionTimeout:()=>fi,getStringByteLength:()=>dn,getTurnServer:()=>wm,getUint32Version:()=>Va,getValueType:()=>lt,getViewListFromView:()=>Qs,glog:()=>fl,ipv4ToUint32:()=>Xs,isArray:()=>tt,isAudioWorkletSupported:()=>km,isBoolean:()=>Qe,isConstructor:()=>Js,isEmpty:()=>qs,isFunction:()=>Fe,isLangChinese:()=>pi,isMediaStreamTrack:()=>Nm,isNumber:()=>De,isObject:()=>xi,isOverseaSdkAppId:()=>nn,isPlainObject:()=>Ht,isPortrait:()=>Ua,isPromise:()=>Wr,isRemoteTrack:()=>Dm,isString:()=>Oe,isUndefined:()=>L,loadImage:()=>Ys,ms2bytes:()=>vm,ms2samples:()=>pl,normalizeUrl:()=>$a,performanceNow:()=>le,promiseAny:()=>ms,samples2ms:()=>ml,setNetworkType:()=>La,stringify:()=>oi,stringifyIncludeValue:()=>Pa,throttlePromise:()=>Ba});var ul={};nr(ul,{AUDIO_MUTE_BIT:()=>Oa,AUDIO_STAT_BIT:()=>Hr,AUX_STAT_BIT:()=>as,AUX_STREAM_MSID:()=>rl,BACKEND_ENV:()=>ka,BASE_DOC_URL:()=>wi,BASE_HOST:()=>Tm,CAPABILITIES_KEYS:()=>xa,CLASS_NAME:()=>Eg,CLOUD_CONSOLE_URL:()=>eg,CROSS_ROOM_BIT:()=>il,DATA_FREEZE_TIMING:()=>Ma,DEFAULT_ASSETS_URL:()=>ya,DOC_URL:()=>tg,DTLS_STATE_UNKNOWN:()=>mi,ENV_NAME:()=>ar,EXCHANGE_SDP_TIMEOUT:()=>dl,IS_WORKER:()=>Gs,IS_WORKLET:()=>Yo,KIBANA_EVENT:()=>Ft,LOCAL_STREAM_PUBLISH_STATE:()=>Im,LOGGER_CMD_TYPE:()=>$r,LOGGER_DOMAIN:()=>Kc,LOGGER_DOMAIN_OVERSEA:()=>el,LOG_LEVEL:()=>ri,LOG_LEVEL_NAME:()=>Sg,MAIN_STREAM_MSID:()=>en,MAX_RTT:()=>sn,MICROPHONE_COMMUNICATIONS:()=>Tg,MICROPHONE_DEFAULT:()=>cs,MUTE_ALL_BIT:()=>sg,NAME:()=>S,NETWORK_TYPE:()=>ba,NOT_SUPPORTED_H264:()=>ds,PAUSED_RETRY_COUNT:()=>cl,PEERCONNECTION_CONNECTING_TIMEOUT:()=>tn,PEER_CONNECTION_STATE:()=>Je,PEER_LEAVE_REASON:()=>ll,RECOVER_CAPTURE_INTERVAL:()=>js,REMOTE_STREAM_TYPE_AUX:()=>ol,REMOTE_STREAM_TYPE_MAIN:()=>sl,RENDER_FREEZE_TIMING:()=>pg,SCHEDULE_DOMAIN:()=>cr,SCHEDULE_TIMEOUT:()=>gg,SDP_SEMANTICS_PLAN_B:()=>Ws,SDP_SEMANTICS_UNIFIED_PLAN:()=>Gr,SECOND_HOST:()=>Z_,SIGNAL_PING_PONG_INTERVAL:()=>rg,SIGNAL_PING_TIMEOUT:()=>ig,SIGNAL_RECONNECTION_COUNT:()=>hg,SMALL_STAT_BIT:()=>Ko,SPEAKER_DEFAULT:()=>rn,STORAGE_EXPIRES_TIME:()=>va,STREAM_TYPE_BIG:()=>fg,STREAM_TYPE_SMALL:()=>_g,SUBSCRIBE_SMALL_RETRY_COUNT:()=>zs,SYNC_USER_LIST_INTERVAL:()=>mg,Scene:()=>Mi,THIRD_HOST:()=>K_,TRANSPORT_DIRECTION:()=>ke,TRTC_ERROR_ASSISTANCE:()=>tl,TRTC_QUALITY_BAD:()=>cg,TRTC_QUALITY_DISCONNECTED:()=>ug,TRTC_QUALITY_EXCELLENT:()=>ng,TRTC_QUALITY_GOOD:()=>ag,TRTC_QUALITY_POOR:()=>dg,TRTC_QUALITY_UNKNOWN:()=>og,TRTC_QUALITY_VERY_BAD:()=>lg,UPDATE_OFFER_TIMEOUT:()=>al,VIDEO_MUTE_BIT:()=>wa,VIDEO_STAT_BIT:()=>Fr,audioProfileMap:()=>Na,getRetryCount:()=>dr,getScriptDir:()=>Y_,innerVersion:()=>Qo,loggerProxy:()=>Zo,screenProfileMap:()=>Da,setLoggerProxy:()=>ns,setRetryCount:()=>nl,setVersion:()=>Zc,version:()=>Rt,videoProfileMap:()=>si});var Qo="4.15.00.1600",Rt="5.0.0";function Zc(s){Rt=s;let[i,e,t]=s.split(".").map(r=>parseInt(r,10));Qo=`${i}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var Gs=typeof importScripts!="undefined",Yo=typeof registerProcessor!="undefined",Y_=()=>{let s=Gs?self.location.href:document.currentScript.src;return s.substring(0,s.lastIndexOf("/")+1)},Zo="",ns=s=>Zo=s,Tm="web.sdk.qcloud.com",Z_="web.sdk.tencent.cn",K_="web.sdk.cloud.tencent.cn",eg="https://console.cloud.tencent.com/trtc",wi=`https://${Tm}/trtc/webrtc/v5/doc`,ya="https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/",tg=`${wi}/zh-cn/`,Kc="https://yun.tim.qq.com",el="https://apisgp.my-imcloud.com",tl="trtc_error_assistance",$r={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},ar={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},ri=(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.NONE=5]="NONE",n))(ri||{}),ig=18e3,rg=2e3,ba={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},va=7*24*3600*1e3,Na={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},si={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},Da={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},S={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},ke={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},ka={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Mi=(e=>(e.LIVE="live",e.RTC="rtc",e))(Mi||{}),Fr=1,Ko=2,as=4,Hr=8,Oa=64,wa=16,sg=112,il=128,en="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",rl="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",sl=S.MAIN,ol=S.AUXILIARY,og=0,ng=1,ag=2,dg=3,cg=4,lg=5,ug=6,mi="unknown",Je={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Sm=1/0;function nl(s){Sm=s}function dr(){return Sm}var hg=30,Ft={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},mg=1e4,al=1e4,dl=1e4,Gr="unified-plan",Ws="plan-b",ds=1028,Im=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(Im||{}),Ma=500,pg=1e3,fg=S.BIG,_g=S.SMALL,tn=10*1e3,cr={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},gg=2e3,Eg={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},cl=5,cs="default",rn=cs,Tg="communications",Sg=Object.keys(ri),ll=["normal leave","timeout leave","kick","role change"],zs=10,js=2e3,xa=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],sn=10*1e3;var Cm=function(){return new URLSearchParams(location.search).get("trtc_env")||""},nn=s=>Number(s)<14e8,lr=function(s,i){let e;Zo?e=Zo:e=nn(s)?el:Kc;let t=Math.floor(Math.random()*jo(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${s}&cmdtype=${i}`},on="unknown";function hl(){if(on!=="unknown")return on;let{userAgent:s,connection:i}=navigator,e=(s.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let t=i&&i.type&&i.type.toLowerCase(),r=i&&i.effectiveType&&i.effectiveType.toLowerCase();return r==="slow-2"&&(r="2g"),t&&(on=Rm(t,r)),on}function Rm(s,i){if(ba[s])return s;switch(s){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function La(s){on=Rm(s)}function us(){return ba[hl()]}function ym(s,i){for(let e of Reflect.ownKeys(i))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let t=Object.getOwnPropertyDescriptor(i,e)||"";Object.defineProperty(s,e,t)}return s}function bm(s,i=48e3){return ml(s/4,i)}function ml(s,i=48e3){return s*1e3/i}function vm(s,i=48e3){return pl(s,i)*4}function pl(s,i=48e3){return s*i/1e3}var fl=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},pi=()=>{let s=navigator.language;return s=s.substring(0,2),s==="zh"},Ht=function(s){if(!s||typeof s!="object"||Object.prototype.toString.call(s)!="[object Object]")return!1;let i=Object.getPrototypeOf(s);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function hs(s,i=1,e=1){return s<=1?e:hs(s-1,e,i+e)}function fi(s){return s>8?30*1e3:hs(s)*1e3}function lt(s){return Reflect.apply(Object.prototype.toString,s,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var Fe=s=>typeof s=="function",L=s=>typeof s=="undefined",Oe=s=>typeof s=="string",De=s=>typeof s=="number",Qe=s=>typeof s=="boolean",xi=s=>lt(s)==="object",tt=s=>lt(s)==="array",Nm=s=>lt(s)==="MediaStreamTrack".toLowerCase(),Dm=s=>s.isRemote,Wr=s=>lt(s)==="promise",Js=s=>Fe(s)&&s.prototype.constructor===s,an=s=>Js(s)?s.prototype.constructor.name:"",km=typeof AudioWorkletNode!="undefined";function ms(s){return new Promise((i,e)=>{let t=[];s.forEach(r=>{r.then(i).catch(o=>{t.push(o),t.length===s.length&&e(t)})})})}function le(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Am=s=>+s<10?`0${s}`:s,Om=s=>{let i=s.match(/^\d+\.\d+\.\d+/)[0];if(!i)return s;let e=i.split("."),t=Am(e[1])+Am(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},Ig=Object.prototype.hasOwnProperty,{toString:cI}=Object.prototype;function qs(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(Ht(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(Ig.call(s,i))return!1;return!0}}return!1}function ur(s,i){return{userId:i,hasAudio:!!(s&Hr),hasVideo:!!(s&Fr),hasAuxiliary:!!(s&as),hasSmall:!!(s&Ko),audioMuted:!!(s&Oa),videoMuted:!!(s&wa),audioAvailable:!!(s&Hr)&&!(s&Oa),videoAvailable:!!(s&Fr)&&!(s&wa)}}function wm(s){let i={urls:s.url.startsWith("turn:")||s.url.startsWith("turns:")?s.url:`turn:${s.url}`};return!L(s.username)&&!L(s.credential)&&(i.username=s.username,i.credential=s.credential,i.credentialType="password",L(s.credentialType)||(i.credentialType=s.credentialType)),i}function Xs(s,i=!0){if(!Oe(s))return 0;let e=s.split(".");return i?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var Li=function(s,i,e,t){if(!(xi(s)&&xi(i)))return 0;let r=0,o=Object.keys(i),n;for(let a=0,d=o.length;a<d;a++)if(n=o[a],!(L(i[n])||e&&e.includes(n)))if(xi(s[n])&&xi(i[n]))r+=Li(s[n],i[n],e,t);else{if(t&&t.includes(i[n]))continue;s[n]!==i[n]&&(s[n]=ls(i[n]),r+=1)}return r};function ls(s){if(tt(s)){let i=[];return s.forEach((e,t)=>{i[t]=ls(e)}),i}if(xi(s)){let i={};return Object.keys(s).forEach(e=>{i[e]=ls(s[e])}),i}return s}var Qs=s=>{let i=[];if(tt(s))i=[...s];else if(Oe(s)){let e=document.getElementById(s);e&&i.push(e)}else s&&i.push(s);return i},Mm=s=>Oe(s)?document.getElementById(s):s,Ag=s=>{let i=d=>d<10?`0${d}`:`${d}`,e=s.getFullYear(),t=s.getMonth()+1,r=s.getDate(),o=i(s.getHours()),n=i(s.getMinutes()),a=i(s.getSeconds());return`${e}/${t}/${r} ${o}:${n}:${a}`},xm=()=>Ag(new Date);function oi(s,{keysToInclude:i,keysToExclude:e}){try{if(tt(s))return`[${s.map(n=>oi(n,{keysToInclude:i,keysToExclude:e})).join(",")}]`;if(!Ht(s)||!tt(i)&&!tt(e))return JSON.stringify(s);let t={},r=new Set(i),o=new Set(e);return Object.keys(s).forEach(n=>{(o.size===0&&r.has(n)||r.size===0&&!o.has(n))&&(t[n]=Ht(s[n])||tt(s[n])?JSON.parse(oi(s[n],{keysToExclude:e,keysToInclude:i})):s[n])}),JSON.stringify(t)}catch(t){return"{}"}}function Pa(s,i=!1){let e=[];return Object.keys(s).forEach(t=>{i===s[t]&&e.push(t)}),oi(s,{keysToInclude:e})}function dn(s){return s.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Ua=()=>{var s,i,e,t;return(s=window.screen)!=null&&s.orientation?!!((t=(e=(i=window.screen)==null?void 0:i.orientation)==null?void 0:e.type)!=null&&t.includes("portrait")):window.orientation===0||window.orientation===180},Ys=s=>I(void 0,null,function*(){return new Promise((i,e)=>{let t;if(Oe(s))t=new Image,t.crossOrigin="anonymous",t.src=s;else if(t=s,t.complete){i(t);return}t.onload=()=>i(t),t.onerror=()=>{e(new Q({code:H.INVALID_PARAMETER,message:`load image failed, url: ${s}`}))}})}),Va=s=>{let i=s.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]<<0},cn=s=>(Object.keys(s).forEach(i=>{De(s[i])&&(i.startsWith("uint")||i.startsWith("int"))?s[i]=Math.floor(s[i]):(Ht(s[i])||tt(s[i]))&&cn(s[i])}),s);function hr(s,i){return new Promise(e=>{let t=setTimeout(e,s);i&&i(t)})}function Ba(s,i){let e=null;return function(...t){return e||(e=s.apply(i||this,t),e.finally(()=>e=null),e)}}function $a(s){return s.replace(/(^|[^:])\/{2,}/g,"$1/")}function Fa(s){var i;try{let{width:e,height:t,frameRate:r,sampleRate:o,sampleSize:n,channelCount:a}=(i=s.getSettings)==null?void 0:i.call(s),d=s.kind===S.AUDIO?`${o}x${n}@${a}`:`${e}x${t}@${r}`,c=s.stats?` stats: ${JSON.stringify(s.stats).replaceAll('"',"")}`:"";return`${s.id} ${s.readyState} muted:${s.muted} ${s.kind} ${s.label} ${d}${c}`}catch(e){return""}}function mr({url:s,body:i,method:e="POST",timeout:t,priority:r}){return new Promise((o,n)=>{if("fetch"in window)return fetch(s,{method:e,body:i,priority:r}).then(d=>d.text()).then(d=>{try{o({data:JSON.parse(d)})}catch(c){o({data:d})}},n);let a=new XMLHttpRequest;a.onreadystatechange=()=>{if(a.readyState===4)if(a.status>=200&&a.status<300)try{let d=JSON.parse(a.response);o({data:d})}catch(d){o({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=t||5e3,a.open(e,s,!0),a.send(i)})}function _l(s){return I(this,null,function*(){let i=le(),e=JSON.stringify(s);try{if(!CompressionStream||e.length<=2800)return e;let r=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),a=yield(yield(yield new Response(r)).blob()).arrayBuffer();return j.debug(`compressJSON ${e.length} -> ${a.byteLength} ${le()-i}ms`),a}catch(t){return e}})}var Cg=Object.prototype.hasOwnProperty;var Pi=s=>typeof s=="function",pr=s=>typeof s=="undefined";var Ha=s=>typeof s=="boolean";var gl=s=>s.isRemote;var Rg=function(s){if(!s||typeof s!="object"||Object.prototype.toString.call(s)!="[object Object]")return!1;let i=Object.getPrototypeOf(s);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Lm(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(Rg(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(Cg.call(s,i))return!1;return!0}}return!1}var yg=0,bg=1,Pm=2;function vg({retryFunction:s,settings:i,onError:e,onRetrying:t,onRetryFailed:r,onRetrySuccess:o,context:n}){return function(...a){let{retries:d=5,timeout:c=1e3}=i,h=0,u=-1,m=yg,p=(g,f)=>I(this,null,function*(){let T=n||this;try{let C=yield s.apply(T,a);h>0&&o&&o.call(this,h),h=0,g(C)}catch(C){let b=()=>{clearTimeout(u),h=0,m=Pm,f(C)},v=()=>{m!==Pm&&h<(Pi(d)?d():d)?(h++,m=bg,Pi(t)&&t.call(this,h,b),u=window.setTimeout(()=>{u=-1,p(g,f)},Pi(c)?c(h):c)):(b(),Pi(r)&&r.call(this,C))};Pi(e)?e.call(this,{error:C,retry:v,reject:f,retryFuncArgs:a,retriedCount:h}):v()}});return new Promise(p)}}var Ui=vg;var Zs=class{constructor(i){l(this,"userId");l(this,"remoteUserId");l(this,"id");l(this,"sdkAppId");l(this,"type");l(this,"isLocal");this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=Ha(i.isLocal)?i.isLocal:!0,this.type=this.isLocal?"":i.type}createChild(i){return Object.setPrototypeOf(i,this)}setUserId(i){this.userId=i}setSdkAppId(i){this.sdkAppId=i}log(i,e){let t=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${t?`|${t}`:""}]`),j.log(i,e,pr(this.userId)||Lm(this.userId),this.userId,this.sdkAppId)}info(...i){this.log(2,i)}debug(...i){this.log(1,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}};var lo={};nr(lo,{ANDROID_VERSION:()=>Sl,CHROME_MAJOR_VERSION:()=>qt,CHROME_VERSION:()=>od,EDGE_VERSION:()=>Wa,EDG_MAJOR_VERSION:()=>Il,EDG_VERSION:()=>za,FIREFOX_MAJOR_VERSION:()=>ln,FIREFOX_VERSION:()=>Ga,HUAWEI_VERSION:()=>td,IE_VERSION:()=>wg,IOS_MAIN_VERSION:()=>Xt,IOS_VERSION:()=>Bi,IPADQQB_VERSION:()=>Ka,IS_ANDROID:()=>ze,IS_ANDROID_WEBVIEW:()=>Pg,IS_ANY_SAFARI:()=>jr,IS_CHROME:()=>co,IS_CHROME_OS:()=>Al,IS_CHROMIUM_BASE:()=>xt,IS_DESKTOP_IOS_CHROME:()=>Ol,IS_EDG:()=>io,IS_EDGE:()=>to,IS_ELECTRON:()=>xg,IS_FIREFOX:()=>Ue,IS_HEADLESS_CHROME:()=>vl,IS_HONOR:()=>yl,IS_HUAWEI:()=>Rl,IS_HUAWEIBROWSER:()=>En,IS_IE:()=>$m,IS_IE8:()=>Og,IS_IOS:()=>Ze,IS_IOS_13_OR_14:()=>kl,IS_IOS_15_1:()=>Dl,IS_IOS_CHROME:()=>Fm,IS_IPAD:()=>eo,IS_IPADQQB:()=>fn,IS_IPAD_PRO:()=>Tl,IS_IPHONE:()=>zr,IS_IPOD:()=>Bm,IS_LINUX:()=>_n,IS_LOCAL:()=>Si,IS_MAC:()=>Ti,IS_MACQQB:()=>pn,IS_MIBROWSER:()=>gn,IS_MQQB:()=>no,IS_NATIVE_ANDROID:()=>kg,IS_OLD_ANDROID:()=>Dg,IS_OPENHARMONY:()=>bl,IS_OPPOBROWSER:()=>Sn,IS_SAFARI:()=>pt,IS_SAFARI_15_1:()=>Ug,IS_SAMSUNGBROWSER:()=>Tn,IS_SOGOU:()=>hn,IS_SOGOUM:()=>un,IS_TBS:()=>Ei,IS_UCBROWSER:()=>Cl,IS_VIVOBROWSER:()=>In,IS_WECHAT:()=>so,IS_WIN:()=>ps,IS_WQQB:()=>mn,IS_WX:()=>Mg,IS_X5MQQB:()=>oo,IS_XWEB:()=>ro,MACQQB_VERSION:()=>Za,MI_VERSION:()=>ed,MQQB_VERSION:()=>Ks,OPENHARMONY_VERSION:()=>Lg,OPPO_VERSION:()=>rd,SAFARI_VERSION:()=>fr,SAMSUNG_VERSION:()=>id,SOGOUM_VERSION:()=>ja,SOGOU_VERSION:()=>Ja,TBS_VERSION:()=>qa,UA_DATA_STRING:()=>_i,USER_AGENT:()=>gi,VIVO_VERSION:()=>sd,WECHAT_VERSION:()=>Qa,WQQB_VERSION:()=>Ya,XWEB_VERSION:()=>Xa,browserInfo:()=>Vi,getBrowserInfo:()=>Hm,getChromeMajorVersion:()=>ao,getDeviceModel:()=>fs,getGPUInfo:()=>Ml,getOSName:()=>ad,getOSNumber:()=>Cn,getOSString:()=>gr,getOSType:()=>Vg,getTerminalType:()=>xl,getUserAgentData:()=>An,getUserAgentDataPromise:()=>nd,isLocalStorageEnabled:()=>_r,isMobile:()=>wl,isVersionSmallerThan:()=>Nl});var gi=typeof navigator=="undefined"?"":navigator.userAgent,be=s=>new RegExp(s,"i").test(gi),ut=s=>{if(be(s)){let i=new RegExp(`${s}\\/([\\d.]+)`),e=gi.match(i);if(e&&e[1])return e[1]}return""},El=s=>{if(be(s)){let i=new RegExp(`${s}\\/(\\d+)`),e=gi.match(i);if(e&&e[1])return parseFloat(e[1])}return NaN},Um=/AppleWebKit\/([\d.]+)/i.exec(gi),Ng=Um?parseFloat(Um[1]):NaN,eo=be("iPad"),Tl=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&be("Macintosh"),zr=be("iPhone")&&!eo,Bm=be("iPod"),Ze=zr||eo||Bm||Tl,ze=be("Android"),Sl=function(){if(ze){let s=gi.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(s){let i=s[1]&&parseFloat(s[1]),e=s[2]&&parseFloat(s[2]);if(i&&e)return parseFloat(`${s[1]}.${s[2]}`);if(i)return i}}return NaN}(),Dg=ze&&be("webkit")&&Sl<2.3,kg=ze&&Sl<5&&Ng<537,Ue=be("Firefox"),Ga=ut("Firefox"),ln=El("Firefox"),to=be("Edge"),Wa=ut("Edge"),io=be("Edg"),za=ut("Edg"),Il=El("Edg"),un=be("SogouMobileBrowser"),ja=ut("SogouMobileBrowser"),hn=be("MetaSr\\s"),Ja=ut("MetaSr\\s"),Ei=be("TBS"),qa=ut("TBS"),ro=be("XWEB"),Xa=ut("XWEB"),Og=be("MSIE\\s8\\.0"),$m=be("MSIE\\/\\d+"),wg=function(){if($m){let s=/MSIE\s(\d+)\.\d/.exec(gi),i=s&&parseFloat(s[1]);return!i&&/Trident\/7.0/i.test(gi)&&/rv:11.0/.test(gi)&&(i=11),i}return NaN}(),so=be("(micromessenger|webbrowser)"),Qa=ut("MicroMessenger"),oo=!Ei&&be("MQQBrowser")&&be("COVC"),no=!Ei&&be("MQQBrowser")&&!be("COVC"),Ks=no||oo?ut("MQQBrowser"):"",mn=!Ei&&be(" QQBrowser"),Ya=ut(" QQBrowser"),pn=!Ei&&be("QQBrowserLite"),Za=ut("QQBrowserLite"),fn=!Ei&&be("MQBHD"),Ka=ut("MQBHD"),ps=be("Windows"),Ti=!Ze&&be("MAC OS X"),_n=!ze&&be("Linux"),Al=be("CrOS"),Mg=be("MicroMessenger"),Cl=be("UCBrowser"),xg=be("Electron"),gn=be("MiuiBrowser"),ed=ut("MiuiBrowser"),En=be("HuaweiBrowser"),Rl=be("Huawei")||be("HUAWEI"),yl=be("Honor")||be("HONOR"),td=ut("HuaweiBrowser"),Tn=be("SamsungBrowser"),id=ut("SamsungBrowser"),Sn=be("HeyTapBrowser"),rd=ut("HeyTapBrowser"),In=be("VivoBrowser"),sd=ut("VivoBrowser"),bl=be("OpenHarmony"),Lg=ut("OpenHarmony"),ao=()=>El("Chrome"),xt=be("Chrome"),co=!to&&!hn&&!un&&!Ei&&!ro&&!io&&!mn&&!gn&&!En&&!Tn&&!Sn&&!In&&xt,vl=be("HeadlessChrome"),qt=ao(),od=ut("Chrome"),pt=!xt&&!no&&!oo&&!pn&&!fn&&be("Safari"),jr=pt||Ze,fr=ut("Version"),Pg=/Android.*(wv|.0.0.0)/.test(gi),Bi=(()=>{if(Tl)return fr;if(Ze){let s=gi.match(/OS (\d+)_(\d+)/i);if(s&&s[1]){let i=s[1];return s[2]&&(i+=`.${s[2]}`),i}}return""})();function Nl(s,i){let e=s.split(".").map(r=>Number(r)),t=i.split(".").map(r=>Number(r));for(let r=0;r<Math.max(e.length,t.length);r++){let o=e[r]||0,n=t[r]||0;if(o<n)return!0;if(o>n)return!1}return!1}var Xt=Number(Bi.split(".")[0]),Ug=fr==="15.1",Dl=Bi==="15.1",kl=(()=>{let s=Number(Bi.split(".")[0]);return s===14||s===13})(),Fm=be("CriOS"),Ol=Fm&&fr==="11.1.1",Si=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",_r=(()=>{let s;return()=>{if(typeof s=="undefined")try{s=!!window.localStorage}catch(i){s=!1}return s}})(),Vi=Hm();function Hm(){let s=new Map([[Ue,["Firefox",Ga]],[io,["Edg",za]],[co,["Chrome",od]],[pt,["Safari",fr]],[Ei,["TBS",qa]],[ro,["XWEB",Xa]],[so&&zr,["WeChat",Qa]],[mn,["QQ(Win)",Ya]],[no,["QQ(Mobile)",Ks]],[oo,["QQ(Mobile X5)",Ks]],[pn,["QQ(Mac)",Za]],[fn,["QQ(iPad)",Ka]],[gn,["MI",ed]],[En,["HW",td]],[Tn,["Samsung",id]],[Sn,["OPPO",rd]],[In,["VIVO",sd]],[to,["EDGE",Wa]],[un,["SogouMobile",ja]],[hn,["Sogou",Ja]]]),i="unknown",e="unknown";return s.has(!0)&&([i,e]=s.get(!0)),{name:i,version:e}}var Ve=null,nd=navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]);function wl(){return Ve&&typeof Ve.mobile=="boolean"?Ve.mobile:ze||Ze||zr||eo||bl}var _i="";function An(){return I(this,null,function*(){if(Ve)return Ve;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return Ve=yield nd,Ve&&!_i&&(_i=`UAData: ${Ve.platform}/${Ve.platformVersion}`,Ve.architecture&&Ve.bitness&&(_i+=` ${Ve.architecture}/${Ve.bitness}`),Ve.mobile&&(_i+=" mobile"),Ve.model&&(_i+=` model: ${Ve.model.replace(/\s+/g,"/")}`),Ve.fullVersionList&&(_i+=` ${Ve.fullVersionList.filter(s=>s.brand!=="Not/A)Brand").map(s=>`${s.brand}/${s.version}`).join(",")}`)),Ve}catch(s){return null}})}function Ml(){try{let s=document.createElement("canvas"),i=s.getContext("webgl")||s.getContext("experimental-webgl");if(!i)return"";let e=i.getExtension("WEBGL_debug_renderer_info");if(e){let t=i.getParameter(e.UNMASKED_VENDOR_WEBGL),r=i.getParameter(e.UNMASKED_RENDERER_WEBGL);return`${t} ${r}`}return""}catch(s){return""}}function fs(){return(Ve==null?void 0:Ve.model)||""}var Vm=new Map([[ze,"Android"],[Ze,"iOS"],[ps,"Windows"],[Ti,"MacOS"],[_n,"Linux"],[Al,"ChromeOS"]]),ad=function(){return Vm.get(!0)?Vm.get(!0):Ve?Ve.platform:"unknown"};function Cn(){return ps?1:ze?2:Ti?3:Ze?4:_n?5:Al?6:0}var gr=()=>{let s=ad();return s+=`/${Vi.name}/${pt?Vi.version:Vi.version.split(".")[0]}`,Ve!=null&&Ve.platformVersion&&(s+=`/${Ve.platformVersion}`),Ve!=null&&Ve.architecture&&(s+=`/${Ve.architecture}`),s};function xl(){return ze?4:zr?2:eo?3:Ti?12:ps?5:_n?13:bl?22:1}function Vg(){return ze?"Android":zr?"iPhone":eo?"iPad":Ti?"Mac":ps?"Windows":_n?"Linux":"unknown"}var Gm=gt(Mt(),1),Bg=new Gm.default,x=Bg;var ni=(O=>(O.ROOM_DESTROY="1",O.JOIN_START="21",O.JOIN_SCHEDULE_SUCCESS="22",O.JOIN_SIGNAL_CONNECTION_START="23",O.JOIN_SIGNAL_CONNECTION_END="24",O.JOIN_SEND_CMD="25",O.JOIN_RECEIVED_CMD_RES="26",O.JOIN_SUCCESS="27",O.JOIN_FAILED="28",O.LEAVE_START="51",O.LEAVE_SEND_CMD="52",O.LEAVE_SUCCESS="53",O.PUBLISH_START="61",O.SEND_FIRST_VIDEO_FRAME="62",O.PUBLISH_FAILED="63",O.SUBSCRIBE_START="81",O.SUBSCRIBE_SUCCESS="82",O.SUBSCRIBE_FAILED="84",O.UNSUBSCRIBE_SUCCESS="83",O.LOCAL_TRACK_CAPTURE_START="101",O.LOCAL_TRACK_CAPTURE_SUCCESS="102",O.LOCAL_TRACK_CAPTURE_FAILED="103",O.LOCAL_TRACK_PUBLISHED="104",O.LOCAL_TRACK_UNPUBLISHED="105",O.LOCAL_TRACK_REPLACED="106",O.SWITCH_DEVICE_SUCCESS="107",O.TRACK_MUTED="108",O.TRACK_UNMUTED="109",O.REMOTE_TRACK_SUBSCRIBED="110",O.REMOTE_TRACK_UNSUBSCRIBED="111",O.LOCAL_TRACK_RECAPTURE="112",O.PLAY_TRACK_START="151",O.PLAYER_STATE_CHANGED="152",O.VIDEO_LOADED_DATA="153",O.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",O.SIGNAL_CONNECTION_STATE_CHANGED="201",O.PEER_CONNECTION_STATE_CHANGED="202",O.SINGLE_CONNECTION_STAT="203",O.SPC_RECONNECTED="204",O.HEARTBEAT_REPORT="251",O.RECEIVED_PUBLISHED_USER_LIST="252",O.REMOTE_PUBLISH_STATE_CHANGED="253",O.AUDIO_LEVEL_INTERVAL="260",O.NETWORK_QUALITY="261",O.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",O.QUALITY_LIMITATION_CHANGED="263",O.LOG="264",O.AUDIO_PROCESSOR_DEBUG="265",O.AUDIO_PROCESSOR_REFERENCE_CHANGED="266",O))(ni||{});var V=ni;var $g="%cTRTC%c%s",Fg="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",Hg="display: inline",dd=class dd{constructor(){l(this,"_isEnableUploadLog",!0);l(this,"_localJoinedUser",new Map);l(this,"_queue",[]);l(this,"_timeoutId",-1);l(this,"_logLevel",1);l(this,"_logLevelToUpload",2);!Gs&&!Yo&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){x.on(V.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.logLevelToUpload&&ri[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),x.on(V.JOIN_SUCCESS,({room:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),x.once(V.JOIN_FAILED,()=>{this.startUpload()}),x.on(V.LEAVE_SUCCESS,({room:i})=>{this.deleteJoinedUser(i.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(i){this._localJoinedUser.set(i.userId,i),this.startUpload()}deleteJoinedUser(i){this._localJoinedUser.delete(i)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let i={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return i;let e=0;for(;e<this._queue.length&&e!==50;e++){let t=this._queue[e];if(t.forAllJoinedClients)this._localJoinedUser.forEach(({userId:r,sdkAppId:o})=>{i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:o,logs:[t]})});else if(Oe(t.userId)&&De(t.sdkAppId)){let{userId:r,sdkAppId:o}=t;i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:o,logs:[t]})}}return i.map.size>0&&(i.splicedQueue=this._queue.splice(0,e)),i}upload(){return I(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:i,splicedQueue:e}=this.getLogsToUpload();if(i.size===0)return;try{let r=[...i.values()];for(let o=0;o<r.length;o++){let{userId:n,sdkAppId:a,logs:d}=r[o];yield this.uploadLogWithRetry(JSON.stringify({timestamp:Ra(),sdkAppId:String(a),userId:n,version:Rt,log:d.map(c=>c.log).join(`
7
- `)}),a),d.forEach(c=>c.uploaded=!0)}}catch(r){}let t=e.filter(r=>!r.uploaded);t.length>0&&(this._queue=t.concat(this._queue))})}uploadLogWithRetry(i,e){return Ui({retryFunction:()=>mr({url:lr(e,$r.LOG),body:i,timeout:5e3,priority:"low"}),settings:{retries:3,timeout:2e3},onError:({retry:t})=>{t()}})()}getPrefix(i){let e=new Date;return e.setTime(Xo()),`[${Hs(e)}] <${ri[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){L(ri[i])||(this._logLevel!==i&&this.info("setLogLevel",i),this._logLevel=i)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(i){if(Oe(i))return i;try{return i instanceof Error?i.toString():JSON.stringify(i)}catch(e){return""}}log(i,e,t=!0,r,o){var d;e.unshift(this.getPrefix(i));let n={log:e.reduce((c,h)=>`${c} ${this.logChunkToString(h)}`.trim(),""),level:i,userId:r,sdkAppId:o,forAllJoinedClients:t};if(x.emit(V.LOG,{log:n}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(n),i<this._logLevel)return;let a=((d=ri[i])==null?void 0:d.toLowerCase())||"info";dd.PRINT_LOG_TAG?console[a]($g,Fg,Hg,...e):console[a](...e)}debug(...i){this.log(1,i)}info(...i){this.log(2,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}createLogger(i){return new Zs(i)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;ri[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}};l(dd,"PRINT_LOG_TAG",!(Ze||ze||vl));var Ll=dd,j=new Ll;var Gg=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,s=>{let i=Math.random()*16|0;return(s=="x"?i:i&3|8).toString(16)})},Rn=Gg;var Pl=class{constructor(){l(this,"_prefix","TRTC");l(this,"_queue",new Map)}getRealKey(i){return`${this._prefix}_${i}`}checkStorage(){if(!_r())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix))try{let r=localStorage.getItem(t);if(!r)return!1;let o=JSON.parse(r);if(o&&o.expiresIn<Date.now())return!0}catch(r){return!1}return!1}).forEach(t=>localStorage.removeItem(t))}doFlush(){if(_r())try{for(let[i,e]of this._queue)localStorage.setItem(i,JSON.stringify(e))}catch(i){j.warn(i)}}getItem(i){if(!_r())return null;try{let e=localStorage.getItem(this.getRealKey(i));if(!e)return null;let t=JSON.parse(e);return t&&t.expiresIn>=Date.now()?t.value:null}catch(e){j.warn(e)}}setItem(i,e){if(_r())try{let t={expiresIn:Date.now()+va,value:e};this._queue.set(this.getRealKey(i),t)}catch(t){j.warn(t)}}deleteItem(i){if(!_r())return!1;try{return i=this.getRealKey(i),this._queue.delete(i),localStorage.removeItem(i),!0}catch(e){return j.warn(e),!1}}clear(){if(_r())try{localStorage.clear()}catch(i){j.warn(i)}}},uo=new Pl;var Wi={};nr(Wi,{HTTPS_API:()=>dE,IS_GET_CAPABILITIES_SUPPORTED:()=>ou,IS_GET_SETTINGS_SUPPORTED:()=>Gi,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>su,IS_INSERTABLE_STREAM_SUPPORTED:()=>Ar,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>Id,IS_RTC_RTP_SENDER_SUPPORTED:()=>On,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>Sd,IS_SEI_SUPPORTED:()=>Mn,IS_SPC_SUPPORTED:()=>po,basis:()=>hE,capabilityCheck:()=>au,checkSystemRequirementsInternal:()=>Td,decodeSupportStatus:()=>Ed,encodeSupportStatus:()=>eu,getBrowserInfo:()=>oE,getDisplayResolution:()=>lp,isAddTransceiverSupported:()=>Yt,isBrowserSupported:()=>tu,isGetReceiversSupported:()=>Ss,isGetSendersSupported:()=>Qr,isGetTransceiversSupported:()=>Hi,isGetUserMediaSupported:()=>up,isMediaDevicesSupported:()=>gd,isMediaSessionSupported:()=>fp,isMediaStreamTrackProcessorSupported:()=>iu,isReplaceTrackSupported:()=>ru,isRequestVideoFrameCallbackSupported:()=>Is,isSIMDSupported:()=>uE,isScreenCaptureApiAvailable:()=>Dn,isSelectedCandidatePair:()=>Xr,isSetParametersSupported:()=>wn,isSmallStreamAPISupported:()=>mp,isSmallStreamSupported:()=>kn,isStopTransceiverSupported:()=>lE,isTRTCSupported:()=>nE,isUnifiedPlanDefault:()=>cE,isUsedInHttpProtocol:()=>Ir,isWebAudioSupported:()=>hp,isWebCodecSupported:()=>pp,isWebCodecsSupported:()=>cp,isWebRTCSupported:()=>nu,isWebTransportSupported:()=>_p});var ql={};nr(ql,{AUDIO_LEVEL_SCALE:()=>ai,AudioCodecPipelineType:()=>jl,AudioDecoderDowngradeState:()=>$l,AudioPlayerMode:()=>Wl,AudioType:()=>Jm,BASIC_TYPE:()=>Jr,BannedReason:()=>zl,CONNECTION_CLOSED_REASON:()=>Vl,ClientEvent:()=>Wm,CodecType:()=>Zm,ConnectionEvent:()=>Ii,ConnectionState:()=>Qt,DECODE_FAILED_ERROR_CODE:()=>Jl,FacingMode:()=>ld,LeaveReason:()=>Ym,LocalTrackEvent:()=>yn,MULTI_VIDEO_DATA_TYPE:()=>Ai,MediaType:()=>Et,MediaTypeLabel:()=>Wg,MonitorEventId:()=>vn,MutedFlag:()=>jm,NetworkQualityValue:()=>Gl,PlayerState:()=>_s,ReceiveMode:()=>Qm,RemoteStreamType:()=>Pt,RemoteTrackEvent:()=>bn,RoomEvent:()=>Er,SceneNumber:()=>Bl,StreamEvent:()=>zm,StreamType:()=>Xm,SubscribeMediaType:()=>Ul,TIMER_TYPE:()=>$i,TRACK_ACTION:()=>Hl,TRACK_KIND:()=>Fl,TrackEvent:()=>Tr,UserRole:()=>Lt,UserRoleNumber:()=>gs,VideoCodec:()=>qr,VideoCodecPipelineType:()=>hd,VideoContentHint:()=>ho,VideoDecoderDowngradeState:()=>cd,VideoPlayerMode:()=>ud,VideoType:()=>qm});var Ii=(f=>(f.TRACK_ADDED="track-added",f.TRACK_UPDATED="track-updated",f.TRACK_SUBSCRIBED="track-subscribed",f.STREAM_ADDED="stream-added",f.STREAM_REMOVED="stream-removed",f.STREAM_UPDATED="stream-updated",f.STREAM_PUBLISHED="stream-published",f.STREAM_SUBSCRIBED="stream-subscribed",f.STREAM_UNSUBSCRIBED="stream-unsubscribed",f.STATE_CHANGED="state-changed",f.ERROR="error",f.CONNECTION_STATE_CHANGED="connection-state-changed",f.FIREWALL_RESTRICTION="firewall-restriction",f.SEI_MESSAGE="sei-message",f.CLOSED="closed",f))(Ii||{}),Vl=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(Vl||{}),Wm=(T=>(T.STREAM_ADDED="stream-added",T.STREAM_REMOVED="stream-removed",T.STREAM_UPDATED="stream-updated",T.STREAM_SUBSCRIBED="stream-subscribed",T.CONNECTION_STATE_CHANGED="connection-state-changed",T.PEER_JOIN="peer-join",T.PEER_LEAVE="peer-leave",T.MUTE_AUDIO="mute-audio",T.MUTE_VIDEO="mute-video",T.UNMUTE_AUDIO="unmute-audio",T.UNMUTE_VIDEO="unmute-video",T.CLIENT_BANNED="client-banned",T.NETWORK_QUALITY="network-quality",T.AUDIO_VOLUME="audio-volume",T.SEI_MESSAGE="sei-message",T.ERROR="error",T))(Wm||{}),zm=(o=>(o.PLAYER_STATE_CHANGED="player-state-changed",o.SCREEN_SHARING_STOPPED="screen-sharing-stopped",o.CONNECTION_STATE_CHANGED="connection-state-changed",o.DEVICE_AUTO_RECOVERED="device-auto-recovered",o.ERROR="error",o))(zm||{}),yn=(n=>(n.DEVICE_AUTO_RECOVERED="1",n.DEVICE_RECOVER_FAILED="5",n.DEVICE_CHANGED="2",n.ERROR="3",n.PUBLISH_STATE_CHANGED="4",n.ENCODE_FAILED="6",n))(yn||{}),_s=(t=>(t.PAUSED="PAUSED",t.PLAYING="PLAYING",t.STOPPED="STOPPED",t))(_s||{}),Er=(b=>(b.PEER_JOIN="peer-join",b.PEER_LEAVE="peer-leave",b.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",b.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",b.BANNED="banned",b.NETWORK_QUALITY="network-quality",b.AUDIO_VOLUME="audio-volume",b.SEI_MESSAGE="sei-message",b.ERROR="error",b.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",b.REMOTE_PUBLISHED="remote-published",b.REMOTE_UNPUBLISHED="remote-unpublished",b.FIREWALL_RESTRICTION="firewall-restriction",b.HEARTBEAT_REPORT="heartbeat-report",b.CUSTOM_MESSAGE="custom-message",b.LAYER_DATA="layerData",b.FIRST_VIDEO_FRAME="first-video-frame",b.DUMP="dump",b))(Er||{}),Tr=(a=>(a.PLAYER_STATE_CHANGED="player-state-changed",a.MUTE="mute",a.UNMUTE="unmute",a.ERROR="error",a.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",a.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",a.FIRST_VIDEO_FRAME="first-video-frame",a))(Tr||{}),bn=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(bn||{}),jm=(a=>(a[a.VIDEO=1]="VIDEO",a[a.SMALL=2]="SMALL",a[a.AUX=4]="AUX",a[a.AUDIO=8]="AUDIO",a[a.VIDEO_MUTE=16]="VIDEO_MUTE",a[a.AUX_MUTE=32]="AUX_MUTE",a[a.AUDIO_MUTE=64]="AUDIO_MUTE",a))(jm||{}),Bl=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(Bl||{}),gs=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(gs||{}),Lt=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(Lt||{}),Qt=(o=>(o.CONNECTED="CONNECTED",o.DISCONNECTED="DISCONNECTED",o.CONNECTING="CONNECTING",o.RECONNECTED="RECONNECTED",o.RECONNECTING="RECONNECTING",o))(Qt||{}),$l=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))($l||{}),cd=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(cd||{}),Fl=(t=>(t.AUDIO="audio",t.VIDEO="video",t.AUXILIARY="auxVideo",t))(Fl||{}),Hl=(e=>(e.ADD="add",e.REMOVE="remove",e))(Hl||{}),Et=(o=>(o[o.NULL=0]="NULL",o[o.AUDIO=1]="AUDIO",o[o.AUX_VIDEO=2]="AUX_VIDEO",o[o.BIG_VIDEO=4]="BIG_VIDEO",o[o.SMALL_VIDEO=8]="SMALL_VIDEO",o))(Et||{}),Wg={1:"audio",2:"auxVideo",4:"video"},Jm=(i=>(i[i.opus=111]="opus",i))(Jm||{}),qm=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(qm||{}),Xm=(e=>(e.Big="big",e.Small="small",e))(Xm||{}),Pt=(e=>(e.Main="main",e.Aux="auxiliary",e))(Pt||{}),Ai=(o=>(o[o.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",o[o.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",o[o.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",o[o.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",o[o.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",o))(Ai||{}),vn=(z=>(z[z.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",z[z.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",z[z.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",z[z.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",z[z.MUTE_AUDIO=32772]="MUTE_AUDIO",z[z.MUTE_VIDEO=32773]="MUTE_VIDEO",z[z.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",z[z.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",z[z.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",z[z.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",z[z.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",z[z.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",z[z.SWITCH_CAMERA=32780]="SWITCH_CAMERA",z[z.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",z[z.REPLACE_VIDEO=32782]="REPLACE_VIDEO",z[z.REPLACE_AUDIO=32783]="REPLACE_AUDIO",z[z.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",z[z.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",z[z.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",z[z.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",z[z.JOIN=32788]="JOIN",z[z.LEAVE=32789]="LEAVE",z[z.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",z[z.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",z[z.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",z[z.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",z[z.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",z[z.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",z[z.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",z[z.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",z[z.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",z[z.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",z[z.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",z[z.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",z[z.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",z[z.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",z[z.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",z[z.PUBLISH_AUX=32805]="PUBLISH_AUX",z[z.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",z[z.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",z[z.VIDEO_ENCODER=4004]="VIDEO_ENCODER",z[z.VIDEO_DECODER=4005]="VIDEO_DECODER",z))(vn||{}),Gl=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.EXCELLENT=1]="EXCELLENT",a[a.GOOD=2]="GOOD",a[a.POOR=3]="POOR",a[a.BAD=4]="BAD",a[a.VERY_BAD=5]="VERY_BAD",a[a.DISCONNECTED=6]="DISCONNECTED",a))(Gl||{}),Qm=(r=>(r[r.MANUAL=0]="MANUAL",r[r.AUTO_AUDIO=1]="AUTO_AUDIO",r[r.AUTO_VIDEO=2]="AUTO_VIDEO",r[r.AUTO_ALL=3]="AUTO_ALL",r))(Qm||{}),ld=(e=>(e.user="user",e.environment="environment",e))(ld||{}),ud=(t=>(t[t.ELEMENT=0]="ELEMENT",t[t.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",t[t.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",t))(ud||{}),Wl=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(Wl||{}),zl=(r=>(r.BANNED="banned",r.KICK="kick",r.USER_TIME_OUT="user_time_out",r.ROOM_DISBAND="room_disband",r))(zl||{}),Ym=(c=>(c[c.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",c[c.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",c[c.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",c[c.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",c[c.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",c[c.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",c[c.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",c[c.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",c[c.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",c))(Ym||{}),ai=1e8,Ul=class{constructor(){l(this,"mediaType",0)}set audio(i){i?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(i){i?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(i){i?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(i){i?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},Jr=(o=>(o.String="string",o.Number="number",o.Boolean="boolean",o.Array="array",o.Object="object",o))(Jr||{}),qr=(t=>(t.H264="h264",t.H265="h265",t.VP8="vp8",t))(qr||{}),hd=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.DUMP=1]="DUMP",r[r.SEI=2]="SEI",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(hd||{}),jl=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",r[r.DUMP=2]="DUMP",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(jl||{}),Zm=(t=>(t.WebRTC="webrtc",t.WebCodecs="webcodecs",t.WebAssembly="webassembly",t))(Zm||{}),Jl=(m=>(m[m.SUCCESS=0]="SUCCESS",m[m.FAILED=1]="FAILED",m[m.WEBCODEC_INIT=2]="WEBCODEC_INIT",m[m.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",m[m.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",m[m.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",m[m.WASM_INIT=6]="WASM_INIT",m[m.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",m[m.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",m[m.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",m[m.TEST=10]="TEST",m[m.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",m))(Jl||{}),ho=(r=>(r.NONE="",r.DETAIL="detail",r.MOTION="motion",r.TEXT="text",r))(ho||{}),$i=(o=>(o.INTERVAL="interval",o.TIMEOUT="timeout",o.RAF="raf",o.RIC="ric",o.INTERVAL_IN_WORKER="intervalInWorker",o))($i||{});var he={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},Tt={AVOID_REPEATED_CALL(s){return`previous ${s.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o="";return Array.isArray(i.type)?o=i.type.join("|"):o=i.type,`'${r}' must be type of ${o} when calling ${e}(), received type: ${lt(t)}.`},INVALID_PARAMETER_EMPTY({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${o} when calling ${e}(), received type: ${lt(t)}.`},INVALID_PARAMETER_RANGE({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_MIN({key:s,rule:i,fnName:e,value:t}){return`the min value of ${s||i.name} is ${i.min}, received: ${t}.`},INVALID_PARAMETER_MAX({key:s,rule:i,fnName:e,value:t}){return`the max value of ${s||i.name} is ${i.max}, received: ${t}.`},API_CALL_TIMEOUT(s){return`${s.commandDesc||s.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(s){return`SignalChannel setup failure: (errorCode: ${s.errorCode}, errorMsg: ${s.errorMsg} }).`},ERROR_MESSAGE(s){let i=`${s.type} failed`;return s.message&&(i=`${i}: ${s.message}.`),i},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(s){return`exchange sdp failed ${s.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(s){return`'${s}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(s){return`'${s}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:s,code:i}){return`Failed to join room - ${s} code: ${i}`},REJOIN_ROOM_FAILED(s){return`reJoin room: ${s.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(s){return`duplicate ${s} stream publishing, please unpublish your prev ${s} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:s,userId:i,streamType:e}){return`failed to subscribe ${i} ${e} stream, reason: ${s}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(s){return`switchRole failed, errCode: ${s.code} errMsg: ${s.message}.`},CLIENT_BANNED(s){return`client was banned because of ${s.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(s){return`startPublishCDNStream failed, errMsg: ${s.message}.`},STOP_PUBLISH_CDN_FAILED(s){return`stopPublishCDNStream failed, errMsg: ${s.message}.`},INVALID_STREAM_ID(s){return`'${s}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(s){return`cannot replace ${s.kind} track because stream has not ${s.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(s){return`startMixTranscode failed, errMsg: ${s.message}.`},STOP_MIX_TRANSCODE_FAILED(s){return`stopMixTranscode failed, errMsg: ${s.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(s){return`'${s}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:s,fnName:i})=>`'${s}' is not found in the document object when calling ${i}().`,INVALID_ELEMENT_ID_TYPE:({key:s,fnName:i,type:e})=>`the element corresponding to '${s}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`,PLAY_FAILED:s=>`${s.media} play failed, browser exception: ${s.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(s){return`${s}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(s){return`${s.signalResponse} failed, response code is ${s.code} , errMsg: ${s.message}.`},CATCH_HANDLER_ERROR({name:s,event:i}){return`an error was caught in ${s}.on('${i}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:s}){return`experimental api ${s} does not exist.`},REPEAT_JOIN:s=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:s}){return`failed to call ${s}() because client was destroyed.`},SEI_NOT_SUPPORT:s=>`not support to sendSEIMessage${s===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:s,name:i,timesInSecond:e,maxSizeInSecond:t})=>`api ${i} call ${s?"size":"times"} is over ${s?`${t} bytes`:e} in a second.`,CONNECTION_ABORTED(s){return`connection aborted due to: ${s}`},API_CALL_ABORTED(s){let i;return s.message.includes("REMOTE_STREAM_NOT_EXIST")?i=`Subscribe ${s.userId} ${s.streamType} stream aborted, reason: remote user ${s.userId} unpublished stream.`:i=`API aborted, reason: ${s.message}`,i},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:s=>`'streamType' is required when 'userId' is not '*', calling ${s}()`};var Km=(s,i)=>i?`${wi}/${s}/${i}`:`${wi}/${s}/index.html`;var zg=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let s=localStorage==null?void 0:localStorage.getItem(tl);if(s){s=JSON.parse(s);let i=document.createElement("script");i.type="text/javascript",i.text=s.message,document.body.appendChild(i);let e=window.TRTC_ERROR_INFO,t=window.TRTC_ERROR_LINK;return document.body.removeChild(i),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:t}}return{}};function pe(s){let{key:i,data:e,link:t,addDocLink:r=!0}=s,o="",n="",a="";Fe(Tt[i])?o=Tt[i](e):Oe(Tt[i])&&(o=Tt[i]);let{TRTC_ERROR_INFO:d,TRTC_ERROR_LINK:c}=zg();t?a=`${t.className}.html#${t.fnName}`:c&&c[i]&&(Fe(c[i])?a=c[i](e):Oe(c[i])&&(a=c[i]));let h=o;return pi()&&(d&&d[i]&&(Fe(d[i])?n=d[i](e):Oe(d[i])&&(n=d[i])),n&&(r?h=`${n}
8
- \u8BF7\u67E5\u770B\u6587\u6863: ${Km("zh-cn",a)}
5
+ `}});var pu=pi(Hi=>{"use strict";var Fr=cp(),BT=lp();Hi.write=BT;Hi.parse=Fr.parse;Hi.parseParams=Fr.parseParams;Hi.parseFmtpConfig=Fr.parseFmtpConfig;Hi.parsePayloads=Fr.parsePayloads;Hi.parseRemoteCandidates=Fr.parseRemoteCandidates;Hi.parseImageAttributes=Fr.parseImageAttributes;Hi.parseSimulcastStreamList=Fr.parseSimulcastStreamList});import B1 from"webrtc-adapter";var Qm=Be(Qe());var Pu=(V=>(V[V.INVALID_PARAMETER=4096]="INVALID_PARAMETER",V[V.INVALID_OPERATION=4097]="INVALID_OPERATION",V[V.NOT_SUPPORTED=4098]="NOT_SUPPORTED",V[V.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",V[V.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",V[V.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",V[V.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",V[V.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",V[V.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",V[V.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",V[V.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",V[V.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",V[V.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",V[V.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",V[V.CLIENT_BANNED=16448]="CLIENT_BANNED",V[V.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",V[V.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",V[V.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",V[V.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",V[V.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",V[V.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",V[V.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",V[V.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",V[V.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",V[V.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",V[V.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",V[V.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",V[V.API_CALL_ABORTED=16461]="API_CALL_ABORTED",V[V.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",V[V.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",V[V.UNKNOWN=65535]="UNKNOWN",V))(Pu||{}),S=Pu;var af=function(s){for(let i in S)if(S[i]===s)return i;return"UNKNOWN"},yc=class extends Error{constructor({name:e="RtcError",message:t,code:r=S.UNKNOWN,extraCode:o=0,constraint:n}){let a=`<${af(r)} 0x${r.toString(16)}>`,c=`${t}${n?` constraint: ${n}`:""}${t!=null&&t.includes(a)?"":` ${a}`}`;super(c);d(this,"code");d(this,"extraCode");d(this,"message");d(this,"originMessage");d(this,"name");d(this,"constraint");this.code=r,this.extraCode=o,this.name=e,this.message=c,this.constraint=n,this.originMessage=t}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},y=yc;var xu=new Date().getTime(),bc=0,wu=function(s){xu=s,bc=xu-new Date().getTime();let i=new Date;i.setTime(s),R.info(`baseTime from server: ${i} offset: ${bc}`)},Hs=function(){return new Date().getTime()+bc},un=function(){let s=new Date;return s.setTime(Hs()),s.toLocaleString()},hn=function(s){let i=String(s.getMilliseconds());return"padStart"in String.prototype&&(i=i.toString().padStart(3,"0")),`${s.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${i}`};var ct={};fi(ct,{bytes2ms:()=>Wu,convertObjectNumberToInt:()=>eo,copyProperties:()=>Gu,deepClone:()=>pr,deepMerge:()=>Wt,delay:()=>Ii,fibonacci:()=>_r,formatedTime:()=>Ku,getConstructorName:()=>Qr,getContainerFromElement:()=>Yu,getEnv:()=>$u,getInternalVersion:()=>zu,getLoggerUrl:()=>Ei,getMediaStreamTrackInfo:()=>Dn,getMuteStateFromFlag:()=>Si,getNetworkType:()=>Fc,getNumNetworkType:()=>fr,getReconnectionTimeout:()=>vt,getStringByteLength:()=>Zs,getTurnServer:()=>Qu,getUint32Version:()=>bn,getValueType:()=>Ee,getViewListFromView:()=>Zr,glog:()=>Gc,ipv4ToUint32:()=>Kr,isArray:()=>_e,isAudioWorkletSupported:()=>Xu,isBoolean:()=>ge,isConstructor:()=>gr,isEmpty:()=>Yr,isFunction:()=>oe,isLangChinese:()=>Nt,isMediaStreamTrack:()=>ju,isNumber:()=>j,isObject:()=>bt,isOverseaSdkAppId:()=>Ks,isPlainObject:()=>He,isPortrait:()=>yn,isPromise:()=>Xi,isRemoteTrack:()=>qu,isString:()=>K,isUndefined:()=>T,loadImage:()=>es,ms2bytes:()=>Ju,ms2samples:()=>Hc,normalizeUrl:()=>vn,performanceNow:()=>w,promiseAny:()=>Tr,samples2ms:()=>$c,setNetworkType:()=>Cn,stringify:()=>Tt,stringifyIncludeValue:()=>Rn,throttlePromise:()=>Nn});var Bc={};fi(Bc,{AUDIO_MUTE_BIT:()=>En,AUDIO_STAT_BIT:()=>ji,AUX_STAT_BIT:()=>lr,AUX_STREAM_MSID:()=>kc,BACKEND_ENV:()=>Tn,BASE_DOC_URL:()=>Ht,BASE_HOST:()=>Uu,CAPABILITIES_KEYS:()=>An,CLASS_NAME:()=>Df,CLOUD_CONSOLE_URL:()=>uf,CROSS_ROOM_BIT:()=>Mc,DATA_FREEZE_TIMING:()=>In,DEFAULT_ASSETS_URL:()=>mn,DOC_URL:()=>hf,DTLS_STATE_UNKNOWN:()=>yt,ENV_NAME:()=>_i,EXCHANGE_SDP_TIMEOUT:()=>Uc,IS_WORKER:()=>jr,IS_WORKLET:()=>Ws,KIBANA_EVENT:()=>rt,LOCAL_STREAM_PUBLISH_STATE:()=>Bu,LOGGER_CMD_TYPE:()=>Wi,LOGGER_DOMAIN:()=>vc,LOGGER_DOMAIN_OVERSEA:()=>Dc,LOG_LEVEL:()=>Rt,LOG_LEVEL_NAME:()=>Mf,MAIN_STREAM_MSID:()=>qs,MAX_RTT:()=>Qs,MICROPHONE_COMMUNICATIONS:()=>Of,MICROPHONE_DEFAULT:()=>mr,MUTE_ALL_BIT:()=>ff,NAME:()=>m,NETWORK_TYPE:()=>pn,NOT_SUPPORTED_H264:()=>ur,PAUSED_RETRY_COUNT:()=>hr,PEERCONNECTION_CONNECTING_TIMEOUT:()=>Xs,PEER_CONNECTION_STATE:()=>me,PEER_LEAVE_REASON:()=>Vc,RECOVER_CAPTURE_INTERVAL:()=>zr,REMOTE_STREAM_TYPE_AUX:()=>Pc,REMOTE_STREAM_TYPE_MAIN:()=>Lc,RENDER_FREEZE_TIMING:()=>yf,SCHEDULE_DOMAIN:()=>Ti,SCHEDULE_TIMEOUT:()=>vf,SDP_SEMANTICS_PLAN_B:()=>qr,SDP_SEMANTICS_UNIFIED_PLAN:()=>qi,SECOND_HOST:()=>df,SIGNAL_PING_PONG_INTERVAL:()=>pf,SIGNAL_PING_TIMEOUT:()=>mf,SIGNAL_RECONNECTION_COUNT:()=>Cf,SMALL_STAT_BIT:()=>js,SPEAKER_DEFAULT:()=>zs,STORAGE_EXPIRES_TIME:()=>fn,STREAM_TYPE_BIG:()=>bf,STREAM_TYPE_SMALL:()=>Nf,SUBSCRIBE_SMALL_RETRY_COUNT:()=>Xr,SYNC_USER_LIST_INTERVAL:()=>Rf,Scene:()=>Gt,THIRD_HOST:()=>lf,TRANSPORT_DIRECTION:()=>Z,TRTC_ERROR_ASSISTANCE:()=>Oc,TRTC_QUALITY_BAD:()=>Sf,TRTC_QUALITY_DISCONNECTED:()=>Af,TRTC_QUALITY_EXCELLENT:()=>gf,TRTC_QUALITY_GOOD:()=>Tf,TRTC_QUALITY_POOR:()=>Ef,TRTC_QUALITY_UNKNOWN:()=>_f,TRTC_QUALITY_VERY_BAD:()=>If,UPDATE_OFFER_TIMEOUT:()=>wc,VIDEO_MUTE_BIT:()=>Sn,VIDEO_STAT_BIT:()=>Ji,audioProfileMap:()=>_n,getRetryCount:()=>gi,getScriptDir:()=>cf,innerVersion:()=>Gs,loggerProxy:()=>Js,screenProfileMap:()=>gn,setLoggerProxy:()=>dr,setRetryCount:()=>xc,setVersion:()=>Nc,version:()=>Me,videoProfileMap:()=>gt});var Gs="4.15.00.1600",Me="5.0.0";function Nc(s){Me=s;let[i,e,t]=s.split(".").map(r=>parseInt(r,10));Gs=`${i}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var jr=typeof importScripts!="undefined",Ws=typeof registerProcessor!="undefined",cf=()=>{let s=jr?self.location.href:document.currentScript.src;return s.substring(0,s.lastIndexOf("/")+1)},Js="",dr=s=>Js=s,Uu="web.sdk.qcloud.com",df="web.sdk.tencent.cn",lf="web.sdk.cloud.tencent.cn",uf="https://console.cloud.tencent.com/trtc",Ht=`https://${Uu}/trtc/webrtc/v5/doc`,mn="https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/",hf=`${Ht}/zh-cn/`,vc="https://yun.tim.qq.com",Dc="https://apisgp.my-imcloud.com",Oc="trtc_error_assistance",Wi={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},_i={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},Rt=(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.NONE=5]="NONE",n))(Rt||{}),mf=18e3,pf=2e3,pn={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},fn=7*24*3600*1e3,_n={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},gt={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},gn={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},m={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},Z={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},Tn={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Gt=(e=>(e.LIVE="live",e.RTC="rtc",e))(Gt||{}),Ji=1,js=2,lr=4,ji=8,En=64,Sn=16,ff=112,Mc=128,qs="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",kc="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",Lc=m.MAIN,Pc=m.AUXILIARY,_f=0,gf=1,Tf=2,Ef=3,Sf=4,If=5,Af=6,yt="unknown",me={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Vu=1/0;function xc(s){Vu=s}function gi(){return Vu}var Cf=30,rt={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},Rf=1e4,wc=1e4,Uc=1e4,qi="unified-plan",qr="plan-b",ur=1028,Bu=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(Bu||{}),In=500,yf=1e3,bf=m.BIG,Nf=m.SMALL,Xs=10*1e3,Ti={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},vf=2e3,Df={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},hr=5,mr="default",zs=mr,Of="communications",Mf=Object.keys(Rt),Vc=["normal leave","timeout leave","kick","role change"],Xr=10,zr=2e3,An=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],Qs=10*1e3;var $u=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Ks=s=>Number(s)<14e8,Ei=function(s,i){let e;Js?e=Js:e=Ks(s)?Dc:vc;let t=Math.floor(Math.random()*Gi(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${s}&cmdtype=${i}`},Ys="unknown";function Fc(){if(Ys!=="unknown")return Ys;let{userAgent:s,connection:i}=navigator,e=(s.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let t=i&&i.type&&i.type.toLowerCase(),r=i&&i.effectiveType&&i.effectiveType.toLowerCase();return r==="slow-2"&&(r="2g"),t&&(Ys=Hu(t,r)),Ys}function Hu(s,i){if(pn[s])return s;switch(s){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function Cn(s){Ys=Hu(s)}function fr(){return pn[Fc()]}function Gu(s,i){for(let e of Reflect.ownKeys(i))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let t=Object.getOwnPropertyDescriptor(i,e)||"";Object.defineProperty(s,e,t)}return s}function Wu(s,i=48e3){return $c(s/4,i)}function $c(s,i=48e3){return s*1e3/i}function Ju(s,i=48e3){return Hc(s,i)*4}function Hc(s,i=48e3){return s*i/1e3}var Gc=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},Nt=()=>{let s=navigator.language;return s=s.substring(0,2),s==="zh"},He=function(s){if(!s||typeof s!="object"||Object.prototype.toString.call(s)!="[object Object]")return!1;let i=Object.getPrototypeOf(s);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function _r(s,i=1,e=1){return s<=1?e:_r(s-1,e,i+e)}function vt(s){return s>8?30*1e3:_r(s)*1e3}function Ee(s){return Reflect.apply(Object.prototype.toString,s,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var oe=s=>typeof s=="function",T=s=>typeof s=="undefined",K=s=>typeof s=="string",j=s=>typeof s=="number",ge=s=>typeof s=="boolean",bt=s=>Ee(s)==="object",_e=s=>Ee(s)==="array",ju=s=>Ee(s)==="MediaStreamTrack".toLowerCase(),qu=s=>s.isRemote,Xi=s=>Ee(s)==="promise",gr=s=>oe(s)&&s.prototype.constructor===s,Qr=s=>gr(s)?s.prototype.constructor.name:"",Xu=typeof AudioWorkletNode!="undefined";function Tr(s){return new Promise((i,e)=>{let t=[];s.forEach(r=>{r.then(i).catch(o=>{t.push(o),t.length===s.length&&e(t)})})})}function w(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Fu=s=>+s<10?`0${s}`:s,zu=s=>{let i=s.match(/^\d+\.\d+\.\d+/)[0];if(!i)return s;let e=i.split("."),t=Fu(e[1])+Fu(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},kf=Object.prototype.hasOwnProperty,{toString:gE}=Object.prototype;function Yr(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(He(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(kf.call(s,i))return!1;return!0}}return!1}function Si(s,i){return{userId:i,hasAudio:!!(s&ji),hasVideo:!!(s&Ji),hasAuxiliary:!!(s&lr),hasSmall:!!(s&js),audioMuted:!!(s&En),videoMuted:!!(s&Sn),audioAvailable:!!(s&ji)&&!(s&En),videoAvailable:!!(s&Ji)&&!(s&Sn)}}function Qu(s){let i={urls:s.url.startsWith("turn:")||s.url.startsWith("turns:")?s.url:`turn:${s.url}`};return!T(s.username)&&!T(s.credential)&&(i.username=s.username,i.credential=s.credential,i.credentialType="password",T(s.credentialType)||(i.credentialType=s.credentialType)),i}function Kr(s,i=!0){if(!K(s))return 0;let e=s.split(".");return i?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var Wt=function(s,i,e,t){if(!(bt(s)&&bt(i)))return 0;let r=0,o=Object.keys(i),n;for(let a=0,c=o.length;a<c;a++)if(n=o[a],!(T(i[n])||e&&e.includes(n)))if(bt(s[n])&&bt(i[n]))r+=Wt(s[n],i[n],e,t);else{if(t&&t.includes(i[n]))continue;s[n]!==i[n]&&(s[n]=pr(i[n]),r+=1)}return r};function pr(s){if(_e(s)){let i=[];return s.forEach((e,t)=>{i[t]=pr(e)}),i}if(bt(s)){let i={};return Object.keys(s).forEach(e=>{i[e]=pr(s[e])}),i}return s}var Zr=s=>{let i=[];if(_e(s))i=[...s];else if(K(s)){let e=document.getElementById(s);e&&i.push(e)}else s&&i.push(s);return i},Yu=s=>K(s)?document.getElementById(s):s,Lf=s=>{let i=c=>c<10?`0${c}`:`${c}`,e=s.getFullYear(),t=s.getMonth()+1,r=s.getDate(),o=i(s.getHours()),n=i(s.getMinutes()),a=i(s.getSeconds());return`${e}/${t}/${r} ${o}:${n}:${a}`},Ku=()=>Lf(new Date);function Tt(s,{keysToInclude:i,keysToExclude:e}){try{if(_e(s))return`[${s.map(n=>Tt(n,{keysToInclude:i,keysToExclude:e})).join(",")}]`;if(!He(s)||!_e(i)&&!_e(e))return JSON.stringify(s);let t={},r=new Set(i),o=new Set(e);return Object.keys(s).forEach(n=>{(o.size===0&&r.has(n)||r.size===0&&!o.has(n))&&(t[n]=He(s[n])||_e(s[n])?JSON.parse(Tt(s[n],{keysToExclude:e,keysToInclude:i})):s[n])}),JSON.stringify(t)}catch(t){return"{}"}}function Rn(s,i=!1){let e=[];return Object.keys(s).forEach(t=>{i===s[t]&&e.push(t)}),Tt(s,{keysToInclude:e})}function Zs(s){return s.replace(/[\u4e00-\u9fa5]/g,"aa").length}var yn=()=>{var s,i,e,t;return(s=window.screen)!=null&&s.orientation?!!((t=(e=(i=window.screen)==null?void 0:i.orientation)==null?void 0:e.type)!=null&&t.includes("portrait")):window.orientation===0||window.orientation===180},es=s=>p(void 0,null,function*(){return new Promise((i,e)=>{let t;if(K(s))t=new Image,t.crossOrigin="anonymous",t.src=s;else if(t=s,t.complete){i(t);return}t.onload=()=>i(t),t.onerror=()=>{e(new y({code:S.INVALID_PARAMETER,message:`load image failed, url: ${s}`}))}})}),bn=s=>{let i=s.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]<<0},eo=s=>(Object.keys(s).forEach(i=>{j(s[i])&&(i.startsWith("uint")||i.startsWith("int"))?s[i]=Math.floor(s[i]):(He(s[i])||_e(s[i]))&&eo(s[i])}),s);function Ii(s,i){return new Promise(e=>{let t=setTimeout(e,s);i&&i(t)})}function Nn(s,i){let e=null;return function(...t){return e||(e=s.apply(i||this,t),e.finally(()=>e=null),e)}}function vn(s){return s.replace(/(^|[^:])\/{2,}/g,"$1/")}function Dn(s){var i;try{let{width:e,height:t,frameRate:r,sampleRate:o,sampleSize:n,channelCount:a}=(i=s.getSettings)==null?void 0:i.call(s),c=s.kind===m.AUDIO?`${o}x${n}@${a}`:`${e}x${t}@${r}`,l=s.stats?` stats: ${JSON.stringify(s.stats).replaceAll('"',"")}`:"";return`${s.id} ${s.readyState} muted:${s.muted} ${s.kind} ${s.label} ${c}${l}`}catch(e){return""}}function Ai({url:s,body:i,method:e="POST",timeout:t,priority:r}){return new Promise((o,n)=>{if("fetch"in window)return fetch(s,{method:e,body:i,priority:r}).then(c=>c.text()).then(c=>{try{o({data:JSON.parse(c)})}catch(l){o({data:c})}},n);let a=new XMLHttpRequest;a.onreadystatechange=()=>{if(a.readyState===4)if(a.status>=200&&a.status<300)try{let c=JSON.parse(a.response);o({data:c})}catch(c){o({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=t||5e3,a.open(e,s,!0),a.send(i)})}function Wc(s){return p(this,null,function*(){let i=w(),e=JSON.stringify(s);try{if(!CompressionStream||e.length<=2800)return e;let r=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),a=yield(yield(yield new Response(r)).blob()).arrayBuffer();return R.debug(`compressJSON ${e.length} -> ${a.byteLength} ${w()-i}ms`),a}catch(t){return e}})}var Pf=Object.prototype.hasOwnProperty;var Jt=s=>typeof s=="function",Ci=s=>typeof s=="undefined";var On=s=>typeof s=="boolean";var Jc=s=>s.isRemote;var xf=function(s){if(!s||typeof s!="object"||Object.prototype.toString.call(s)!="[object Object]")return!1;let i=Object.getPrototypeOf(s);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Zu(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(xf(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(Pf.call(s,i))return!1;return!0}}return!1}var wf=0,Uf=1,eh=2;function Vf({retryFunction:s,settings:i,onError:e,onRetrying:t,onRetryFailed:r,onRetrySuccess:o,context:n}){return function(...a){let{retries:c=5,timeout:l=1e3}=i,u=0,h=-1,f=wf,_=(D,g)=>p(this,null,function*(){let A=n||this;try{let M=yield s.apply(A,a);u>0&&o&&o.call(this,u),u=0,D(M)}catch(M){let ie=()=>{clearTimeout(h),u=0,f=eh,g(M)},F=()=>{f!==eh&&u<(Jt(c)?c():c)?(u++,f=Uf,Jt(t)&&t.call(this,u,ie),h=window.setTimeout(()=>{h=-1,_(D,g)},Jt(l)?l(u):l)):(ie(),Jt(r)&&r.call(this,M))};Jt(e)?e.call(this,{error:M,retry:F,reject:g,retryFuncArgs:a,retriedCount:u}):F()}});return new Promise(_)}}var jt=Vf;var ts=class{constructor(i){d(this,"userId");d(this,"remoteUserId");d(this,"id");d(this,"sdkAppId");d(this,"type");d(this,"isLocal");this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=On(i.isLocal)?i.isLocal:!0,this.type=this.isLocal?"":i.type}createChild(i){return Object.setPrototypeOf(i,this)}setUserId(i){this.userId=i}setSdkAppId(i){this.sdkAppId=i}log(i,e){let t=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${t?`|${t}`:""}]`),R.log(i,e,Ci(this.userId)||Zu(this.userId),this.userId,this.sdkAppId)}info(...i){this.log(2,i)}debug(...i){this.log(1,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}};var hs={};fi(hs,{ANDROID_VERSION:()=>Xc,CHROME_MAJOR_VERSION:()=>dt,CHROME_VERSION:()=>qn,EDGE_VERSION:()=>kn,EDG_MAJOR_VERSION:()=>zc,EDG_VERSION:()=>Ln,FIREFOX_MAJOR_VERSION:()=>to,FIREFOX_VERSION:()=>Mn,HUAWEI_VERSION:()=>Gn,IE_VERSION:()=>Gf,IOS_MAIN_VERSION:()=>lt,IOS_VERSION:()=>Xt,IPADQQB_VERSION:()=>$n,IS_ANDROID:()=>he,IS_ANDROID_WEBVIEW:()=>qf,IS_ANY_SAFARI:()=>Qi,IS_CHROME:()=>us,IS_CHROME_OS:()=>Qc,IS_CHROMIUM_BASE:()=>Ye,IS_DESKTOP_IOS_CHROME:()=>od,IS_EDG:()=>os,IS_EDGE:()=>ss,IS_ELECTRON:()=>Jf,IS_FIREFOX:()=>ne,IS_HEADLESS_CHROME:()=>td,IS_HONOR:()=>Zc,IS_HUAWEI:()=>Kc,IS_HUAWEIBROWSER:()=>lo,IS_IE:()=>sh,IS_IE8:()=>Hf,IS_IOS:()=>Se,IS_IOS_13_OR_14:()=>sd,IS_IOS_15_1:()=>rd,IS_IOS_CHROME:()=>oh,IS_IPAD:()=>rs,IS_IPADQQB:()=>no,IS_IPAD_PRO:()=>qc,IS_IPHONE:()=>zi,IS_IPOD:()=>rh,IS_LINUX:()=>ao,IS_LOCAL:()=>Lt,IS_MAC:()=>kt,IS_MACQQB:()=>oo,IS_MIBROWSER:()=>co,IS_MQQB:()=>ds,IS_NATIVE_ANDROID:()=>$f,IS_OLD_ANDROID:()=>Ff,IS_OPENHARMONY:()=>ed,IS_OPPOBROWSER:()=>ho,IS_SAFARI:()=>Le,IS_SAFARI_15_1:()=>Xf,IS_SAMSUNGBROWSER:()=>uo,IS_SOGOU:()=>ro,IS_SOGOUM:()=>io,IS_TBS:()=>Mt,IS_UCBROWSER:()=>Yc,IS_VIVOBROWSER:()=>mo,IS_WECHAT:()=>as,IS_WIN:()=>Er,IS_WQQB:()=>so,IS_WX:()=>Wf,IS_X5MQQB:()=>cs,IS_XWEB:()=>ns,MACQQB_VERSION:()=>Fn,MI_VERSION:()=>Hn,MQQB_VERSION:()=>is,OPENHARMONY_VERSION:()=>jf,OPPO_VERSION:()=>Jn,SAFARI_VERSION:()=>Ri,SAMSUNG_VERSION:()=>Wn,SOGOUM_VERSION:()=>Pn,SOGOU_VERSION:()=>xn,TBS_VERSION:()=>wn,UA_DATA_STRING:()=>Dt,USER_AGENT:()=>Ot,VIVO_VERSION:()=>jn,WECHAT_VERSION:()=>Vn,WQQB_VERSION:()=>Bn,XWEB_VERSION:()=>Un,browserInfo:()=>qt,getBrowserInfo:()=>nh,getChromeMajorVersion:()=>ls,getDeviceModel:()=>Sr,getGPUInfo:()=>ad,getOSName:()=>Xn,getOSNumber:()=>fo,getOSString:()=>bi,getOSType:()=>zf,getTerminalType:()=>cd,getUserAgentData:()=>po,isLocalStorageEnabled:()=>yi,isMobile:()=>nd,isVersionSmallerThan:()=>id});var Ot=typeof navigator=="undefined"?"":navigator.userAgent,z=s=>new RegExp(s,"i").test(Ot),Ne=s=>{if(z(s)){let i=new RegExp(`${s}\\/([\\d.]+)`),e=Ot.match(i);if(e&&e[1])return e[1]}return""},jc=s=>{if(z(s)){let i=new RegExp(`${s}\\/(\\d+)`),e=Ot.match(i);if(e&&e[1])return parseFloat(e[1])}return NaN},th=/AppleWebKit\/([\d.]+)/i.exec(Ot),Bf=th?parseFloat(th[1]):NaN,rs=z("iPad"),qc=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&z("Macintosh"),zi=z("iPhone")&&!rs,rh=z("iPod"),Se=zi||rs||rh||qc,he=z("Android"),Xc=function(){if(he){let s=Ot.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(s){let i=s[1]&&parseFloat(s[1]),e=s[2]&&parseFloat(s[2]);if(i&&e)return parseFloat(`${s[1]}.${s[2]}`);if(i)return i}}return NaN}(),Ff=he&&z("webkit")&&Xc<2.3,$f=he&&Xc<5&&Bf<537,ne=z("Firefox"),Mn=Ne("Firefox"),to=jc("Firefox"),ss=z("Edge"),kn=Ne("Edge"),os=z("Edg"),Ln=Ne("Edg"),zc=jc("Edg"),io=z("SogouMobileBrowser"),Pn=Ne("SogouMobileBrowser"),ro=z("MetaSr\\s"),xn=Ne("MetaSr\\s"),Mt=z("TBS"),wn=Ne("TBS"),ns=z("XWEB"),Un=Ne("XWEB"),Hf=z("MSIE\\s8\\.0"),sh=z("MSIE\\/\\d+"),Gf=function(){if(sh){let s=/MSIE\s(\d+)\.\d/.exec(Ot),i=s&&parseFloat(s[1]);return!i&&/Trident\/7.0/i.test(Ot)&&/rv:11.0/.test(Ot)&&(i=11),i}return NaN}(),as=z("(micromessenger|webbrowser)"),Vn=Ne("MicroMessenger"),cs=!Mt&&z("MQQBrowser")&&z("COVC"),ds=!Mt&&z("MQQBrowser")&&!z("COVC"),is=ds||cs?Ne("MQQBrowser"):"",so=!Mt&&z(" QQBrowser"),Bn=Ne(" QQBrowser"),oo=!Mt&&z("QQBrowserLite"),Fn=Ne("QQBrowserLite"),no=!Mt&&z("MQBHD"),$n=Ne("MQBHD"),Er=z("Windows"),kt=!Se&&z("MAC OS X"),ao=!he&&z("Linux"),Qc=z("CrOS"),Wf=z("MicroMessenger"),Yc=z("UCBrowser"),Jf=z("Electron"),co=z("MiuiBrowser"),Hn=Ne("MiuiBrowser"),lo=z("HuaweiBrowser"),Kc=z("Huawei")||z("HUAWEI"),Zc=z("Honor")||z("HONOR"),Gn=Ne("HuaweiBrowser"),uo=z("SamsungBrowser"),Wn=Ne("SamsungBrowser"),ho=z("HeyTapBrowser"),Jn=Ne("HeyTapBrowser"),mo=z("VivoBrowser"),jn=Ne("VivoBrowser"),ed=z("OpenHarmony"),jf=Ne("OpenHarmony"),ls=()=>jc("Chrome"),Ye=z("Chrome"),us=!ss&&!ro&&!io&&!Mt&&!ns&&!os&&!so&&!co&&!lo&&!uo&&!ho&&!mo&&Ye,td=z("HeadlessChrome"),dt=ls(),qn=Ne("Chrome"),Le=!Ye&&!ds&&!cs&&!oo&&!no&&z("Safari"),Qi=Le||Se,Ri=Ne("Version"),qf=/Android.*(wv|.0.0.0)/.test(Ot),Xt=(()=>{if(qc)return Ri;if(Se){let s=Ot.match(/OS (\d+)_(\d+)/i);if(s&&s[1]){let i=s[1];return s[2]&&(i+=`.${s[2]}`),i}}return""})();function id(s,i){let e=s.split(".").map(r=>Number(r)),t=i.split(".").map(r=>Number(r));for(let r=0;r<Math.max(e.length,t.length);r++){let o=e[r]||0,n=t[r]||0;if(o<n)return!0;if(o>n)return!1}return!1}var lt=Number(Xt.split(".")[0]),Xf=Ri==="15.1",rd=Xt==="15.1",sd=(()=>{let s=Number(Xt.split(".")[0]);return s===14||s===13})(),oh=z("CriOS"),od=oh&&Ri==="11.1.1",Lt=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",yi=(()=>{let s;return()=>{if(typeof s=="undefined")try{s=!!window.localStorage}catch(i){s=!1}return s}})(),qt=nh();function nh(){let s=new Map([[ne,["Firefox",Mn]],[os,["Edg",Ln]],[us,["Chrome",qn]],[Le,["Safari",Ri]],[Mt,["TBS",wn]],[ns,["XWEB",Un]],[as&&zi,["WeChat",Vn]],[so,["QQ(Win)",Bn]],[ds,["QQ(Mobile)",is]],[cs,["QQ(Mobile X5)",is]],[oo,["QQ(Mac)",Fn]],[no,["QQ(iPad)",$n]],[co,["MI",Hn]],[lo,["HW",Gn]],[uo,["Samsung",Wn]],[ho,["OPPO",Jn]],[mo,["VIVO",jn]],[ss,["EDGE",kn]],[io,["SogouMobile",Pn]],[ro,["Sogou",xn]]]),i="unknown",e="unknown";return s.has(!0)&&([i,e]=s.get(!0)),{name:i,version:e}}var ae=null;function nd(){return ae&&typeof ae.mobile=="boolean"?ae.mobile:he||Se||zi||rs||ed}var Dt="";function po(){return p(this,null,function*(){if(ae)return ae;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return ae=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),ae&&!Dt&&(Dt=`UAData: ${ae.platform}/${ae.platformVersion}`,ae.architecture&&ae.bitness&&(Dt+=` ${ae.architecture}/${ae.bitness}`),ae.mobile&&(Dt+=" mobile"),ae.model&&(Dt+=` model: ${ae.model.replace(/\s+/g,"/")}`),ae.fullVersionList&&(Dt+=` ${ae.fullVersionList.filter(s=>s.brand!=="Not/A)Brand").map(s=>`${s.brand}/${s.version}`).join(",")}`)),ae}catch(s){return null}})}function ad(){try{let s=document.createElement("canvas"),i=s.getContext("webgl")||s.getContext("experimental-webgl");if(!i)return"";let e=i.getExtension("WEBGL_debug_renderer_info");if(e){let t=i.getParameter(e.UNMASKED_VENDOR_WEBGL),r=i.getParameter(e.UNMASKED_RENDERER_WEBGL);return`${t} ${r}`}return""}catch(s){return""}}function Sr(){return(ae==null?void 0:ae.model)||""}var ih=new Map([[he,"Android"],[Se,"iOS"],[Er,"Windows"],[kt,"MacOS"],[ao,"Linux"],[Qc,"ChromeOS"]]),Xn=function(){return ih.get(!0)?ih.get(!0):ae?ae.platform:"unknown"};function fo(){return Er?1:he?2:kt?3:Se?4:ao?5:Qc?6:0}var bi=()=>{let s=Xn();return s+=`/${qt.name}/${Le?qt.version:qt.version.split(".")[0]}`,ae!=null&&ae.platformVersion&&(s+=`/${ae.platformVersion}`),ae!=null&&ae.architecture&&(s+=`/${ae.architecture}`),s};function cd(){return he?4:zi?2:rs?3:kt?12:Er?5:ao?13:ed?22:1}function zf(){return he?"Android":zi?"iPhone":rs?"iPad":kt?"Mac":Er?"Windows":ao?"Linux":"unknown"}var ah=Be(Qe(),1),Qf=new ah.default,E=Qf;var zt=(J=>(J.ROOM_DESTROY="1",J.JOIN_START="21",J.JOIN_SCHEDULE_SUCCESS="22",J.JOIN_SIGNAL_CONNECTION_START="23",J.JOIN_SIGNAL_CONNECTION_END="24",J.JOIN_SEND_CMD="25",J.JOIN_RECEIVED_CMD_RES="26",J.JOIN_SUCCESS="27",J.JOIN_FAILED="28",J.LEAVE_START="51",J.LEAVE_SEND_CMD="52",J.LEAVE_SUCCESS="53",J.PUBLISH_START="61",J.SEND_FIRST_VIDEO_FRAME="62",J.PUBLISH_FAILED="63",J.SUBSCRIBE_START="81",J.SUBSCRIBE_SUCCESS="82",J.SUBSCRIBE_FAILED="84",J.UNSUBSCRIBE_SUCCESS="83",J.LOCAL_TRACK_CAPTURE_START="101",J.LOCAL_TRACK_CAPTURE_SUCCESS="102",J.LOCAL_TRACK_CAPTURE_FAILED="103",J.LOCAL_TRACK_PUBLISHED="104",J.LOCAL_TRACK_UNPUBLISHED="105",J.LOCAL_TRACK_REPLACED="106",J.SWITCH_DEVICE_SUCCESS="107",J.TRACK_MUTED="108",J.TRACK_UNMUTED="109",J.REMOTE_TRACK_SUBSCRIBED="110",J.REMOTE_TRACK_UNSUBSCRIBED="111",J.LOCAL_TRACK_RECAPTURE="112",J.LOCAL_AUDIO_STARTED="113",J.LOCAL_AUDIO_STOPPED="114",J.REMOTE_AUDIO_STARTED="115",J.REMOTE_AUDIO_STOPPED="116",J.PLAY_TRACK_START="151",J.PLAYER_STATE_CHANGED="152",J.VIDEO_LOADED_DATA="153",J.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",J.SIGNAL_CONNECTION_STATE_CHANGED="201",J.PEER_CONNECTION_STATE_CHANGED="202",J.SINGLE_CONNECTION_STAT="203",J.SPC_RECONNECTED="204",J.HEARTBEAT_REPORT="251",J.RECEIVED_PUBLISHED_USER_LIST="252",J.REMOTE_PUBLISH_STATE_CHANGED="253",J.AUDIO_LEVEL_INTERVAL="260",J.NETWORK_QUALITY="261",J.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",J.QUALITY_LIMITATION_CHANGED="263",J.LOG="264",J))(zt||{});var I=zt;var Yf="%cTRTC%c%s",Kf="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",Zf="display: inline",zn=class zn{constructor(){d(this,"_isEnableUploadLog",!0);d(this,"_localJoinedUser",new Map);d(this,"_queue",[]);d(this,"_timeoutId",-1);d(this,"_logLevel",1);d(this,"_logLevelToUpload",2);!jr&&!Ws&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){E.on(I.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.logLevelToUpload&&Rt[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),E.on(I.JOIN_SUCCESS,({room:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),E.once(I.JOIN_FAILED,()=>{this.startUpload()}),E.on(I.LEAVE_SUCCESS,({room:i})=>{this.deleteJoinedUser(i.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(i){this._localJoinedUser.set(i.userId,i),this.startUpload()}deleteJoinedUser(i){this._localJoinedUser.delete(i)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let i={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return i;let e=0;for(;e<this._queue.length&&e!==50;e++){let t=this._queue[e];if(t.forAllJoinedClients)this._localJoinedUser.forEach(({userId:r,sdkAppId:o})=>{i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:o,logs:[t]})});else if(K(t.userId)&&j(t.sdkAppId)){let{userId:r,sdkAppId:o}=t;i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:o,logs:[t]})}}return i.map.size>0&&(i.splicedQueue=this._queue.splice(0,e)),i}upload(){return p(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:i,splicedQueue:e}=this.getLogsToUpload();if(i.size===0)return;try{let r=[...i.values()];for(let o=0;o<r.length;o++){let{userId:n,sdkAppId:a,logs:c}=r[o];yield this.uploadLogWithRetry(JSON.stringify({timestamp:un(),sdkAppId:String(a),userId:n,version:Me,log:c.map(l=>l.log).join(`
6
+ `)}),a),c.forEach(l=>l.uploaded=!0)}}catch(r){}let t=e.filter(r=>!r.uploaded);t.length>0&&(this._queue=t.concat(this._queue))})}uploadLogWithRetry(i,e){return jt({retryFunction:()=>Ai({url:Ei(e,Wi.LOG),body:i,timeout:5e3,priority:"low"}),settings:{retries:3,timeout:2e3},onError:({retry:t})=>{t()}})()}getPrefix(i){let e=new Date;return e.setTime(Hs()),`[${hn(e)}] <${Rt[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){T(Rt[i])||(this._logLevel!==i&&this.info("setLogLevel",i),this._logLevel=i)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(i){if(K(i))return i;try{return i instanceof Error?i.toString():JSON.stringify(i)}catch(e){return""}}log(i,e,t=!0,r,o){var c;e.unshift(this.getPrefix(i));let n={log:e.reduce((l,u)=>`${l} ${this.logChunkToString(u)}`.trim(),""),level:i,userId:r,sdkAppId:o,forAllJoinedClients:t};if(E.emit(I.LOG,{log:n}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(n),i<this._logLevel)return;let a=((c=Rt[i])==null?void 0:c.toLowerCase())||"info";zn.PRINT_LOG_TAG?console[a](Yf,Kf,Zf,...e):console[a](...e)}debug(...i){this.log(1,i)}info(...i){this.log(2,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}createLogger(i){return new ts(i)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;Rt[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}};d(zn,"PRINT_LOG_TAG",!(Se||he||td));var dd=zn,R=new dd;var e_=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,s=>{let i=Math.random()*16|0;return(s=="x"?i:i&3|8).toString(16)})},_o=e_;var ld=class{constructor(){d(this,"_prefix","TRTC");d(this,"_queue",new Map)}getRealKey(i){return`${this._prefix}_${i}`}checkStorage(){if(!yi())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix))try{let r=localStorage.getItem(t);if(!r)return!1;let o=JSON.parse(r);if(o&&o.expiresIn<Date.now())return!0}catch(r){return!1}return!1}).forEach(t=>localStorage.removeItem(t))}doFlush(){if(yi())try{for(let[i,e]of this._queue)localStorage.setItem(i,JSON.stringify(e))}catch(i){R.warn(i)}}getItem(i){if(!yi())return null;try{let e=localStorage.getItem(this.getRealKey(i));if(!e)return null;let t=JSON.parse(e);return t&&t.expiresIn>=Date.now()?t.value:null}catch(e){R.warn(e)}}setItem(i,e){if(yi())try{let t={expiresIn:Date.now()+fn,value:e};this._queue.set(this.getRealKey(i),t)}catch(t){R.warn(t)}}deleteItem(i){if(!yi())return!1;try{return i=this.getRealKey(i),this._queue.delete(i),localStorage.removeItem(i),!0}catch(e){return R.warn(e),!1}}clear(){if(yi())try{localStorage.clear()}catch(i){R.warn(i)}}},ms=new ld;var ti={};fi(ti,{HTTPS_API:()=>E_,IS_GET_CAPABILITIES_SUPPORTED:()=>Ld,IS_GET_SETTINGS_SUPPORTED:()=>ei,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>kd,IS_INSERTABLE_STREAM_SUPPORTED:()=>Oi,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>ca,IS_RTC_RTP_SENDER_SUPPORTED:()=>Co,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>aa,IS_SEI_SUPPORTED:()=>yo,IS_SPC_SUPPORTED:()=>_s,basis:()=>C_,capabilityCheck:()=>xd,checkSystemRequirementsInternal:()=>na,decodeSupportStatus:()=>oa,encodeSupportStatus:()=>vd,getBrowserInfo:()=>__,getDisplayResolution:()=>vh,isAddTransceiverSupported:()=>ht,isBrowserSupported:()=>Dd,isGetReceiversSupported:()=>yr,isGetSendersSupported:()=>er,isGetTransceiversSupported:()=>Zt,isGetUserMediaSupported:()=>Dh,isMediaDevicesSupported:()=>sa,isMediaSessionSupported:()=>Lh,isMediaStreamTrackProcessorSupported:()=>Od,isReplaceTrackSupported:()=>Md,isRequestVideoFrameCallbackSupported:()=>br,isSIMDSupported:()=>A_,isScreenCaptureApiAvailable:()=>Io,isSelectedCandidatePair:()=>Zi,isSetParametersSupported:()=>Ro,isSmallStreamAPISupported:()=>Mh,isSmallStreamSupported:()=>Ao,isStopTransceiverSupported:()=>I_,isTRTCSupported:()=>g_,isUnifiedPlanDefault:()=>S_,isUsedInHttpProtocol:()=>Di,isWebAudioSupported:()=>Oh,isWebCodecSupported:()=>kh,isWebCodecsSupported:()=>Nh,isWebRTCSupported:()=>Pd,isWebTransportSupported:()=>Ph});var Ad={};fi(Ad,{AUDIO_LEVEL_SCALE:()=>Et,AudioCodecPipelineType:()=>Sd,AudioDecoderDowngradeState:()=>pd,AudioPlayerMode:()=>Td,AudioType:()=>uh,BASIC_TYPE:()=>Yi,BannedReason:()=>Ed,CONNECTION_CLOSED_REASON:()=>hd,ClientEvent:()=>ch,CodecType:()=>_h,ConnectionEvent:()=>Pt,ConnectionState:()=>ut,DECODE_FAILED_ERROR_CODE:()=>Id,FacingMode:()=>Yn,LeaveReason:()=>fh,LocalTrackEvent:()=>go,MULTI_VIDEO_DATA_TYPE:()=>xt,MediaType:()=>Pe,MediaTypeLabel:()=>t_,MonitorEventId:()=>Eo,MutedFlag:()=>lh,NetworkQualityValue:()=>gd,PlayerState:()=>Ir,ReceiveMode:()=>ph,RemoteStreamType:()=>st,RemoteTrackEvent:()=>To,RoomEvent:()=>Ni,SceneNumber:()=>md,StreamEvent:()=>dh,StreamType:()=>mh,SubscribeMediaType:()=>ud,TIMER_TYPE:()=>Yt,TRACK_ACTION:()=>_d,TRACK_KIND:()=>fd,TrackEvent:()=>Qt,UserRole:()=>Ke,UserRoleNumber:()=>Ar,VideoCodec:()=>Ki,VideoCodecPipelineType:()=>Zn,VideoContentHint:()=>ps,VideoDecoderDowngradeState:()=>Qn,VideoPlayerMode:()=>Kn,VideoType:()=>hh});var Pt=(g=>(g.TRACK_ADDED="track-added",g.TRACK_UPDATED="track-updated",g.TRACK_SUBSCRIBED="track-subscribed",g.STREAM_ADDED="stream-added",g.STREAM_REMOVED="stream-removed",g.STREAM_UPDATED="stream-updated",g.STREAM_PUBLISHED="stream-published",g.STREAM_SUBSCRIBED="stream-subscribed",g.STREAM_UNSUBSCRIBED="stream-unsubscribed",g.STATE_CHANGED="state-changed",g.ERROR="error",g.CONNECTION_STATE_CHANGED="connection-state-changed",g.FIREWALL_RESTRICTION="firewall-restriction",g.SEI_MESSAGE="sei-message",g.CLOSED="closed",g))(Pt||{}),hd=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(hd||{}),ch=(A=>(A.STREAM_ADDED="stream-added",A.STREAM_REMOVED="stream-removed",A.STREAM_UPDATED="stream-updated",A.STREAM_SUBSCRIBED="stream-subscribed",A.CONNECTION_STATE_CHANGED="connection-state-changed",A.PEER_JOIN="peer-join",A.PEER_LEAVE="peer-leave",A.MUTE_AUDIO="mute-audio",A.MUTE_VIDEO="mute-video",A.UNMUTE_AUDIO="unmute-audio",A.UNMUTE_VIDEO="unmute-video",A.CLIENT_BANNED="client-banned",A.NETWORK_QUALITY="network-quality",A.AUDIO_VOLUME="audio-volume",A.SEI_MESSAGE="sei-message",A.ERROR="error",A))(ch||{}),dh=(o=>(o.PLAYER_STATE_CHANGED="player-state-changed",o.SCREEN_SHARING_STOPPED="screen-sharing-stopped",o.CONNECTION_STATE_CHANGED="connection-state-changed",o.DEVICE_AUTO_RECOVERED="device-auto-recovered",o.ERROR="error",o))(dh||{}),go=(n=>(n.DEVICE_AUTO_RECOVERED="1",n.DEVICE_RECOVER_FAILED="5",n.DEVICE_CHANGED="2",n.ERROR="3",n.PUBLISH_STATE_CHANGED="4",n.ENCODE_FAILED="6",n))(go||{}),Ir=(t=>(t.PAUSED="PAUSED",t.PLAYING="PLAYING",t.STOPPED="STOPPED",t))(Ir||{}),Ni=(F=>(F.PEER_JOIN="peer-join",F.PEER_LEAVE="peer-leave",F.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",F.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",F.BANNED="banned",F.NETWORK_QUALITY="network-quality",F.AUDIO_VOLUME="audio-volume",F.SEI_MESSAGE="sei-message",F.ERROR="error",F.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",F.REMOTE_PUBLISHED="remote-published",F.REMOTE_UNPUBLISHED="remote-unpublished",F.FIREWALL_RESTRICTION="firewall-restriction",F.HEARTBEAT_REPORT="heartbeat-report",F.CUSTOM_MESSAGE="custom-message",F.LAYER_DATA="layerData",F.FIRST_VIDEO_FRAME="first-video-frame",F.DUMP="dump",F.AUDIO_FRAME="audio-frame",F))(Ni||{}),Qt=(a=>(a.PLAYER_STATE_CHANGED="player-state-changed",a.MUTE="mute",a.UNMUTE="unmute",a.ERROR="error",a.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",a.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",a.FIRST_VIDEO_FRAME="first-video-frame",a))(Qt||{}),To=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(To||{}),lh=(a=>(a[a.VIDEO=1]="VIDEO",a[a.SMALL=2]="SMALL",a[a.AUX=4]="AUX",a[a.AUDIO=8]="AUDIO",a[a.VIDEO_MUTE=16]="VIDEO_MUTE",a[a.AUX_MUTE=32]="AUX_MUTE",a[a.AUDIO_MUTE=64]="AUDIO_MUTE",a))(lh||{}),md=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(md||{}),Ar=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(Ar||{}),Ke=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(Ke||{}),ut=(o=>(o.CONNECTED="CONNECTED",o.DISCONNECTED="DISCONNECTED",o.CONNECTING="CONNECTING",o.RECONNECTED="RECONNECTED",o.RECONNECTING="RECONNECTING",o))(ut||{}),pd=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(pd||{}),Qn=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(Qn||{}),fd=(t=>(t.AUDIO="audio",t.VIDEO="video",t.AUXILIARY="auxVideo",t))(fd||{}),_d=(e=>(e.ADD="add",e.REMOVE="remove",e))(_d||{}),Pe=(o=>(o[o.NULL=0]="NULL",o[o.AUDIO=1]="AUDIO",o[o.AUX_VIDEO=2]="AUX_VIDEO",o[o.BIG_VIDEO=4]="BIG_VIDEO",o[o.SMALL_VIDEO=8]="SMALL_VIDEO",o))(Pe||{}),t_={1:"audio",2:"auxVideo",4:"video"},uh=(i=>(i[i.opus=111]="opus",i))(uh||{}),hh=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(hh||{}),mh=(e=>(e.Big="big",e.Small="small",e))(mh||{}),st=(e=>(e.Main="main",e.Aux="auxiliary",e))(st||{}),xt=(o=>(o[o.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",o[o.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",o[o.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",o[o.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",o[o.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",o))(xt||{}),Eo=(O=>(O[O.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",O[O.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",O[O.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",O[O.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",O[O.MUTE_AUDIO=32772]="MUTE_AUDIO",O[O.MUTE_VIDEO=32773]="MUTE_VIDEO",O[O.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",O[O.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",O[O.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",O[O.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",O[O.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",O[O.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",O[O.SWITCH_CAMERA=32780]="SWITCH_CAMERA",O[O.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",O[O.REPLACE_VIDEO=32782]="REPLACE_VIDEO",O[O.REPLACE_AUDIO=32783]="REPLACE_AUDIO",O[O.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",O[O.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",O[O.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",O[O.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",O[O.JOIN=32788]="JOIN",O[O.LEAVE=32789]="LEAVE",O[O.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",O[O.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",O[O.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",O[O.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",O[O.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",O[O.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",O[O.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",O[O.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",O[O.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",O[O.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",O[O.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",O[O.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",O[O.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",O[O.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",O[O.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",O[O.PUBLISH_AUX=32805]="PUBLISH_AUX",O[O.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",O[O.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",O[O.VIDEO_ENCODER=4004]="VIDEO_ENCODER",O[O.VIDEO_DECODER=4005]="VIDEO_DECODER",O))(Eo||{}),gd=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.EXCELLENT=1]="EXCELLENT",a[a.GOOD=2]="GOOD",a[a.POOR=3]="POOR",a[a.BAD=4]="BAD",a[a.VERY_BAD=5]="VERY_BAD",a[a.DISCONNECTED=6]="DISCONNECTED",a))(gd||{}),ph=(r=>(r[r.MANUAL=0]="MANUAL",r[r.AUTO_AUDIO=1]="AUTO_AUDIO",r[r.AUTO_VIDEO=2]="AUTO_VIDEO",r[r.AUTO_ALL=3]="AUTO_ALL",r))(ph||{}),Yn=(e=>(e.user="user",e.environment="environment",e))(Yn||{}),Kn=(t=>(t[t.ELEMENT=0]="ELEMENT",t[t.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",t[t.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",t))(Kn||{}),Td=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(Td||{}),Ed=(r=>(r.BANNED="banned",r.KICK="kick",r.USER_TIME_OUT="user_time_out",r.ROOM_DISBAND="room_disband",r))(Ed||{}),fh=(l=>(l[l.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",l[l.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",l[l.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",l[l.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",l[l.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",l[l.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",l[l.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",l[l.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",l[l.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",l))(fh||{}),Et=1e8,ud=class{constructor(){d(this,"mediaType",0)}set audio(i){i?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(i){i?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(i){i?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(i){i?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},Yi=(o=>(o.String="string",o.Number="number",o.Boolean="boolean",o.Array="array",o.Object="object",o))(Yi||{}),Ki=(t=>(t.H264="h264",t.H265="h265",t.VP8="vp8",t))(Ki||{}),Zn=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.DUMP=1]="DUMP",r[r.SEI=2]="SEI",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(Zn||{}),Sd=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",r[r.DUMP=2]="DUMP",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(Sd||{}),_h=(t=>(t.WebRTC="webrtc",t.WebCodecs="webcodecs",t.WebAssembly="webassembly",t))(_h||{}),Id=(f=>(f[f.SUCCESS=0]="SUCCESS",f[f.FAILED=1]="FAILED",f[f.WEBCODEC_INIT=2]="WEBCODEC_INIT",f[f.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",f[f.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",f[f.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",f[f.WASM_INIT=6]="WASM_INIT",f[f.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",f[f.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",f[f.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",f[f.TEST=10]="TEST",f[f.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",f))(Id||{}),ps=(r=>(r.NONE="",r.DETAIL="detail",r.MOTION="motion",r.TEXT="text",r))(ps||{}),Yt=(o=>(o.INTERVAL="interval",o.TIMEOUT="timeout",o.RAF="raf",o.RIC="ric",o.INTERVAL_IN_WORKER="intervalInWorker",o))(Yt||{});var L={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},xe={AVOID_REPEATED_CALL(s){return`previous ${s.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o="";return Array.isArray(i.type)?o=i.type.join("|"):o=i.type,`'${r}' must be type of ${o} when calling ${e}(), received type: ${Ee(t)}.`},INVALID_PARAMETER_EMPTY({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${o} when calling ${e}(), received type: ${Ee(t)}.`},INVALID_PARAMETER_RANGE({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_MIN({key:s,rule:i,fnName:e,value:t}){return`the min value of ${s||i.name} is ${i.min}, received: ${t}.`},INVALID_PARAMETER_MAX({key:s,rule:i,fnName:e,value:t}){return`the max value of ${s||i.name} is ${i.max}, received: ${t}.`},API_CALL_TIMEOUT(s){return`${s.commandDesc||s.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(s){return`SignalChannel setup failure: (errorCode: ${s.errorCode}, errorMsg: ${s.errorMsg} }).`},ERROR_MESSAGE(s){let i=`${s.type} failed`;return s.message&&(i=`${i}: ${s.message}.`),i},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(s){return`exchange sdp failed ${s.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(s){return`'${s}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(s){return`'${s}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:s,code:i}){return`Failed to join room - ${s} code: ${i}`},REJOIN_ROOM_FAILED(s){return`reJoin room: ${s.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(s){return`duplicate ${s} stream publishing, please unpublish your prev ${s} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:s,userId:i,streamType:e}){return`failed to subscribe ${i} ${e} stream, reason: ${s}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(s){return`switchRole failed, errCode: ${s.code} errMsg: ${s.message}.`},CLIENT_BANNED(s){return`client was banned because of ${s.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(s){return`startPublishCDNStream failed, errMsg: ${s.message}.`},STOP_PUBLISH_CDN_FAILED(s){return`stopPublishCDNStream failed, errMsg: ${s.message}.`},INVALID_STREAM_ID(s){return`'${s}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(s){return`cannot replace ${s.kind} track because stream has not ${s.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(s){return`startMixTranscode failed, errMsg: ${s.message}.`},STOP_MIX_TRANSCODE_FAILED(s){return`stopMixTranscode failed, errMsg: ${s.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(s){return`'${s}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:s,fnName:i})=>`'${s}' is not found in the document object when calling ${i}().`,INVALID_ELEMENT_ID_TYPE:({key:s,fnName:i,type:e})=>`the element corresponding to '${s}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`,PLAY_FAILED:s=>`${s.media} play failed, browser exception: ${s.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(s){return`${s}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(s){return`${s.signalResponse} failed, response code is ${s.code} , errMsg: ${s.message}.`},CATCH_HANDLER_ERROR({name:s,event:i}){return`an error was caught in ${s}.on('${i}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:s}){return`experimental api ${s} does not exist.`},REPEAT_JOIN:s=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:s}){return`failed to call ${s}() because client was destroyed.`},SEI_NOT_SUPPORT:s=>`not support to sendSEIMessage${s===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:s,name:i,timesInSecond:e,maxSizeInSecond:t})=>`api ${i} call ${s?"size":"times"} is over ${s?`${t} bytes`:e} in a second.`,CONNECTION_ABORTED(s){return`connection aborted due to: ${s}`},API_CALL_ABORTED(s){let i;return s.message.includes("REMOTE_STREAM_NOT_EXIST")?i=`Subscribe ${s.userId} ${s.streamType} stream aborted, reason: remote user ${s.userId} unpublished stream.`:i=`API aborted, reason: ${s.message}`,i},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:s=>`'streamType' is required when 'userId' is not '*', calling ${s}()`};var gh=(s,i)=>i?`${Ht}/${s}/${i}`:`${Ht}/${s}/index.html`;var i_=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let s=localStorage==null?void 0:localStorage.getItem(Oc);if(s){s=JSON.parse(s);let i=document.createElement("script");i.type="text/javascript",i.text=s.message,document.body.appendChild(i);let e=window.TRTC_ERROR_INFO,t=window.TRTC_ERROR_LINK;return document.body.removeChild(i),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:t}}return{}};function P(s){let{key:i,data:e,link:t,addDocLink:r=!0}=s,o="",n="",a="";oe(xe[i])?o=xe[i](e):K(xe[i])&&(o=xe[i]);let{TRTC_ERROR_INFO:c,TRTC_ERROR_LINK:l}=i_();t?a=`${t.className}.html#${t.fnName}`:l&&l[i]&&(oe(l[i])?a=l[i](e):K(l[i])&&(a=l[i]));let u=o;return Nt()&&(c&&c[i]&&(oe(c[i])?n=c[i](e):K(c[i])&&(n=c[i])),n&&(r?u=`${n}
7
+ \u8BF7\u67E5\u770B\u6587\u6863: ${gh("zh-cn",a)}
9
8
 
10
- `:h=`${n}
9
+ `:u=`${n}
11
10
 
12
- `,h+=o)),r&&(h+=`
13
- Refer to: ${Km("en",a)}
14
- `),h}var Kl=gt(ap(),1);var tE=1,iE=0,pd=class{constructor(i=!0){l(this,"countMap",new Map);l(this,"distributionMap",new Map);l(this,"version");l(this,"log",j.createLogger({id:"kv"}));i&&(x.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===S.AUDIO?501700:511700,cost:t})}),x.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===S.AUDIO?501700:511700,error:t})}))}getReportData(){let i={msg_sdk_basic_info:{uint32_sdk_version:Va(this.version||Rt),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,t])=>({uint32_key:e,uint32_count:t})),stats_distribution:[...this.distributionMap.entries()].map(([e,t])=>({uint32_key:e,distribution_items:[...t.entries()].map(([r,o])=>({uint32_item_key:r,uint32_item_value:o}))}))};return this.countMap.clear(),this.distributionMap.clear(),i}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(i){let e=+String(i).slice(-3);return e>=700&&e<799}isErrorCodeKey(i){let e=+String(i).slice(-3);return e>=600&&e<699}isCountKey(i){let e=+String(i).slice(-3);return e>=0&&e<599}isNumberKey(i){let e=+String(i).slice(-3);return e>=800&&e<899}addCount({key:i,useUV:e=!1}){if(!this.isCountKey(i)){this.log.debug(`${i} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(i)||this.countMap.set(i,(this.countMap.get(i)||0)+1)}addEnum({key:i,value:e,useUV:t=!0}){var o;if(!this.isEnumKey(i))return this.log.debug(`${i} is not enum key, last 3 number should be 700~799`);if(t&&this.countMap.has(i))return;this.countMap.set(i,(this.countMap.get(i)||0)+1);let r=((o=this.distributionMap)==null?void 0:o.get(i))||new Map;r.set(e,(r.get(e)||0)+1),this.distributionMap.set(i,r)}addNumber({key:i,value:e,split:t=100,useUV:r=!1}){var a;if(!this.isNumberKey(i))return this.log.debug(`${i} is not number key, last 3 number should be 800~899`);if(r&&this.countMap.has(i))return;this.countMap.set(i,(this.countMap.get(i)||0)+1);let o=((a=this.distributionMap)==null?void 0:a.get(i))||new Map,n=0;if(De(t))n=Math.floor(e/t);else for(let d=t.length-1;d>0;d--)if(e>t[d]){n=d;break}o.set(n,(o.get(n)||0)+1),this.distributionMap.set(i,o)}addSuccessEvent({key:i,cost:e,timeKey:t,split:r}){if(i&&(this.addEnum({key:i,value:tE,useUV:!1}),e)){let o=+String(i).slice(-3);o<800&&o>=700?this.addNumber({key:t||i+100,value:e,split:r}):t||this.log.debug(`time stat ignored, ${i}`)}}addFailedEvent({key:i,error:e}){if(!i)return;let t=H.UNKNOWN;e&&(De(e)?t=e:(!L(e.extraCode)||!L(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:i,value:iE,useUV:!1}),this.addEnum({key:i,value:Math.abs(t),useUV:!1})}},fd=(N=>(N[N.enterRoom=500700]="enterRoom",N[N.exitRoom=500701]="exitRoom",N[N.switchRole=500702]="switchRole",N[N.destroy=500703]="destroy",N[N.startLocalAudio=500704]="startLocalAudio",N[N.updateLocalAudio=500705]="updateLocalAudio",N[N.stopLocalAudio=500706]="stopLocalAudio",N[N.startLocalVideo=500707]="startLocalVideo",N[N.updateLocalVideo=500708]="updateLocalVideo",N[N.stopLocalVideo=500709]="stopLocalVideo",N[N.startScreenShare=500710]="startScreenShare",N[N.updateScreenShare=500711]="updateScreenShare",N[N.stopScreenShare=500712]="stopScreenShare",N[N.startRemoteVideo=500713]="startRemoteVideo",N[N.updateRemoteVideo=500714]="updateRemoteVideo",N[N.stopRemoteVideo=500715]="stopRemoteVideo",N[N.muteRemoteAudio=500716]="muteRemoteAudio",N[N.setRemoteAudioVolume=500717]="setRemoteAudioVolume",N[N.use=500718]="use",N[N.sendSEIMessage=5e5]="sendSEIMessage",N[N.sendCustomMessage=500001]="sendCustomMessage",N))(fd||{}),Ql=(c=>(c[c.AudioMixer=550700]="AudioMixer",c[c.AIDenoiser=551700]="AIDenoiser",c[c.VirtualBackground=570700]="VirtualBackground",c[c.Beauty=571700]="Beauty",c[c.Watermark=572700]="Watermark",c[c.BasicBeauty=574700]="BasicBeauty",c[c.CDNStreaming=590700]="CDNStreaming",c[c.DeviceDetector=591700]="DeviceDetector",c[c.Debug=592700]="Debug",c))(Ql||{}),Yl=(c=>(c[c.AudioMixer=550701]="AudioMixer",c[c.AIDenoiser=551701]="AIDenoiser",c[c.VirtualBackground=570701]="VirtualBackground",c[c.Beauty=571701]="Beauty",c[c.Watermark=572701]="Watermark",c[c.BasicBeauty=574701]="BasicBeauty",c[c.CDNStreaming=590701]="CDNStreaming",c[c.DeviceDetector=591701]="DeviceDetector",c[c.Debug=592701]="Debug",c))(Yl||{}),Zl=(c=>(c[c.AudioMixer=550702]="AudioMixer",c[c.AIDenoiser=551702]="AIDenoiser",c[c.VirtualBackground=570702]="VirtualBackground",c[c.Beauty=571702]="Beauty",c[c.Watermark=572702]="Watermark",c[c.BasicBeauty=574702]="BasicBeauty",c[c.CDNStreaming=590702]="CDNStreaming",c[c.DeviceDetector=591702]="DeviceDetector",c[c.Debug=592702]="Debug",c))(Zl||{});var rE=new pd(!0),Ts=new pd(!1);var Y=rE;var xe={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},sE=new Map([[Ue,["Firefox",Ga]],[io,["Edg",za]],[co,["Chrome",od]],[pt,["Safari",fr]],[Ei,["TBS",qa]],[ro,["XWEB",Xa]],[so&&zr,["WeChat",Qa]],[mn,["QQ(Win)",Ya]],[no,["QQ(Mobile)",Ks]],[oo,["QQ(Mobile X5)",Ks]],[pn,["QQ(Mac)",Za]],[fn,["QQ(iPad)",Ka]],[gn,["MI",ed]],[En,["HW",td]],[Tn,["Samsung",id]],[Sn,["OPPO",rd]],[In,["VIVO",sd]],[to,["EDGE",Wa]],[un,["SogouMobile",ja]],[hn,["Sogou",Ja]]]);function oE(){let s=sE.get(!0),i=s?s[0]:"unknown",e=s?s[1]:"unknown";return{browserName:i,browserVersion:e}}var tu=function(){return!(Cl||to||io&&Il<80||Ue&&ln<56)},cp=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder","MediaStreamTrackGenerator"].every(i=>i in window)},gd=function(){if(!navigator.mediaDevices)return Ir()||j.error(Tt.NOT_SUPPORTED_MEDIA),!1;let s=["getUserMedia","enumerateDevices"];return s.filter(i=>i in navigator.mediaDevices).length===s.length},dp=!1;function Ir(){return location.protocol==="http:"&&!Si?(dp||j.error(pe({key:he.NOT_SUPPORTED_HTTP})),dp=!0,!0):!1}var iu=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},eu=function(){return I(this,null,function*(){if(xe.detail.isH264EncodeSupported&&xe.detail.isVp8EncodeSupported)return{isH264EncodeSupported:xe.detail.isH264EncodeSupported,isVp8EncodeSupported:xe.detail.isVp8EncodeSupported};let s,i=!1,e=!1;try{let t=new RTCPeerConnection,r=document.createElement(S.CANVAS);r.getContext("2d");let o=r.captureStream(0);return t.addTrack(o.getVideoTracks()[0],o),s=yield t.createOffer(),s.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),s.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),xe.detail.isH264EncodeSupported=i,xe.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:xe.detail.isH264EncodeSupported,isVp8EncodeSupported:xe.detail.isVp8EncodeSupported}}catch(t){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},Ed=function(){return I(this,null,function*(){if(xe.detail.isH264DecodeSupported&&xe.detail.isVp8DecodeSupported)return{isH264DecodeSupported:xe.detail.isH264DecodeSupported,isVp8DecodeSupported:xe.detail.isVp8DecodeSupported};let s,i=!1,e=!1;try{let t=new RTCPeerConnection;return s=yield t.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),s.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),s.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),{isH264DecodeSupported:i,isVp8DecodeSupported:e}}catch(t){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}})},Td=Ba(()=>I(void 0,null,function*(){if(xe.result&&xe.detail.isH264EncodeSupported&&xe.detail.isVp8EncodeSupported&&xe.detail.isH264DecodeSupported&&xe.detail.isVp8DecodeSupported)return xe;let s=Date.now(),i=tu(),e=nu(),t=cp(),r=gd(),{isH264EncodeSupported:o,isVp8EncodeSupported:n}=yield eu(),{isH264DecodeSupported:a,isVp8DecodeSupported:d}=yield Ed();if(!o||!n){let c=yield eu();j.warn(`detect encode again h264:${o} vp8:${n} result: ${JSON.stringify(c)}`),o=c.isH264EncodeSupported,n=c.isVp8EncodeSupported}if(o&&a&&ze&&xt&&!ro&&!Ei){let{encode:c,decode:h}=yield aE();o=c,a=h}return xe.result=i&&e&&r&&(o||n)&&(a||d),xe.detail.isBrowserSupported=i,xe.detail.isWebRTCSupported=e,xe.detail.isWebCodecsSupported=t,xe.detail.isMediaDevicesSupported=r,xe.detail.isScreenShareSupported=Dn(),xe.detail.isSmallStreamSupported=kn(),xe.detail.isH264EncodeSupported=o,xe.detail.isVp8EncodeSupported=n,xe.detail.isH264DecodeSupported=a,xe.detail.isVp8DecodeSupported=d,xe.result||j.error(`${navigator.userAgent} ${Pa(xe.detail,!1)}`),mE(),Y.addNumber({key:523800,value:Date.now()-s}),xe})),nE=function(){return xe.result},Dn=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},_d=null;function aE(){return I(this,null,function*(){return _d||(_d=new Promise(s=>I(this,null,function*(){let i={encode:!1,decode:!1},e=()=>{};try{let t=document.createElement("canvas"),r=t.getContext("2d");t.width=320,t.height=240;let o=setInterval(()=>{r.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(o),clearTimeout(a),c.close(),h.close(),d.getTracks().forEach(f=>f.stop())},a=setTimeout(()=>{e(),s(i)},2*1e3);let d=t.captureStream(),c=new RTCPeerConnection({}),h=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});c.addEventListener("icecandidate",f=>h.addIceCandidate(f.candidate)),h.addEventListener("icecandidate",f=>c.addIceCandidate(f.candidate)),c.addTrack(d.getVideoTracks()[0],d);let u=yield c.createOffer();yield c.setLocalDescription(u),yield h.setRemoteDescription(u);let m=yield h.createAnswer(),p=Kl.default.parse(m.sdp),g=p.media[0].rtp.findIndex(f=>f.codec==="H264");p.media[0].rtp=[p.media[0].rtp[g]],p.media[0].fmtp=p.media[0].fmtp.filter(f=>f.payload===p.media[0].rtp[0].payload),p.media[0].rtcpFb&&(p.media[0].rtcpFb=p.media[0].rtcpFb.filter(f=>f.payload===p.media[0].rtp[0].payload)),m.sdp=Kl.default.write(p),yield h.setLocalDescription(m),yield c.setRemoteDescription(m),n=setInterval(()=>I(this,null,function*(){i.encode&&i.decode&&(e(),s(i));let[f,T]=yield Promise.all([c.getSenders()[0].getStats(),h.getReceivers()[0].getStats()]);i.encode||f.forEach(C=>{C.type==="outbound-rtp"&&C.mediaType===S.VIDEO&&C.bytesSent>0&&(i.encode=!0)}),i.decode||T.forEach(C=>{C.type==="inbound-rtp"&&C.mediaType===S.VIDEO&&C.bytesReceived>0&&(i.decode=!0)})}),100)}catch(t){e(),j.warn("detectH264Supported failed",t),s({encode:!0,decode:!0})}})).then(s=>(s.encode||(s.decode=!0),(!s.encode||!s.decode)&&j.warn(`detectH264Supported encode: ${s.encode} decode: ${s.decode} ${_i}`),s)),_d)})}var dE=(s,i,e)=>{location.protocol==="http:"&&!Si&&(s[i]=()=>{throw new Q({code:H.INVALID_OPERATION,message:Tt.NOT_SUPPORTED_HTTP})})},Xr=function(s){return s.type==="candidate-pair"&&s.nominated&&(s.state==="in-progress"||s.state==="succeeded")?!(Qe(s.selected)&&!s.selected):!1};function lp(){let s="";if(screen.width){let i=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";s+=`${i} * ${e}`}return s}function up(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function hp(){let s={isSupported:!1},i=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<i.length;e++)if(i[e]in window){s.isSupported=!0;break}return s.isSupported}function mp(){return"captureStream"in HTMLCanvasElement.prototype}function kn(){return so||Ze||qt&&qt<63?!1:!!(tu()&&mp())}var cE=function(){if(L(window.RTCRtpTransceiver)||!Yt()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let s=null,i=!1;try{s=new RTCPeerConnection({sdpSemantics:Gr}),s.addTransceiver(S.AUDIO),i=!0}catch(e){}return s==null||s.close(),i};function Ss(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function Qr(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function Hi(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function Yt(){return Xt===11&&!Ol?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var po=!(!Yt()||xt&&qt<86);function lE(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var On="RTCRtpSender"in window;function ru(){return On&&"replaceTrack"in window.RTCRtpSender.prototype}function wn(){return On&&"setParameters"in window.RTCRtpSender.prototype&&Qr()}var su="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,Gi=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,ou=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Ar=On&&"createEncodedStreams"in window.RTCRtpSender.prototype&&ao()>=86,Sd="RTCRtpScriptTransform"in window,Mn=On&&(Ar||Sd),nu=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(i=>i in window).length>0};function pp(){let s={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return L(window.AudioDecoder)||(s.AudioDecoder=!0),L(window.AudioEncoder)||(s.AudioEncoder=!0),L(window.VideoDecoder)||(s.VideoDecoder=!0),L(window.VideoEncoder)||(s.VideoEncoder=!0),L(window.ImageDecoder)||(s.ImageDecoder=!0),s}function fp(){return"mediaSession"in navigator&&!L(navigator.mediaSession.setActionHandler)}function _p(){return!L(window.WebTransport)}function uE(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function hE(){let s={browser:`${Vi.name}/${Vi.version}`,os:ad(),displayResolution:lp(),isScreenShareSupported:Dn(),isWebRTCSupported:nu(),isGetUserMediaSupported:up(),isWebAudioSupported:hp(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:pp(),isMediaSessionSupported:fp(),isWebTransportSupported:_p()};return navigator.userAgent.includes("miniProgram")&&(s.browser=`mini/${s.browser}`),s}var gp="checkResult";function mE(){uo.setItem(gp,{ua:navigator.userAgent,checkResult:xe})}function au(){Ir();let s=uo.getItem(gp);s&&s.ua===navigator.userAgent&&(xe=s.checkResult),Td()}function Is(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var Id="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;var Tp=gt(Mt(),1);var Ep=Symbol("instance"),bA=Symbol("abortCtrl"),Ad=Symbol("cacheResult"),xn=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,Un.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},Ln=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function pE(s){return typeof s=="object"&&s&&"then"in s}var Pn=new Map;function qe(s,i,e={}){return(t,r,o)=>{let n=e.action||r;if(!e.context){let d=Pn.get(t)||[];Pn.has(t)||Pn.set(t,d),d.push({from:s,to:i,action:n})}let a=o.value;o.value=function(...d){let c=this;if(e.context&&(c=fe.get(typeof e.context=="function"?e.context.call(this,...d):e.context)),c.state===i)return e.sync?c[Ad]:Promise.resolve(c[Ad]);c.state instanceof xn&&c.state.action==e.abortAction&&c.state.abort(c);let h=null;Array.isArray(s)?s.length==0?c.state instanceof xn&&c.state.abort(c):(typeof c.state!="string"||!s.includes(c.state))&&(h=new Ln(c._state,`${c.name} ${n} to ${i} failed: current state ${c._state} not from ${s.join("|")}`)):s!==c.state&&(h=new Ln(c._state,`${c.name} ${n} to ${i} failed: current state ${c._state} not from ${s}`));let u=T=>{if(e.fail&&e.fail.call(this,T),e.sync){if(e.ignoreError)return T;throw T}else return e.ignoreError?Promise.resolve(T):Promise.reject(T)};if(h)return u(h);let m=c.state,p=new xn(m,i,n);Un.call(c,p);let g=T=>{var C;return c[Ad]=T,p.aborted||(Un.call(c,i),(C=e.success)===null||C===void 0||C.call(this,c[Ad])),T},f=T=>(Un.call(c,m,T),u(T));try{let T=a.apply(this,d);return pE(T)?T.then(g).catch(f):e.sync?g(T):Promise.resolve(g(T))}catch(T){return f(new Ln(c._state,`${c.name} ${n} from ${s} to ${i} failed: ${T}`,T instanceof Error?T:new Error(String(T))))}}}}var fE=typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{};function Un(s,i){let e=this._state;this._state=s;let t=s.toString();s&&this.emit(t,e),this.emit(fe.STATECHANGED,s,e,i),this.updateDevTools({value:s,old:e,err:i instanceof Error?i.message:String(i)})}var fe=class s extends Tp.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=s.INIT,i||(i=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let r=t[Ep];r?this.name=r.name+"-"+r.count++:t[Ep]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=Pn.get(i)||[],t=new Set,r=[],o=[],n=new Set,a=Object.getPrototypeOf(i);Pn.has(a)&&(a.stateDiagram.forEach(c=>t.add(c)),a.allStates.forEach(c=>n.add(c))),e.forEach(({from:c,to:h,action:u})=>{typeof c=="string"?r.push({from:c,to:h,action:u}):c.length?c.forEach(m=>{r.push({from:m,to:h,action:u})}):o.push({to:h,action:u})}),r.forEach(({from:c,to:h,action:u})=>{n.add(c),n.add(h),n.add(u+"ing"),t.add(`${c} --> ${u}ing : ${u}`),t.add(`${u}ing --> ${h} : ${u} \u{1F7E2}`),t.add(`${u}ing --> ${c} : ${u} \u{1F534}`)}),o.forEach(({to:c,action:h})=>{t.add(`${h}ing --> ${c} : ${h} \u{1F7E2}`),n.forEach(u=>{u!==c&&t.add(`${u} --> ${h}ing : ${h}`)})});let d=[...t];return Object.defineProperties(i,{stateDiagram:{value:d},allStates:{value:n}}),d}static get(i){let e;return typeof i=="string"?(e=s.instances.get(i),e||s.instances.set(i,e=new s(i,void 0,Object.create(s.prototype)))):(e=s.instances2.get(i),e||s.instances2.set(i,e=new s(i.constructor.name,void 0,Object.create(s.prototype)))),e}static getState(i){var e;return(e=s.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){fE(s.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){Un.call(this,i)}};fe.STATECHANGED="stateChanged";fe.UPDATEAFSM="updateAFSM";fe.INIT="[*]";fe.ON="on";fe.OFF="off";fe.instances=new Map;fe.instances2=new WeakMap;var cu=typeof window!="undefined",Sp=cu&&window.requestIdleCallback||function(s){let i=Date.now();return setTimeout(()=>{s({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-i))}})},1e3)},_E=cu&&window.cancelIdleCallback||function(s){clearTimeout(s)},Ip=cu&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),ht=class ht{static generateTaskID(){return this.currentTaskID++}static run(i,e,t){t!=null&&t.fps&&(t.delay=t.delay||Number((1e3/t.fps).toFixed(2))),i==="interval"?t=K({delay:2e3,count:0,backgroundTask:!0},t):i==="ric"?t=K({delay:1e4,count:0},t):i==="raf"?t=K({fps:60,delay:16.6,count:0,backgroundTask:!0},t):t=K({delay:2e3,count:0,backgroundTask:!0},t);let r=ne(K({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:i,callback:e},t),{delay:t.delay});return this.taskMap.set(r.taskID,r),this[i](r),r.taskID}static interval(i){let e=()=>{i.callback(),i.loopCount+=1,ht.isBreakLoop(i)};return i.intervalID=setInterval(e,i.delay)}static intervalInWorker(i){ht.sharedWorker||(ht.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
11
+ `,u+=o)),r&&(u+=`
12
+ Refer to: ${gh("en",a)}
13
+ `),u}var Nd=Be(yh(),1);var h_=1,m_=0,ta=class{constructor(i=!0){d(this,"countMap",new Map);d(this,"distributionMap",new Map);d(this,"version");d(this,"log",R.createLogger({id:"kv"}));i&&(E.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===m.AUDIO?501700:511700,cost:t})}),E.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===m.AUDIO?501700:511700,error:t})}))}getReportData(){let i={msg_sdk_basic_info:{uint32_sdk_version:bn(this.version||Me),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,t])=>({uint32_key:e,uint32_count:t})),stats_distribution:[...this.distributionMap.entries()].map(([e,t])=>({uint32_key:e,distribution_items:[...t.entries()].map(([r,o])=>({uint32_item_key:r,uint32_item_value:o}))}))};return this.countMap.clear(),this.distributionMap.clear(),i}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(i){let e=+String(i).slice(-3);return e>=700&&e<799}isErrorCodeKey(i){let e=+String(i).slice(-3);return e>=600&&e<699}isCountKey(i){let e=+String(i).slice(-3);return e>=0&&e<599}isNumberKey(i){let e=+String(i).slice(-3);return e>=800&&e<899}addCount({key:i,useUV:e=!1}){if(!this.isCountKey(i)){this.log.debug(`${i} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(i)||this.countMap.set(i,(this.countMap.get(i)||0)+1)}addEnum({key:i,value:e,useUV:t=!0}){var o;if(!this.isEnumKey(i))return this.log.debug(`${i} is not enum key, last 3 number should be 700~799`);if(t&&this.countMap.has(i))return;this.countMap.set(i,(this.countMap.get(i)||0)+1);let r=((o=this.distributionMap)==null?void 0:o.get(i))||new Map;r.set(e,(r.get(e)||0)+1),this.distributionMap.set(i,r)}addNumber({key:i,value:e,split:t=100,useUV:r=!1,max:o=5e3}){var c;if(!this.isNumberKey(i))return this.log.debug(`${i} is not number key, last 3 number should be 800~899`);if(r&&this.countMap.has(i))return;e>o&&(e=o),this.countMap.set(i,(this.countMap.get(i)||0)+1);let n=((c=this.distributionMap)==null?void 0:c.get(i))||new Map,a=0;if(j(t))a=Math.floor(e/t);else for(let l=t.length-1;l>0;l--)if(e>t[l]){a=l;break}n.set(a,(n.get(a)||0)+1),this.distributionMap.set(i,n)}addSuccessEvent({key:i,cost:e,timeKey:t,split:r}){if(i&&(this.addEnum({key:i,value:h_,useUV:!1}),e)){let o=+String(i).slice(-3);o<800&&o>=700?this.addNumber({key:t||i+100,value:e,split:r}):t||this.log.debug(`time stat ignored, ${i}`)}}addFailedEvent({key:i,error:e}){if(!i)return;let t=S.UNKNOWN;e&&(j(e)?t=e:(!T(e.extraCode)||!T(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:i,value:m_,useUV:!1}),this.addEnum({key:i,value:Math.abs(t),useUV:!1})}},ia=(U=>(U[U.enterRoom=500700]="enterRoom",U[U.exitRoom=500701]="exitRoom",U[U.switchRole=500702]="switchRole",U[U.destroy=500703]="destroy",U[U.startLocalAudio=500704]="startLocalAudio",U[U.updateLocalAudio=500705]="updateLocalAudio",U[U.stopLocalAudio=500706]="stopLocalAudio",U[U.startLocalVideo=500707]="startLocalVideo",U[U.updateLocalVideo=500708]="updateLocalVideo",U[U.stopLocalVideo=500709]="stopLocalVideo",U[U.startScreenShare=500710]="startScreenShare",U[U.updateScreenShare=500711]="updateScreenShare",U[U.stopScreenShare=500712]="stopScreenShare",U[U.startRemoteVideo=500713]="startRemoteVideo",U[U.updateRemoteVideo=500714]="updateRemoteVideo",U[U.stopRemoteVideo=500715]="stopRemoteVideo",U[U.muteRemoteAudio=500716]="muteRemoteAudio",U[U.setRemoteAudioVolume=500717]="setRemoteAudioVolume",U[U.use=500718]="use",U[U.sendSEIMessage=5e5]="sendSEIMessage",U[U.sendCustomMessage=500001]="sendCustomMessage",U))(ia||{}),Rd=(l=>(l[l.AudioMixer=550700]="AudioMixer",l[l.AIDenoiser=551700]="AIDenoiser",l[l.VirtualBackground=570700]="VirtualBackground",l[l.Beauty=571700]="Beauty",l[l.Watermark=572700]="Watermark",l[l.BasicBeauty=574700]="BasicBeauty",l[l.CDNStreaming=590700]="CDNStreaming",l[l.DeviceDetector=591700]="DeviceDetector",l[l.Debug=592700]="Debug",l))(Rd||{}),yd=(l=>(l[l.AudioMixer=550701]="AudioMixer",l[l.AIDenoiser=551701]="AIDenoiser",l[l.VirtualBackground=570701]="VirtualBackground",l[l.Beauty=571701]="Beauty",l[l.Watermark=572701]="Watermark",l[l.BasicBeauty=574701]="BasicBeauty",l[l.CDNStreaming=590701]="CDNStreaming",l[l.DeviceDetector=591701]="DeviceDetector",l[l.Debug=592701]="Debug",l))(yd||{}),bd=(l=>(l[l.AudioMixer=550702]="AudioMixer",l[l.AIDenoiser=551702]="AIDenoiser",l[l.VirtualBackground=570702]="VirtualBackground",l[l.Beauty=571702]="Beauty",l[l.Watermark=572702]="Watermark",l[l.BasicBeauty=574702]="BasicBeauty",l[l.CDNStreaming=590702]="CDNStreaming",l[l.DeviceDetector=591702]="DeviceDetector",l[l.Debug=592702]="Debug",l))(bd||{});var p_=new ta(!0),Rr=new ta(!1);var b=p_;var re={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},f_=new Map([[ne,["Firefox",Mn]],[os,["Edg",Ln]],[us,["Chrome",qn]],[Le,["Safari",Ri]],[Mt,["TBS",wn]],[ns,["XWEB",Un]],[as&&zi,["WeChat",Vn]],[so,["QQ(Win)",Bn]],[ds,["QQ(Mobile)",is]],[cs,["QQ(Mobile X5)",is]],[oo,["QQ(Mac)",Fn]],[no,["QQ(iPad)",$n]],[co,["MI",Hn]],[lo,["HW",Gn]],[uo,["Samsung",Wn]],[ho,["OPPO",Jn]],[mo,["VIVO",jn]],[ss,["EDGE",kn]],[io,["SogouMobile",Pn]],[ro,["Sogou",xn]]]);function __(){let s=f_.get(!0),i=s?s[0]:"unknown",e=s?s[1]:"unknown";return{browserName:i,browserVersion:e}}var Dd=function(){return!(Yc||ss||os&&zc<80||ne&&to<56)},Nh=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder","MediaStreamTrackGenerator"].every(i=>i in window)},sa=function(){if(!navigator.mediaDevices)return Di()||R.error(xe.NOT_SUPPORTED_MEDIA),!1;let s=["getUserMedia","enumerateDevices"];return s.filter(i=>i in navigator.mediaDevices).length===s.length},bh=!1;function Di(){return location.protocol==="http:"&&!Lt?(bh||R.error(P({key:L.NOT_SUPPORTED_HTTP})),bh=!0,!0):!1}var Od=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},vd=function(){return p(this,null,function*(){if(re.detail.isH264EncodeSupported&&re.detail.isVp8EncodeSupported)return{isH264EncodeSupported:re.detail.isH264EncodeSupported,isVp8EncodeSupported:re.detail.isVp8EncodeSupported};let s,i=!1,e=!1;try{let t=new RTCPeerConnection,r=document.createElement(m.CANVAS);r.getContext("2d");let o=r.captureStream(0);return t.addTrack(o.getVideoTracks()[0],o),s=yield t.createOffer(),s.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),s.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),re.detail.isH264EncodeSupported=i,re.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:re.detail.isH264EncodeSupported,isVp8EncodeSupported:re.detail.isVp8EncodeSupported}}catch(t){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},oa=function(){return p(this,null,function*(){if(re.detail.isH264DecodeSupported&&re.detail.isVp8DecodeSupported)return{isH264DecodeSupported:re.detail.isH264DecodeSupported,isVp8DecodeSupported:re.detail.isVp8DecodeSupported};let s,i=!1,e=!1;try{let t=new RTCPeerConnection;return s=yield t.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),s.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),s.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),{isH264DecodeSupported:i,isVp8DecodeSupported:e}}catch(t){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}})},na=Nn(()=>p(void 0,null,function*(){if(re.result&&re.detail.isH264EncodeSupported&&re.detail.isVp8EncodeSupported&&re.detail.isH264DecodeSupported&&re.detail.isVp8DecodeSupported)return re;let s=Date.now(),i=Dd(),e=Pd(),t=Nh(),r=sa(),{isH264EncodeSupported:o,isVp8EncodeSupported:n}=yield vd(),{isH264DecodeSupported:a,isVp8DecodeSupported:c}=yield oa();if(!o||!n){let l=yield vd();R.warn(`detect encode again h264:${o} vp8:${n} result: ${JSON.stringify(l)}`),o=l.isH264EncodeSupported,n=l.isVp8EncodeSupported}if(o&&a&&he&&Ye&&!ns&&!Mt){let{encode:l,decode:u}=yield T_();o=l,a=u}return re.result=i&&e&&r&&(o||n)&&(a||c),re.detail.isBrowserSupported=i,re.detail.isWebRTCSupported=e,re.detail.isWebCodecsSupported=t,re.detail.isMediaDevicesSupported=r,re.detail.isScreenShareSupported=Io(),re.detail.isSmallStreamSupported=Ao(),re.detail.isH264EncodeSupported=o,re.detail.isVp8EncodeSupported=n,re.detail.isH264DecodeSupported=a,re.detail.isVp8DecodeSupported=c,re.result||R.error(`${navigator.userAgent} ${Rn(re.detail,!1)}`),R_(),b.addNumber({key:523800,value:Date.now()-s}),re})),g_=function(){return re.result},Io=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},ra=null;function T_(){return p(this,null,function*(){return ra||(ra=new Promise(s=>p(this,null,function*(){let i={encode:!1,decode:!1},e=()=>{};try{let t=document.createElement("canvas"),r=t.getContext("2d");t.width=320,t.height=240;let o=setInterval(()=>{r.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(o),clearTimeout(a),l.close(),u.close(),c.getTracks().forEach(g=>g.stop())},a=setTimeout(()=>{e(),s(i)},2*1e3);let c=t.captureStream(),l=new RTCPeerConnection({}),u=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});l.addEventListener("icecandidate",g=>u.addIceCandidate(g.candidate)),u.addEventListener("icecandidate",g=>l.addIceCandidate(g.candidate)),l.addTrack(c.getVideoTracks()[0],c);let h=yield l.createOffer();yield l.setLocalDescription(h),yield u.setRemoteDescription(h);let f=yield u.createAnswer(),_=Nd.default.parse(f.sdp),D=_.media[0].rtp.findIndex(g=>g.codec==="H264");_.media[0].rtp=[_.media[0].rtp[D]],_.media[0].fmtp=_.media[0].fmtp.filter(g=>g.payload===_.media[0].rtp[0].payload),_.media[0].rtcpFb&&(_.media[0].rtcpFb=_.media[0].rtcpFb.filter(g=>g.payload===_.media[0].rtp[0].payload)),f.sdp=Nd.default.write(_),yield u.setLocalDescription(f),yield l.setRemoteDescription(f),n=setInterval(()=>p(this,null,function*(){i.encode&&i.decode&&(e(),s(i));let[g,A]=yield Promise.all([l.getSenders()[0].getStats(),u.getReceivers()[0].getStats()]);i.encode||g.forEach(M=>{M.type==="outbound-rtp"&&M.mediaType===m.VIDEO&&M.bytesSent>0&&(i.encode=!0)}),i.decode||A.forEach(M=>{M.type==="inbound-rtp"&&M.mediaType===m.VIDEO&&M.bytesReceived>0&&(i.decode=!0)})}),100)}catch(t){e(),R.warn("detectH264Supported failed",t),s({encode:!0,decode:!0})}})).then(s=>(s.encode||(s.decode=!0),(!s.encode||!s.decode)&&R.warn(`detectH264Supported encode: ${s.encode} decode: ${s.decode} ${Dt}`),s)),ra)})}var E_=(s,i,e)=>{location.protocol==="http:"&&!Lt&&(s[i]=()=>{throw new y({code:S.INVALID_OPERATION,message:xe.NOT_SUPPORTED_HTTP})})},Zi=function(s){return s.type==="candidate-pair"&&s.nominated&&(s.state==="in-progress"||s.state==="succeeded")?!(ge(s.selected)&&!s.selected):!1};function vh(){let s="";if(screen.width){let i=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";s+=`${i} * ${e}`}return s}function Dh(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Oh(){let s={isSupported:!1},i=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<i.length;e++)if(i[e]in window){s.isSupported=!0;break}return s.isSupported}function Mh(){return"captureStream"in HTMLCanvasElement.prototype}function Ao(){return as||Se||dt&&dt<63?!1:!!(Dd()&&Mh())}var S_=function(){if(T(window.RTCRtpTransceiver)||!ht()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let s=null,i=!1;try{s=new RTCPeerConnection({sdpSemantics:qi}),s.addTransceiver(m.AUDIO),i=!0}catch(e){}return s==null||s.close(),i};function yr(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function er(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function Zt(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function ht(){return lt===11&&!od?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var _s=!(!ht()||Ye&&dt<86);function I_(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var Co="RTCRtpSender"in window;function Md(){return Co&&"replaceTrack"in window.RTCRtpSender.prototype}function Ro(){return Co&&"setParameters"in window.RTCRtpSender.prototype&&er()}var kd="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,ei=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Ld=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Oi=Co&&"createEncodedStreams"in window.RTCRtpSender.prototype&&ls()>=86,aa="RTCRtpScriptTransform"in window,yo=Co&&(Oi||aa),Pd=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(i=>i in window).length>0};function kh(){let s={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return T(window.AudioDecoder)||(s.AudioDecoder=!0),T(window.AudioEncoder)||(s.AudioEncoder=!0),T(window.VideoDecoder)||(s.VideoDecoder=!0),T(window.VideoEncoder)||(s.VideoEncoder=!0),T(window.ImageDecoder)||(s.ImageDecoder=!0),s}function Lh(){return"mediaSession"in navigator&&!T(navigator.mediaSession.setActionHandler)}function Ph(){return!T(window.WebTransport)}function A_(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function C_(){let s={browser:`${qt.name}/${qt.version}`,os:Xn(),displayResolution:vh(),isScreenShareSupported:Io(),isWebRTCSupported:Pd(),isGetUserMediaSupported:Dh(),isWebAudioSupported:Oh(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:kh(),isMediaSessionSupported:Lh(),isWebTransportSupported:Ph()};return navigator.userAgent.includes("miniProgram")&&(s.browser=`mini/${s.browser}`),s}var xh="checkResult";function R_(){ms.setItem(xh,{ua:navigator.userAgent,checkResult:re})}function xd(){Di();let s=ms.getItem(xh);s&&s.ua===navigator.userAgent&&(re=s.checkResult),na()}function br(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var ca="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;var Uh=Be(Qe(),1);var wh=Symbol("instance"),PS=Symbol("abortCtrl"),da=Symbol("cacheResult"),bo=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,Do.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},No=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function y_(s){return typeof s=="object"&&s&&"then"in s}var vo=new Map;function pe(s,i,e={}){return(t,r,o)=>{let n=e.action||r;if(!e.context){let c=vo.get(t)||[];vo.has(t)||vo.set(t,c),c.push({from:s,to:i,action:n})}let a=o.value;o.value=function(...c){let l=this;if(e.context&&(l=H.get(typeof e.context=="function"?e.context.call(this,...c):e.context)),l.state===i)return e.sync?l[da]:Promise.resolve(l[da]);l.state instanceof bo&&l.state.action==e.abortAction&&l.state.abort(l);let u=null;Array.isArray(s)?s.length==0?l.state instanceof bo&&l.state.abort(l):(typeof l.state!="string"||!s.includes(l.state))&&(u=new No(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${s.join("|")}`)):s!==l.state&&(u=new No(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${s}`));let h=A=>{if(e.fail&&e.fail.call(this,A),e.sync){if(e.ignoreError)return A;throw A}else return e.ignoreError?Promise.resolve(A):Promise.reject(A)};if(u)return h(u);let f=l.state,_=new bo(f,i,n);Do.call(l,_);let D=A=>{var M;return l[da]=A,_.aborted||(Do.call(l,i),(M=e.success)===null||M===void 0||M.call(this,l[da])),A},g=A=>(Do.call(l,f,A),h(A));try{let A=a.apply(this,c);return y_(A)?A.then(D).catch(g):e.sync?D(A):Promise.resolve(D(A))}catch(A){return g(new No(l._state,`${l.name} ${n} from ${s} to ${i} failed: ${A}`,A instanceof Error?A:new Error(String(A))))}}}}var b_=typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{};function Do(s,i){let e=this._state;this._state=s;let t=s.toString();s&&this.emit(t,e),this.emit(H.STATECHANGED,s,e,i),this.updateDevTools({value:s,old:e,err:i instanceof Error?i.message:String(i)})}var H=class s extends Uh.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=s.INIT,i||(i=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let r=t[wh];r?this.name=r.name+"-"+r.count++:t[wh]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=vo.get(i)||[],t=new Set,r=[],o=[],n=new Set,a=Object.getPrototypeOf(i);vo.has(a)&&(a.stateDiagram.forEach(l=>t.add(l)),a.allStates.forEach(l=>n.add(l))),e.forEach(({from:l,to:u,action:h})=>{typeof l=="string"?r.push({from:l,to:u,action:h}):l.length?l.forEach(f=>{r.push({from:f,to:u,action:h})}):o.push({to:u,action:h})}),r.forEach(({from:l,to:u,action:h})=>{n.add(l),n.add(u),n.add(h+"ing"),t.add(`${l} --> ${h}ing : ${h}`),t.add(`${h}ing --> ${u} : ${h} \u{1F7E2}`),t.add(`${h}ing --> ${l} : ${h} \u{1F534}`)}),o.forEach(({to:l,action:u})=>{t.add(`${u}ing --> ${l} : ${u} \u{1F7E2}`),n.forEach(h=>{h!==l&&t.add(`${h} --> ${u}ing : ${u}`)})});let c=[...t];return Object.defineProperties(i,{stateDiagram:{value:c},allStates:{value:n}}),c}static get(i){let e;return typeof i=="string"?(e=s.instances.get(i),e||s.instances.set(i,e=new s(i,void 0,Object.create(s.prototype)))):(e=s.instances2.get(i),e||s.instances2.set(i,e=new s(i.constructor.name,void 0,Object.create(s.prototype)))),e}static getState(i){var e;return(e=s.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){b_(s.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){Do.call(this,i)}};H.STATECHANGED="stateChanged";H.UPDATEAFSM="updateAFSM";H.INIT="[*]";H.ON="on";H.OFF="off";H.instances=new Map;H.instances2=new WeakMap;var Ud=typeof window!="undefined",Vh=Ud&&window.requestIdleCallback||function(s){let i=Date.now();return setTimeout(()=>{s({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-i))}})},1e3)},N_=Ud&&window.cancelIdleCallback||function(s){clearTimeout(s)},Bh=Ud&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),ve=class ve{static generateTaskID(){return this.currentTaskID++}static run(i,e,t){t!=null&&t.fps&&(t.delay=t.delay||Number((1e3/t.fps).toFixed(2))),i==="interval"?t=v({delay:2e3,count:0,backgroundTask:!0},t):i==="ric"?t=v({delay:1e4,count:0},t):i==="raf"?t=v({fps:60,delay:16.6,count:0,backgroundTask:!0},t):t=v({delay:2e3,count:0,backgroundTask:!0},t);let r=x(v({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:i,callback:e},t),{delay:t.delay});return this.taskMap.set(r.taskID,r),this[i](r),r.taskID}static interval(i){let e=()=>{i.callback(),i.loopCount+=1,ve.isBreakLoop(i)};return i.intervalID=setInterval(e,i.delay)}static intervalInWorker(i){ve.sharedWorker||(ve.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
15
14
  const timers = new Map();
16
15
  self.onmessage = function(e) {
17
16
  const { taskId, delay, type } = e.data;
@@ -24,14 +23,14 @@ Refer to: ${Km("en",a)}
24
23
  timers.delete(taskId);
25
24
  }
26
25
  };
27
- `],{type:"application/javascript"}))),ht.sharedWorker.onmessage=e=>{var t;if(e.data.type==="tick"){let r=ht.workerTasks.get(e.data.taskId);r&&(ht.isBreakLoop(r)?((t=ht.sharedWorker)==null||t.postMessage({type:"stop",taskId:r.taskID}),ht.workerTasks.delete(r.taskID)):(r.callback(),r.loopCount+=1))}}),ht.workerTasks.set(i.taskID,i),ht.sharedWorker.postMessage({taskId:i.taskID,delay:i.delay,type:"start"})}static timeout(i){let e=()=>{if(i.callback(),i.loopCount+=1,!ht.isBreakLoop(i))return i.timeoutID=setTimeout(e,i.delay)};return i.timeoutID=setTimeout(e,i.delay)}static ric(i){let e=le(),t,r=()=>{if(t=le()-e,t>=i.delay&&(e=le()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!ht.isBreakLoop(i))return i.ricID=Sp(r,{timeout:i.delay})};return i.ricID=Sp(r,{timeout:i.delay})}static raf(i){let e=le(),t,r=()=>{if(document.hidden&&i.backgroundTask)return t=le()-e,e=le(),i.callback(),i.loopCount+=1,ht.isBreakLoop(i)?void 0:i.timeoutID=setTimeout(r,i.delay-Math.floor(t%i.delay));if(t=le()-e,t>=i.delay&&(e=le()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!ht.isBreakLoop(i))return i.rafID=requestAnimationFrame(r)};if(i.rafID=requestAnimationFrame(r),i.backgroundTask){let o=()=>{if(document.hidden){let n=le()-e;n>=i.delay?r():i.timeoutID=setTimeout(r,i.delay-n)}};document.addEventListener("visibilitychange",o),i.onVisibilitychange=o,document.hidden&&o()}return i.taskID}static hasTask(i){return this.taskMap.has(i)}static clearTask(i){if(!this.taskMap.has(i))return!0;let{intervalID:e,timeoutID:t,rafID:r,ricID:o,onVisibilitychange:n}=this.taskMap.get(i);return e&&clearInterval(e),t&&clearTimeout(t),r&&Ip&&Ip(r),o&&_E(o),n&&document.removeEventListener("visibilitychange",n),this.taskMap.delete(i),!0}static isBreakLoop(i){return this.hasTask(i.taskID)?i.count!==0&&i.loopCount>=i.count?(this.clearTask(i.taskID),!0):!1:!0}};l(ht,"taskMap",new Map),l(ht,"currentTaskID",1),l(ht,"sharedWorker",null),l(ht,"workerTasks",new Map);var du=ht,Le=du;var PA={STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",STREAM_UPDATED:"stream-updated",STREAM_SUBSCRIBED:"stream-subscribed",CONNECTION_STATE_CHANGED:"connection-state-changed",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",MUTE_AUDIO:"mute-audio",MUTE_VIDEO:"mute-video",UNMUTE_AUDIO:"unmute-audio",UNMUTE_VIDEO:"unmute-video",CLIENT_BANNED:"client-banned",NETWORK_QUALITY:"network-quality",AUDIO_VOLUME:"audio-volume",SEI_MESSAGE:S.SEI_MESSAGE,ERROR:"error"};var Ge={LOADED_DATA:S.LOADEDDATA,LOADED_META_DATA:S.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var zi={};nr(zi,{create:()=>vt,remove:()=>at});var Vn=new WeakMap;function vt(s,i){Vn.has(s)||Vn.set(s,[]);let e=Vn.get(s),r={add:(o,n)=>("addEventListener"in i?(e.push(i.removeEventListener.bind(i,o,n)),i.addEventListener(o,n)):(e.push(i.off.bind(i,o,n)),i.on(o,n)),r)};return r}function at(s){let i=Vn.get(s);i&&(i.forEach(e=>e()),Vn.delete(s))}var lu=class{constructor(){l(this,"_roomIdMap",new Map);l(this,"_configs");typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:Rt,env:ar.QCLOUD,browserVersion:Vi.name+Vi.version,ua:navigator.userAgent})}setConfig({sdkAppId:i,env:e,userId:t,roomId:r}){i!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(i)),this._configs.env=e,this._configs.userId=t,this._roomIdMap.set(t,String(r))}logSuccessEvent(i){Si||!j.isAbleToUpload||this._configs.env===ar.QCLOUD&&this.uploadEventToKibana(ne(K({},i),{result:"success"}))}logFailedEvent(i){if(Si||!j.isAbleToUpload)return;let{eventType:e,code:t,error:r,userId:o}=i,n={roomId:this._roomIdMap.get(o||this._configs.userId),userId:o,eventType:e,result:"failed",code:t||(r==null?void 0:r.extraCode)||(r==null?void 0:r.code)||H.UNKNOWN};this._configs.env===ar.QCLOUD&&this.uploadEventToKibana(ne(K({},n),{error:r}))}uploadEventToKibana(i){let e=`stat-${i.eventType}-${i.result}`;(i.eventType==="delta-join"||i.eventType==="delta-leave"||i.eventType==="delta-publish")&&(e=`${i.eventType}:${i.delta}`),this.uploadEvent({log:e,userId:i.userId}),i.result==="failed"&&(e=`stat-${i.eventType}-${i.result}-${i.code}`,this.uploadEvent({log:e,userId:i.userId,error:i.error}))}uploadEvent({log:i,userId:e,error:t}){let r={timestamp:Ra(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:Rt,log:i};t&&(r.errorInfo=t.message,t.stack&&(r.errorInfo+=`
28
- ${t.stack}`)),this.sendRequest(lr(this._configs.sdkAppId,$r.LOG),r)}sendRequest(i,e){setTimeout(()=>mr({url:i,body:JSON.stringify(e),priority:"low"}).catch(()=>{}),2e3)}},Me=new lu;var ji=new WeakMap;function Gt({settings:s={retries:5,timeout:2e3},onError:i,onRetrying:e,onRetryFailed:t}){return function(r,o,n){let a=Ui({retryFunction:n.value,settings:s,onError({error:d,retry:c,reject:h,retryFuncArgs:u}){var m;i?i.call(this,d,()=>{var p;(p=ji.get(r))!=null&&p.has(o)?c():h(d)},h,u):(m=ji.get(r))!=null&&m.has(o)?c():h(d)},onRetrying(d,c){var h;Pi(e)&&e.call(this,d,c),(h=ji.get(r))!=null&&h.has(o)&&(ji.get(r).get(o).stopRetry=c)},onRetryFailed:t});return n.value=function(...d){let c=ji.get(r);return c?c.set(o,{args:d}):ji.set(r,new Map([[o,{args:d}]])),a.apply(this,d).finally(()=>{var h;return(h=ji.get(r))==null?void 0:h.delete(o)})},n}}function Bn({fnName:s,callback:i,validateArgs:e=!0}){return function(t,r,o){let n=o.value;return o.value=function(...a){var d,c;if((d=ji.get(t))!=null&&d.has(s)){let{stopRetry:h,args:u}=ji.get(t).get(s),m=!0;if(e){for(let p of u)if(!a.find(g=>g===p)){m=!1;break}}m&&(i&&i.apply(this,a),h&&h(),(c=ji.get(t))==null||c.delete(s))}return n.apply(this,a)},o}}var Ji=class extends fe{constructor(e,t){super(e.id,`${t}-player`);this.kind=t;l(this,"id");l(this,"element",null);l(this,"track");l(this,"url");l(this,"attr");l(this,"mode");l(this,"muted");l(this,"_log");l(this,"_pausedRetryCount");l(this,"_isElementPlayingFired",!1);l(this,"_interval");l(this,"_delayDestroyTimeoutId",0);l(this,"_playSuccessResolve");l(this,"_isReplayByRecreateMediaStreamCalled",!1);l(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=cl,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${t}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&((e=this.element)==null?void 0:e.paused)===!1}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return I(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,t)=>{this._playSuccessResolve=e,this.element.play().then(e,t)})}catch(e){let t=pe({key:he.PLAY_FAILED,data:{media:this.kind,error:e}});if(this.track&&!this.track.muted&&this._log.warn(e),t.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new Q({code:H.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!jr?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(S.ENDED),this._interval>0&&Le.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():Dl?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return vt(this.element,this.element).add(S.PLAYING,e).add(S.ENDED,e).add(S.PAUSE,e).add(S.ERROR,e).add(S.LOADEDDATA,e).add(S.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let t=this.handleTrackEvent.bind(this);zi==null||zi.create(e,e).add(S.ENDED,t).add(S.MUTE,t).add(S.UNMUTE,t),e.readyState===S.ENDED&&this.handleTrackEvent({type:S.ENDED}),e.muted&&this.handleTrackEvent({type:S.MUTE})}}bindAutoPlayEvent(){x.on(V.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&at(e)}unbindEvents(){this.element&&at(this.element),this.unbindTrackEvents(),x.off(V.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case S.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(S.PLAYING),this._interval&&(Le.clearTask(this._interval),this._interval=-1);break;case S.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(S.ENDED);break;case S.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(S.PAUSE),Ze&&(this._interval=Le.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case S.ERROR:if(this.element&&this.element.error){this.handlePaused(S.ERROR);let{code:r,message:o}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${r} message: ${o} userAgent: ${navigator.userAgent}`),Me.uploadEvent({log:`stat-${this.kind}-${Ft.PLAYER_ERROR}-${r}-${navigator.userAgent}`,error:this.element.error}),yl||Rl?this.emit(Ge.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case S.LOADEDDATA:this.kind===S.VIDEO&&this.emit(Ge.LOADED_DATA);break;case S.LOADEDMETADATA:this.kind===S.VIDEO&&this.emit(Ge.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),Me.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),Y.addSuccessEvent({key:this.kind===S.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),Me.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),Y.addFailedEvent({key:this.kind===S.AUDIO?506700:516700,error:(t=this.element)==null?void 0:t.error}),this.emit(Ge.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,r)=>{hr(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var o,n,a;this._log.warn(`element onerror ${(n=(o=this.element)==null?void 0:o.error)==null?void 0:n.code} fired after recreated mediaStream`),r((a=this.element)==null?void 0:a.error)}),hr(5e3).then(()=>{var o,n;(!this.isPlaying||(o=this.element)!=null&&o.error)&&r((n=this.element)==null?void 0:n.error),t()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){switch(e.type){case S.ENDED:this.handleStopped(S.ENDED);break;case S.MUTE:this.handlePaused(S.MUTE);break;case S.UNMUTE:this._isElementPlayingFired?this.handlePlaying(S.UNMUTE):this.mode>0&&this.handlePlaying(this.mode.toString());break}}handlePlaying(e){var t;(t=this._playSuccessResolve)==null||t.call(this,e),this.emit(Ge.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this.emit(Ge.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this.emit(Ge.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};q([Gt({settings:{retries:2,timeout:0},onError(e,t,r,o){o[0]=(o[0]||1e3)+1e3,t()}})],Ji.prototype,"doReplayByRecreateMediaStream",1),q([qe([],"PLAYING",{sync:!0})],Ji.prototype,"handlePlaying",1),q([qe("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],Ji.prototype,"handlePaused",1),q([qe([],"STOPPED",{sync:!0})],Ji.prototype,"handleStopped",1);var Cr="trtc_autoplay",uu=`${Cr}_mask`,fo=`${Cr}_wrapper`,Ap=`${Cr}_header`,hu=`${Cr}_content`,Cd=`${Cr}_action_wrapper`,mu=`${Cr}_question`,pu=`${Cr}_collapse`,Rd=`${Cr}_action_confirm`,Cp=`${Cr}_detail`,Rp="#2473E8",_u="dialog",EE=`${_u}-show`,TE=`${_u}-1`,SE=`${_u}-2`,yp=!1,gu=()=>!!document.querySelector(`.${fo}`),vp=`${wi}/${pi()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,bp=`<br><a href='${vp}' target='_blank'>${pi()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,IE=`${pi()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${bp}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${bp}`}`,fu=class{constructor(){l(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");l(this,"_dialogNode",null);l(this,"_bodyPosition","");l(this,"_showDetail",!1);l(this,"_isCollapseClicked",!1);l(this,"_isQuestionClicked",!1);if(pi()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!yp){let i=document.createElement("style");i.innerHTML=`.${uu}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${uu} div:not(.${Cd}){display:block !important;}.${fo}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${fo} a{color:${Rp};}.${Ap}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${hu}{margin:8px 0;}.${Cd}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${pu}{margin-right:auto;cursor:pointer}.${mu}{height:100%;line-height:16px;cursor:pointer;}.${Rd}{margin-left:8px;color:#fff;background:${Rp};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${Rd}:hover{opacity:0.9;}.${pu},.${Rd},.${hu},.${mu}{font-size:14px;}@media screen and (max-width:750px){.${fo}{width:80vw;}}`,document.head.appendChild(i),yp=!0}this.addDiaLog()}createDiaLog(){let i=document.createElement("template");i.innerHTML=`<div class="${uu}"><div class='${fo}'><div class='${Ap}'>${location.host}</div><div class='${hu}'>${this.content}</div><div class='${Cp}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${IE}</div><div class='${Cd}'></div></div></div>`.trim();let e=document.createElement("button");e.className=Rd,e.innerText=pi()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=mu,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
26
+ `],{type:"application/javascript"}))),ve.sharedWorker.onmessage=e=>{var t;if(e.data.type==="tick"){let r=ve.workerTasks.get(e.data.taskId);r&&(ve.isBreakLoop(r)?((t=ve.sharedWorker)==null||t.postMessage({type:"stop",taskId:r.taskID}),ve.workerTasks.delete(r.taskID)):(r.callback(),r.loopCount+=1))}}),ve.workerTasks.set(i.taskID,i),ve.sharedWorker.postMessage({taskId:i.taskID,delay:i.delay,type:"start"})}static timeout(i){let e=()=>{if(i.callback(),i.loopCount+=1,!ve.isBreakLoop(i))return i.timeoutID=setTimeout(e,i.delay)};return i.timeoutID=setTimeout(e,i.delay)}static ric(i){let e=w(),t,r=()=>{if(t=w()-e,t>=i.delay&&(e=w()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!ve.isBreakLoop(i))return i.ricID=Vh(r,{timeout:i.delay})};return i.ricID=Vh(r,{timeout:i.delay})}static raf(i){let e=w(),t,r=()=>{if(document.hidden&&i.backgroundTask)return t=w()-e,e=w(),i.callback(),i.loopCount+=1,ve.isBreakLoop(i)?void 0:i.timeoutID=setTimeout(r,i.delay-Math.floor(t%i.delay));if(t=w()-e,t>=i.delay&&(e=w()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!ve.isBreakLoop(i))return i.rafID=requestAnimationFrame(r)};if(i.rafID=requestAnimationFrame(r),i.backgroundTask){let o=()=>{if(document.hidden){let n=w()-e;n>=i.delay?r():i.timeoutID=setTimeout(r,i.delay-n)}};document.addEventListener("visibilitychange",o),i.onVisibilitychange=o,document.hidden&&o()}return i.taskID}static hasTask(i){return this.taskMap.has(i)}static clearTask(i){if(!this.taskMap.has(i))return!0;let{intervalID:e,timeoutID:t,rafID:r,ricID:o,onVisibilitychange:n}=this.taskMap.get(i);return e&&clearInterval(e),t&&clearTimeout(t),r&&Bh&&Bh(r),o&&N_(o),n&&document.removeEventListener("visibilitychange",n),this.taskMap.delete(i),!0}static isBreakLoop(i){return this.hasTask(i.taskID)?i.count!==0&&i.loopCount>=i.count?(this.clearTask(i.taskID),!0):!1:!0}};d(ve,"taskMap",new Map),d(ve,"currentTaskID",1),d(ve,"sharedWorker",null),d(ve,"workerTasks",new Map);var wd=ve,se=wd;var WS={STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",STREAM_UPDATED:"stream-updated",STREAM_SUBSCRIBED:"stream-subscribed",CONNECTION_STATE_CHANGED:"connection-state-changed",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",MUTE_AUDIO:"mute-audio",MUTE_VIDEO:"mute-video",UNMUTE_AUDIO:"unmute-audio",UNMUTE_VIDEO:"unmute-video",CLIENT_BANNED:"client-banned",NETWORK_QUALITY:"network-quality",AUDIO_VOLUME:"audio-volume",SEI_MESSAGE:m.SEI_MESSAGE,ERROR:"error"};var le={LOADED_DATA:m.LOADEDDATA,LOADED_META_DATA:m.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var ii={};fi(ii,{create:()=>Ge,remove:()=>be});var Oo=new WeakMap;function Ge(s,i){Oo.has(s)||Oo.set(s,[]);let e=Oo.get(s),r={add:(o,n)=>("addEventListener"in i?(e.push(i.removeEventListener.bind(i,o,n)),i.addEventListener(o,n)):(e.push(i.off.bind(i,o,n)),i.on(o,n)),r)};return r}function be(s){let i=Oo.get(s);i&&(i.forEach(e=>e()),Oo.delete(s))}var Vd=class{constructor(){d(this,"_roomIdMap",new Map);d(this,"_configs");typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:Me,env:_i.QCLOUD,browserVersion:qt.name+qt.version,ua:navigator.userAgent})}setConfig({sdkAppId:i,env:e,userId:t,roomId:r}){i!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(i)),this._configs.env=e,this._configs.userId=t,this._roomIdMap.set(t,String(r))}logSuccessEvent(i){Lt||!R.isAbleToUpload||this._configs.env===_i.QCLOUD&&this.uploadEventToKibana(x(v({},i),{result:"success"}))}logFailedEvent(i){if(Lt||!R.isAbleToUpload)return;let{eventType:e,code:t,error:r,userId:o}=i,n={roomId:this._roomIdMap.get(o||this._configs.userId),userId:o,eventType:e,result:"failed",code:t||(r==null?void 0:r.extraCode)||(r==null?void 0:r.code)||S.UNKNOWN};this._configs.env===_i.QCLOUD&&this.uploadEventToKibana(x(v({},n),{error:r}))}uploadEventToKibana(i){let e=`stat-${i.eventType}-${i.result}`;(i.eventType==="delta-join"||i.eventType==="delta-leave"||i.eventType==="delta-publish")&&(e=`${i.eventType}:${i.delta}`),this.uploadEvent({log:e,userId:i.userId}),i.result==="failed"&&(e=`stat-${i.eventType}-${i.result}-${i.code}`,this.uploadEvent({log:e,userId:i.userId,error:i.error}))}uploadEvent({log:i,userId:e,error:t}){let r={timestamp:un(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:Me,log:i};t&&(r.errorInfo=t.message,t.stack&&(r.errorInfo+=`
27
+ ${t.stack}`)),this.sendRequest(Ei(this._configs.sdkAppId,Wi.LOG),r)}sendRequest(i,e){setTimeout(()=>Ai({url:i,body:JSON.stringify(e),priority:"low"}).catch(()=>{}),2e3)}},te=new Vd;var ri=new WeakMap;function mt({settings:s={retries:5,timeout:2e3},onError:i,onRetrying:e,onRetryFailed:t}){return function(r,o,n){let a=jt({retryFunction:n.value,settings:s,onError({error:c,retry:l,reject:u,retryFuncArgs:h}){var f;i?i.call(this,c,()=>{var _;(_=ri.get(r))!=null&&_.has(o)?l():u(c)},u,h):(f=ri.get(r))!=null&&f.has(o)?l():u(c)},onRetrying(c,l){var u;Jt(e)&&e.call(this,c,l),(u=ri.get(r))!=null&&u.has(o)&&(ri.get(r).get(o).stopRetry=l)},onRetryFailed:t});return n.value=function(...c){let l=ri.get(r);return l?l.set(o,{args:c}):ri.set(r,new Map([[o,{args:c}]])),a.apply(this,c).finally(()=>{var u;return(u=ri.get(r))==null?void 0:u.delete(o)})},n}}function Mo({fnName:s,callback:i,validateArgs:e=!0}){return function(t,r,o){let n=o.value;return o.value=function(...a){var c,l;if((c=ri.get(t))!=null&&c.has(s)){let{stopRetry:u,args:h}=ri.get(t).get(s),f=!0;if(e){for(let _ of h)if(!a.find(D=>D===_)){f=!1;break}}f&&(i&&i.apply(this,a),u&&u(),(l=ri.get(t))==null||l.delete(s))}return n.apply(this,a)},o}}var si=class extends H{constructor(e,t){super(e.id,`${t}-player`);this.kind=t;d(this,"id");d(this,"element",null);d(this,"track");d(this,"url");d(this,"attr");d(this,"mode");d(this,"muted");d(this,"_log");d(this,"_pausedRetryCount");d(this,"_isElementPlayingFired",!1);d(this,"_interval");d(this,"_delayDestroyTimeoutId",0);d(this,"_playSuccessResolve");d(this,"_isReplayByRecreateMediaStreamCalled",!1);d(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=hr,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${t}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&((e=this.element)==null?void 0:e.paused)===!1}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return p(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,t)=>{this._playSuccessResolve=e,this.element.play().then(e,t)})}catch(e){let t=P({key:L.PLAY_FAILED,data:{media:this.kind,error:e}});if(this.track&&!this.track.muted&&this._log.warn(e),t.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new y({code:S.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!Qi?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(m.ENDED),this._interval>0&&se.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():rd?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return Ge(this.element,this.element).add(m.PLAYING,e).add(m.ENDED,e).add(m.PAUSE,e).add(m.ERROR,e).add(m.LOADEDDATA,e).add(m.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let t=this.handleTrackEvent.bind(this);ii==null||ii.create(e,e).add(m.ENDED,t).add(m.MUTE,t).add(m.UNMUTE,t),e.readyState===m.ENDED&&this.handleTrackEvent({type:m.ENDED}),e.muted&&this.handleTrackEvent({type:m.MUTE})}}bindAutoPlayEvent(){E.on(I.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&be(e)}unbindEvents(){this.element&&be(this.element),this.unbindTrackEvents(),E.off(I.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case m.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(m.PLAYING),this._interval&&(se.clearTask(this._interval),this._interval=-1);break;case m.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(m.ENDED);break;case m.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(m.PAUSE),Se&&(this._interval=se.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case m.ERROR:if(this.element&&this.element.error){this.handlePaused(m.ERROR);let{code:r,message:o}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${r} message: ${o} userAgent: ${navigator.userAgent}`),te.uploadEvent({log:`stat-${this.kind}-${rt.PLAYER_ERROR}-${r}-${navigator.userAgent}`,error:this.element.error}),Zc||Kc?this.emit(le.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case m.LOADEDDATA:this.kind===m.VIDEO&&this.emit(le.LOADED_DATA);break;case m.LOADEDMETADATA:this.kind===m.VIDEO&&this.emit(le.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),te.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),b.addSuccessEvent({key:this.kind===m.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),te.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),b.addFailedEvent({key:this.kind===m.AUDIO?506700:516700,error:(t=this.element)==null?void 0:t.error}),this.emit(le.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,r)=>{Ii(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var o,n,a;this._log.warn(`element onerror ${(n=(o=this.element)==null?void 0:o.error)==null?void 0:n.code} fired after recreated mediaStream`),r((a=this.element)==null?void 0:a.error)}),Ii(5e3).then(()=>{var o,n;(!this.isPlaying||(o=this.element)!=null&&o.error)&&r((n=this.element)==null?void 0:n.error),t()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){switch(e.type){case m.ENDED:this.handleStopped(m.ENDED);break;case m.MUTE:this.handlePaused(m.MUTE);break;case m.UNMUTE:this._isElementPlayingFired?this.handlePlaying(m.UNMUTE):this.mode>0&&this.handlePlaying(this.mode.toString());break}}handlePlaying(e){var t;(t=this._playSuccessResolve)==null||t.call(this,e),this.emit(le.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this.emit(le.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this.emit(le.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};N([mt({settings:{retries:2,timeout:0},onError(e,t,r,o){o[0]=(o[0]||1e3)+1e3,t()}})],si.prototype,"doReplayByRecreateMediaStream",1),N([pe([],"PLAYING",{sync:!0})],si.prototype,"handlePlaying",1),N([pe("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],si.prototype,"handlePaused",1),N([pe([],"STOPPED",{sync:!0})],si.prototype,"handleStopped",1);var Mi="trtc_autoplay",Bd=`${Mi}_mask`,gs=`${Mi}_wrapper`,Fh=`${Mi}_header`,Fd=`${Mi}_content`,la=`${Mi}_action_wrapper`,$d=`${Mi}_question`,Hd=`${Mi}_collapse`,ua=`${Mi}_action_confirm`,$h=`${Mi}_detail`,Hh="#2473E8",Wd="dialog",D_=`${Wd}-show`,O_=`${Wd}-1`,M_=`${Wd}-2`,Gh=!1,Jd=()=>!!document.querySelector(`.${gs}`),Jh=`${Ht}/${Nt()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,Wh=`<br><a href='${Jh}' target='_blank'>${Nt()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,k_=`${Nt()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${Wh}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${Wh}`}`,Gd=class{constructor(){d(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");d(this,"_dialogNode",null);d(this,"_bodyPosition","");d(this,"_showDetail",!1);d(this,"_isCollapseClicked",!1);d(this,"_isQuestionClicked",!1);if(Nt()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!Gh){let i=document.createElement("style");i.innerHTML=`.${Bd}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${Bd} div:not(.${la}){display:block !important;}.${gs}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${gs} a{color:${Hh};}.${Fh}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Fd}{margin:8px 0;}.${la}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Hd}{margin-right:auto;cursor:pointer}.${$d}{height:100%;line-height:16px;cursor:pointer;}.${ua}{margin-left:8px;color:#fff;background:${Hh};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${ua}:hover{opacity:0.9;}.${Hd},.${ua},.${Fd},.${$d}{font-size:14px;}@media screen and (max-width:750px){.${gs}{width:80vw;}}`,document.head.appendChild(i),Gh=!0}this.addDiaLog()}createDiaLog(){let i=document.createElement("template");i.innerHTML=`<div class="${Bd}"><div class='${gs}'><div class='${Fh}'>${location.host}</div><div class='${Fd}'>${this.content}</div><div class='${$h}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${k_}</div><div class='${la}'></div></div></div>`.trim();let e=document.createElement("button");e.className=ua,e.innerText=Nt()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=$d,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
29
28
  <svg class="icon" width="18" height="18" p-id="2030" t="1639646523624" version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
30
29
  <path d="m464 784.35c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" p-id="2031"/>
31
30
  <path d="m512 960c-247.04 0-448-200.96-448-448s200.96-448 448-448 448 200.96 448 448-200.96 448-448 448zm0-831.71c-211.58 0-383.71 172.13-383.71 383.71 0 211.55 172.13 383.71 383.71 383.71 211.55 0 383.71-172.16 383.71-383.71 0-211.58-172.16-383.71-383.71-383.71z" p-id="2032"/>
32
31
  <path d="m512 673.7c-17.665 0-32.001-14.336-32.001-31.999v-54.112c0-52.353 40-92.352 75.328-127.65 25.887-25.92 52.672-52.672 52.672-74.017 0-53.343-43.072-96.735-95.999-96.735-53.823 0-95.999 41.536-95.999 94.559 0 17.665-14.336 31.999-32.001 31.999s-32.001-14.336-32.001-31.999c0-87.424 71.775-158.56 160-158.56s160 72.095 160 160.74c0 47.904-36.32 84.192-71.424 119.3-27.84 27.776-56.576 56.512-56.576 82.336v54.112c0 17.665-14.336 32.032-32.001 32.032z" p-id="2033"/>
33
32
  </svg>
34
- `,t.onclick=this.onQuestionClick.bind(this);let r=document.createElement("div");r.className=pu,r.innerText=`${pi()?"\u8BE6\u60C5 >":"Detail >"}`,r.onclick=this.onCollapseClick.bind(this);let o=i.content.firstChild,n=o.querySelector(`.${Cd}`);return n.appendChild(r),n.appendChild(t),n.appendChild(e),o}addDiaLog(){gu()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${fo}`).onclick=i=>i.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",j.info("show autoplay dialog"),Me.uploadEvent({log:EE}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){j.warn("confirm clicked, try resume stream"),x.emit(V.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let i=this._dialogNode.querySelector(`.${Cp}`);i.style.visibility=`${this._showDetail?"hidden":"visible"}`,i.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||Me.uploadEvent({log:TE}),this._isCollapseClicked=!0}onQuestionClick(){window.open(vp,"_blank"),this._isQuestionClicked||Me.uploadEvent({log:SE}),this._isQuestionClicked=!0}},Np=fu;var Zt=class extends Ji{constructor(e){super(e,S.VIDEO);l(this,"stat",{});l(this,"_calculateTimeout",-1);l(this,"viewMirror",!1);l(this,"objectFit");l(this,"container");l(this,"canvas");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,L(e.viewMirror)||(this.viewMirror=e.viewMirror),L(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return this._state!=="PLAYING"||this.element&&this.element.paused?!1:((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){var t;let e=document.createElement(S.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(t=this.container)==null||t.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var t;this.container=e,this.track&&this.elementToRender&&((t=this.container)==null||t.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(S.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(S.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var t;super.handleTrackEvent(e),e.type===S.MUTE&&((t=this.stat)!=null&&t.fps)&&(this.stat.fps=0)}handleElementEvent(e){var r;if(this.mode===2)return;super.handleElementEvent(e);let t=e.type;if(t===S.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(r=this.container)==null?void 0:r.id}`),this._pausedRetryCount>0&&!gu()&&(this._log.info(`${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let o=this.element.style.transform;t===S.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=o.replace("scaleX(-1)",""):t===S.LEAVE_PICTURE_IN_PICTURE&&!o.includes("scaleX")&&(this.element.style.transform=`${o} scaleX(-1)`)}}setCanvas(e,t=1){var r,o,n,a;this.canvas!==e&&((r=this.canvas)==null||r.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?t:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((o=this.element)==null||o.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((a=this.container)==null||a.appendChild(this.element)))}setAttr(e){let t=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);t.style=Object.assign({width:"100%",height:"100%"},t.style),super.setAttr(t)}get mirror(){return this.viewMirror}setRect(e,t){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${t}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}setPoster(e){this.element&&(this.element.poster=e)}stop(e=0){var t;super.stop(e),(t=this.canvas)==null||t.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(Ge.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(Is()&&this.element&&this._calculateTimeout<0){let e=0,t=null,r=(o,n)=>{this.stat.width=n.width,this.stat.height=n.height,t&&(this.stat.fps=Math.round((n.presentedFrames-t.presentedFrames)/(o-e)*1e3)),e=o,t=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var a;return(a=this.element)==null?void 0:a.requestVideoFrameCallback(r)},2e3))};this.element.requestVideoFrameCallback(r)}}catch(e){this._log.warn("init stat failed",e)}}};function Rr(s,i){return I(this,null,function*(){if(!s.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield s.audioWorklet.addModule(i),j.info("worklet addModule success")}catch(e){throw j.info(`worklet addModule catch error. ${e.message}`),e}})}var $n;typeof AudioContext!="undefined"?$n=AudioContext:typeof webkitAudioContext!="undefined"?$n=webkitAudioContext:typeof mozAudioContext!="undefined"&&($n=mozAudioContext);var Ci,Dp=-1;kp();function kp(){try{if(Ci)return;Ci=new $n({sampleRate:48e3}),Ci.onstatechange=()=>{j.info(`context state: ${Ci.state}${Ci.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),_o()},clearTimeout(Dp)}catch(s){j.error(`initAudioContext failed: ${s} typeof AudioContextClass: ${typeof $n}`),Dp=setTimeout(kp,1e3)}}var _o=()=>{Ci.state==="suspended"?(go(),document.addEventListener("click",_o)):Ci.state==="interrupted"?go():(document.removeEventListener("visibilitychange",_o),document.removeEventListener("click",_o))},Eu=0,Tu=-1;function go(){return new Promise((s,i)=>{if(Ci.state==="running")return s();Date.now()-Eu<1e3?(clearTimeout(Tu),Tu=setTimeout(()=>{Eu=Date.now(),Ci.resume().then(s,i)},1e3)):(clearTimeout(Tu),Eu=Date.now(),Ci.resume().then(s,i))}).catch(s=>{j.warn(`context resume failed: ${s}`),document.addEventListener("visibilitychange",_o)})}document.addEventListener("click",_o);var dt=s=>Ci;var ct=class{constructor(){l(this,"node");l(this,"node2");l(this,"pre",new Set);l(this,"next",new Set);l(this,"context");l(this,"connectedNodes",new Set);l(this,"nextInputChannelMap",new Map);l(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(i){this._channelCount=i,this.setChannelCount(this.node,i),this.setChannelCount(this.node2,i),this.next.forEach(e=>e.channelCount=i)}setChannelCount(i,e){!i||i instanceof ScriptProcessorNode||(i.channelCountMode="explicit",i.channelCount=e||this.channelCount||1)}setContext(i){this.context=i,this.node&&i.addMixWeight()}removeContext(){var i;this.node&&((i=this.context)==null||i.reduceMixWeight()),delete this.context}replaceNode(i){var e;if(i!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=i,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(t){j.error(t)}}setNode(i,e){var t;if(!this.node)try{(t=this.context)==null||t.addMixWeight(),this.node=i,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),Y.addSuccessEvent({key:502701})}catch(r){j.error(r),Y.addFailedEvent({key:502701,error:r})}}deleteNode(){var i;if(this.node)try{this._disconnect(),this.nextInputChannelMap.clear(),delete this.node,delete this.node2,(i=this.context)==null||i.reduceMixWeight(),this.preNodeReconnect(),Y.addSuccessEvent({key:502702})}catch(e){j.error(e),Y.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(i=>{i.node?i.reconnect():i.preNodeReconnect()})}connectNext(i){this.next.forEach(e=>{let t=this.nextInputChannelMap.get(e);i._connect(e.node,t)||e.connectNext(i)})}_connect(i,e=0){return!this.node||!i?!1:((this.node2||this.node).connect(i,0,e),this.connectedNodes.add(i),!0)}_disconnect(){this.connectedNodes.forEach(i=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(i)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(i,e=0){return this.next.add(i),i.pre.add(this),this.nextInputChannelMap.set(i,e),i}},yd=class extends ct{constructor(e=256){super();this.fftSize=e;l(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),t=1,r=0,o=0,n=`M${r},${o}`;for(let a=0;a<e.length;a++)o=e[a]/128*100/2,n+=`L${r},${o}`,r+=t;return n}},Fn=class{constructor(){l(this,"source",new ct);l(this,"gain",new ct);l(this,"destination",new ct)}get volume(){var i;return((i=this.gain.node)==null?void 0:i.gain.value)||1}setVolume(i){if(i===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(dt().createGain()),this.gain.node.gain.value=i}replaceSource(i){this.source.replaceNode(Hn(i))}get track(){var i;return(i=this.stream)==null?void 0:i.getAudioTracks()[0]}get stream(){var i;return(i=this.destination.node)==null?void 0:i.stream}},Eo=class extends Fn{constructor(e){super();this.context=e;l(this,"audioProcessor",new ct);l(this,"mixNode",new ct);l(this,"muteNode",new ct);l(this,"denoiser",new ct);l(this,"voiceChanger",new ct);this.source.pipeTo(this.audioProcessor).pipeTo(this.denoiser).pipeTo(this.voiceChanger).pipeTo(this.gain).pipeTo(this.destination),this.muteNode.pipeTo(this.mixNode).pipeTo(this.audioProcessor,1)}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.audioProcessor.setContext(this.context),this.denoiser.setContext(this.context),this.voiceChanger.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){this.context.inputs.has(this)&&(this.destination.deleteNode(),this.source.removeContext(),this.audioProcessor.removeContext(),this.denoiser.removeContext(),this.voiceChanger.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.audioProcessor.deleteNode(),this.muteNode.deleteNode(),this.mixNode.deleteNode(),this.denoiser.deleteNode(),this.voiceChanger.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},bd=class{constructor(){l(this,"audioContext",dt("audio-mixer"));l(this,"destination",this.audioContext.createMediaStreamDestination());l(this,"inputs",new Set);l(this,"mixWeight",0);this.destination.channelCount=1}addMixWeight(i=1){this.mixWeight+=i,this.mixWeight-1===i+1>>1&&this.mixOnChange()}reduceMixWeight(i=1){this.addMixWeight(-i)}close(){this.inputs.forEach(i=>i.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},Op=new WeakMap;function Hn(s){let i=Op.get(s);if(i)return i;let e=dt();if(s instanceof HTMLAudioElement)i=e.createMediaElementSource(s);else if(s instanceof MediaStreamTrack)i=e.createMediaStreamSource(new MediaStream([s]));else return s;return Op.set(s,i),i}var Kt=class Kt{constructor(i){l(this,"_volume",0);l(this,"_volumeDb",0);l(this,"_log");l(this,"_scriptProcessorNode",null);l(this,"_audioWorkletNode",null);l(this,"_interval",200);l(this,"ready",this.preload());let{log:e}=i;this._log=e,x.on(V.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-Kt.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!Kt.workletReady){let i='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(i<h?(s[0].set(this.cache.slice(0,i)),this.cache=this.cache.slice(i)):this.unmute&&s[0].set(t[0]),(i<h?s:t)[0]);if(a){let e=0;for(let t=0;t<a.length;++t)e=Math.max(Math.abs(a[t]),e);s=a.reduce((t,e)=>t+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';Kt.workletReady=Rr(Kt.audioContext,URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}return Kt.workletReady.then(()=>this.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(Kt.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=e=>{Kt.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||0,!i&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),i=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(i){this._log.error(`volumeMeter init audio worklet error: ${i}`),Me.logFailedEvent({userId:this._log.userId,eventType:Ft.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=dt("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{Kt.lastMessageTime=Date.now();let e=i.inputBuffer.getChannelData(0),t=0;for(let r=0;r<e.length;++r)t+=e[r]*e[r];this._volume=Math.sqrt(t/e.length)||0}}catch(i){this._log.error(`volumeMeter init script processor error: ${i}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,x.off(V.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(this._volumeDb*100)}handleAudioLevelInterval(i){var t;let{interval:e}=i;this._interval=e,(t=this._audioWorkletNode)==null||t.port.postMessage({name:"setIntervalTime",intervalTime:e})}};l(Kt,"lastMessageTime",0),l(Kt,"audioContext",dt("volume-meter")),l(Kt,"workletReady");var vd=Kt,Nd=class extends ct{constructor(e){super();l(this,"_volumeMeter");this._volumeMeter=new vd(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return I(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}getVolumeDb(){return this._volumeMeter.getVolumeDb()}write(e){if(this.node){let t=e.allocationSize({planeIndex:0}),r=new Float32Array(t>>2);e.copyTo(r,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:r},[r.buffer]),e.close()}}},As=vd;var Lp=gt(Mt(),1);var Mp=s=>i=>i.deviceId===s;var Gn=class{constructor(i,e="Input"){l(this,"kind");l(this,"type");l(this,"devices",[]);this.kind=i,this.type=e}update(i,e){let t=i.filter(r=>r.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&To(this.devices[0])){this.devices=t;return}e&&(t.forEach(r=>{if(r.deviceId&&!this.devices.find(Mp(r.deviceId))){let o=`${this.kind}${this.type}Added`;j.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}}),this.devices.forEach(r=>{if(r.deviceId&&!t.find(Mp(r.deviceId))){let o=`${this.kind}${this.type}Removed`;j.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}})),this.devices=t}hasDevice(i){return!!this.devices.find(e=>e.deviceId===i)}},Su=class extends Lp.EventEmitter{constructor(){super();l(this,"audioInputs",new Gn(S.AUDIO));l(this,"videoInputs",new Gn(S.VIDEO));l(this,"audioOutputs",new Gn(S.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||Le.run("interval",()=>{this.update()},{delay:1e4}))}init(){Dd().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return I(this,arguments,function*(e=0){let t=yield Dd(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}},ft=Yo||Gs?null:new Su;function To(s){return s.deviceId===s.groupId&&s.groupId===""}function Dd(){return I(this,arguments,function*(s=0){if(Ir()||!gd())return[];let i=yield navigator.mediaDevices.enumerateDevices();if(s!==0){let e={audio:!1,video:!1};if(i.forEach(t=>{To(t)&&(t.kind===S.AUDIO_INPUT?e.audio=!0:t.kind===S.VIDEO_INPUT&&(e.video=!0))}),s===2&&(e.audio=!1),s===1&&(e.video=!1),e.audio||e.video){let t;try{t=yield navigator.mediaDevices.getUserMedia(e),e.audio&&go()}catch(r){j.debug("capture before getDevices failed: ",r)}i=yield navigator.mediaDevices.enumerateDevices(),t==null||t.getTracks().forEach(r=>r.stop())}}return i.map((e,t)=>{let r={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${t}`};return e.deviceId.length>0&&Iu.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(r.getCapabilities=()=>e.getCapabilities()),r})})}function Wt(s=!1){return ft.update(s?1:0).then(i=>i.audioInputs.devices)}function ei(s=!1){return ft.update(s?2:0).then(i=>i.videoInputs.devices)}var xp=!1;function Pp(){return I(this,null,function*(){try{xp||(xp=!0,j.info(`speakers:${(yield Yr()).map(s=>` ${s.deviceId.slice(0,8)}: ${s.label}`)}`))}catch(s){}})}function Yr(s=!1){return I(this,null,function*(){return(Ze||pt)&&(s=!1),ft.update(s?1:0).then(i=>i.audioOutputs.devices)})}var Iu=new Set;function Up(s){if(s instanceof CanvasCaptureMediaStreamTrack||!(s instanceof MediaStreamTrack))return!1;let i=s.label.toLocaleLowerCase();if(i.includes("camera")||i.includes("webcam"))return!0;let t=`${((s==null?void 0:s.getSettings())||{}).deviceId}_${S.VIDEO_INPUT}`;return!!Iu.has(t)}function Vp(s){if(s instanceof CanvasCaptureMediaStreamTrack||!(s instanceof MediaStreamTrack))return!1;let i=s.label.toLocaleLowerCase();if(i.includes("mic")||i.includes("\u9EA6\u514B\u98CE"))return!0;let t=`${((s==null?void 0:s.getSettings())||{}).deviceId}_${S.AUDIO_INPUT}`;return!!Iu.has(t)}function Au(s,i){return I(this,null,function*(){let t=(yield Wt()).find(r=>r.deviceId===cs);return!i&&(t==null?void 0:t.groupId)===s||(t==null?void 0:t.groupId)===s&&t.label===i})}function Bp(o){return I(this,arguments,function*({newDeviceId:s,oldDeviceId:i,oldGroupId:e,oldLabel:t,kind:r}){return s!==i?!1:r===S.AUDIO&&s===cs?yield Au(e,t):!0})}var kd,Cu=class extends Fn{constructor(e){super();this.log=e;l(this,"volumeMeter");l(this,"volumeDestination");l(this,"analyser",new yd);this.volumeMeter=new Nd({log:this.log}),this.volumeDestination=new ct,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},Od=class s extends Ji{constructor(e){super(e,S.AUDIO);l(this,"_outputDeviceId");l(this,"_volume",1);l(this,"_destination",dt("player").createMediaStreamDestination());l(this,"pipeline");l(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new Cu(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Bi==="15.2"||Bi==="15.3"||Bi==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let r=kd||new Audio;r.setAttribute("autoplay","autoplay"),r.srcObject=this.getMediaStream(),r.muted=this.muted,this.element=r,De(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),r===kd&&(kd=void 0),this.bindElementEvents()}play(e){return I(this,null,function*(){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?this.pipeline.volumeMeter.init():this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(dt("player").createAnalyser()),Pp(),Ct(s.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return I(this,null,function*(){var t,r;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(r=(t=this.element).setSinkId)==null?void 0:r.call(t,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}},wd=class extends Od{setTrack(i){this.track!==i&&(this.unbindTrackEvents(),this.track=i,this.emit(Ge.MEDIA_TRACK_CHANGED,i),i&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([i]))))}setVolume(i){this._volume=i,this.element&&(this.element.volume=i)}},Md=class extends Od{constructor(e){super(e);l(this,"_sourceElement");l(this,"_output",new ct);this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(dt("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var t,r,o;((r=(t=this.element)==null?void 0:t.error)==null?void 0:r.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(Ge.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((o=e.getSettings())==null?void 0:o.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1?this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element"):Ze||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),at(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let t=this._sourceElement||this.element;t&&jr&&(kd=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var Cs=class extends fe{constructor({userId:e,sdkAppId:t,mediaType:r,room:o,PlayerClass:n=r===1?Md:Zt}){var a;super();l(this,"id",Rn());l(this,"userId","");l(this,"isRemote");l(this,"mediaType");l(this,"room");l(this,"user");l(this,"_log");l(this,"_inputTrack");l(this,"_outputTrack");l(this,"isPlayCalled");l(this,"container",null);l(this,"player");l(this,"subVideoPlayerMap");l(this,"muted",!1);l(this,"abortCtrl");l(this,"objectFit","cover");l(this,"mirror");l(this,"isScreen",!1);l(this,"manager");l(this,"trackSettings");l(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=r,this._log=j.createLogger({id:`${this.kind[0]}t`,userId:(a=o||this.room)==null?void 0:a.userId,remoteUserId:this instanceof yr?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof yr}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(Ge.PLAYER_STATE_CHANGED,d=>{x.emit(V.PLAYER_STATE_CHANGED,K({track:this},d)),this.emit("player-state-changed",d)}),this.kind===S.VIDEO&&(this.player.on(Ge.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(Ge.LOADED_DATA),x.emit(V.VIDEO_LOADED_DATA,{track:this})}),this.player.on(Ge.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(Ge.LOADED_META_DATA)}),this.player.on(Ge.MEDIA_TRACK_CHANGED,d=>{var c;(c=this.subVideoPlayerMap)==null||c.forEach(h=>h.setTrack(d))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(Ge.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||j}get kind(){return this.mediaType===1?S.AUDIO:S.VIDEO}get strMediaType(){return this.mediaType===4?S.VIDEO:this.mediaType===2?S.SCREEN:S.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,t){return I(this,null,function*(){let r=tt(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(t)}`),t&&!L(t.muted)&&this.setPlayerMute(t.muted),t&&!L(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof Zt&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&(this.container=r,this.player.setContainer(r)),tt(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),t)));return}if(t&&!L(t.muted)?this.setPlayerMute(t.muted):(!this.isRemote||this.kind===S.VIDEO)&&this.setPlayerMute(!0),t&&!L(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof Zt&&(this.player.setObjectFit(this.objectFit),t&&!L(t.poster)&&this.player.setPoster(t.poster)),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof Zt&&this.player.setContainer(r)),x.emit(V.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(t)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(t),tt(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),t))}catch(o){throw this.handleAutoPlayFailed(o),o}})}setMirror(e,t){if(this.isScreen||this.kind!==S.VIDEO||L(e)||e===this.mirror)return;this.mirror=e;let r=this.player;t&&(r=t);let o=this.manager;if(Qe(this.mirror)){r.setViewMirror(this.mirror),o&&(o.mirror=!1);return}switch(this.mirror){case"view":{o&&(o.mirror=!1),r.setViewMirror(!0);break}case"publish":{o&&(o.mirror=!0),r.setViewMirror(!0);break}case"both":o&&(o.mirror=!0),r.setViewMirror(!1)}}playSubContainer(e,t){return I(this,null,function*(){if(!this._outputTrack||this.kind===S.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((o,n)=>{var a;e.find(d=>n===d)||(o.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[o,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?t&&(L(t.objectFit)||a.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(n,new Zt({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${o+1}`})}))}let r=[...this.subVideoPlayerMap.values()];for(let o of r)o.setViewMirror(this.player.mirror),yield o.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(gl(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(t=>{t.stop()}),this.container=null)}resume(){return I(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),x.emit(e?V.TRACK_MUTED:V.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){vt(e,e).add(S.MUTE,this.onTrackMuted).add(S.UNMUTE,this.onTrackUnmuted).add(S.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===S.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){at(e)}setInputMediaStreamTrack(e){var r;let t=this._inputTrack;if(e!==t)return this._inputTrack=e,this.trackSettings=(r=e.getSettings)==null?void 0:r.call(e),e.enabled=!this.muted,t&&this.uninstallTrackEvent(t),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,t||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var r;let t=this._outputTrack;e!==t&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(r=e.getSettings)==null?void 0:r.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(t=>this.handleAutoPlayFailed(t)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(gl(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new Np;else{let t=()=>{this.resume().then(()=>{document.removeEventListener("click",t,!0)})};document.addEventListener("click",t,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof Zt?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,a,d;if(this.isFirstVideoFrameEmitted)return;let t=(n=this.mediaTrack)==null?void 0:n.getSettings(),r=(t==null?void 0:t.width)||((a=this.player.element)==null?void 0:a.videoWidth)||0,o=(t==null?void 0:t.height)||((d=this.player.element)==null?void 0:d.videoHeight)||0;e===Ge.LOADED_META_DATA&&!r&&!o||(e===Ge.LOADED_DATA&&!r&&!o&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,this.emit("first-video-frame",{width:r,height:o,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};q([qe([],fe.INIT,{sync:!0})],Cs.prototype,"close",1);var AE=Object.prototype.hasOwnProperty,{toString:iy}=Object.prototype;function CE(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(Ht(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(AE.call(s,i))return!1;return!0}}return!1}var qi=CE;var RE=function(s){return I(this,null,function*(){let i=bE(s);j.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let e=[],t=[],r=["label","deviceId","groupId"];i.audio&&(e=yield Wt(),j.info(`microphones: ${oi(e.map(o=>ne(K({},o),{groupId:o.groupId.substring(0,8)})),{keysToInclude:r})}`)),i.video&&(t=yield ei(),j.info(`cameras: ${oi(t,{keysToInclude:r})}`));try{let o=yield navigator.mediaDevices.getUserMedia(i);return ou&&o.getTracks().forEach(n=>{j.info(`${n.kind} capabilities: ${oi(n.getCapabilities(),{keysToInclude:xa})}`)}),i.audio&&go(),o}catch(o){let{message:n}=o;throw o.name==="NotFoundError"&&(s.video&&t&&t.length===0&&(n=pe({key:he.CAMERA_NOT_FOUND})),s.audio&&e&&e.length===0&&(n=pe({key:he.MICROPHONE_NOT_FOUND}))),new Q({code:H.INITIALIZE_FAILED,name:o.name,message:n,constraint:o.constraint})}})},yE=Ui({retryFunction:RE,settings:{retries:3,timeout:500},onError:({error:s,retry:i,reject:e,retryFuncArgs:t,retriedCount:r})=>{let o=r+1;s.name==="NotReadableError"||s.name==="OverconstrainedError"?(o===1?(t[0].video&&(t[0].maxResolution=!1,(!pt||t[0].width*t[0].height<=1920*1080)&&t[0].frameRate&&(t[0].frameRate=t[0].frameRate>10?10:5)),t[0].retryWhenExactFailed&&t[0].useExactDeviceId&&(t[0].useExactDeviceId=!1)):o===2?t[0].useDeviceIdOnly=!0:o===3&&!t[0].useExactDeviceId&&(t[0].useTrueAsConstraint=!0),i()):e(s),t[0].microphoneId&&$p(t[0].microphoneId,!1),t[0].cameraId&&$p(t[0].cameraId,!0)},onRetrying:s=>{j.warn(`getUserMedia NotReadableError observed, retrying [${s}/3]`)},onRetryFailed:s=>{Me.logFailedEvent({eventType:Ft.GET_USER_MEDIA_RETRY,error:s})},onRetrySuccess:s=>{Me.logSuccessEvent({eventType:Ft.GET_USER_MEDIA_RETRY}),Me.uploadEvent({log:`stat-${Ft.GET_USER_MEDIA_RETRY}-success-${s}`})}});function $p(s,i){return I(this,null,function*(){let t=(i?yield ei():yield Wt()).find(r=>r.deviceId===s);t&&Fe(t.getCapabilities)&&j.warn(oi(t.getCapabilities(),{keysToInclude:xa}))})}function bE(s){return{audio:vE(s),video:NE(s)}}function vE(s){if(!s.audio)return!1;if(s.useTrueAsConstraint)return!0;let i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:s.sampleRate};return!qi(s.microphoneId)&&(i.deviceId=s.useExactDeviceId?{exact:s.microphoneId}:s.microphoneId,s.useDeviceIdOnly)?i:(De(s.channelCount)&&(i.channelCount=s.channelCount),Qe(s.echoCancellation)&&!s.echoCancellation&&(i.echoCancellation=!1),Qe(s.noiseSuppression)&&!s.noiseSuppression&&(i.noiseSuppression=!1),Qe(s.autoGainControl)&&!s.autoGainControl&&(i.autoGainControl=!1),qi(i)?!0:i)}function NE(s){if(!s.video)return!1;if(s.useTrueAsConstraint)return!0;let{maxResolution:i=!0}=s,e={};return s.cameraId?e.deviceId=s.useExactDeviceId?{exact:s.cameraId}:s.cameraId:s.facingMode&&(e.facingMode=s.facingMode),s.useDeviceIdOnly&&!qi(e)?e:(s.width&&(e.width={ideal:s.width},i&&!Ue&&(e.width.max=s.width)),s.height&&(e.height={ideal:s.height},i&&!Ue&&(e.height.max=s.height)),Ue&&Ti&&s.width&&s.height&&s.width*s.height<352*288&&(e.width=s.width,e.height=s.height),s.frameRate&&(e.frameRate=s.frameRate),qi(e)?!0:e)}var Fp=yE;function xd(s){return ve((i,e)=>function(...t){return I(this,null,function*(){return yield s.apply(this,t),i.apply(this,t)})})}function Ut(s){return ve((i,e)=>function(...t){return I(this,null,function*(){let r=yield i.apply(this,t);return yield s.call(this,...t),r})})}function Ld(s){return ve((i,e)=>function(...t){return I(this,null,function*(){try{return yield i.apply(this,t)}catch(r){s.call(this,r)}})})}function ve(s){return function(i,e,t){return t.value=s(t.value,e),t}}var Hp=(()=>{let s=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&j.info(`visibility change: ${document.visibilityState}`),!s&&(document.addEventListener("visibilitychange",()=>{j.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),s=!0)}})();var DE=0,Pd=class{constructor(){l(this,"log",j.createLogger({id:`fq${++DE}`}));l(this,"isRunning",!1);l(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(i,e=!1){var o,n;let t=K({},i),r=new Promise((a,d)=>{t.resolve=a,t.reject=d});return t.promise=r,e?this.length<=1?this.queue.push(t):(n=(o=this.lastQueueItem)==null?void 0:o.promise)==null||n.then(t.resolve,t.reject):this.queue.push(t),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),r}shift(){let i=this.queue.shift();return this.log.debug(`shift ${this.length}`),i}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:i,args:e,context:t,resolve:r,reject:o}=this.queue[0];this.isRunning=!0,i.apply(t,e).then(r,o).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},Wn=new WeakMap,Ud=new WeakMap;function Xi(s=!1){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=Wn.get(this)||new Pd;return Wn.set(this,n),n.push({fn:r,args:o,context:this},s)},t}}function Gp(s){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=Wn.get(this);if(n){let a=n.queue.filter((d,c)=>{if(c===0)return!0;let h=!0;return d.args.forEach(u=>{o.find(m=>m===u)||(h=!1)}),h?(d.reject(new Q({code:H.API_CALL_ABORTED,message:s})),!1):!0});n.queue=a}return r.apply(this,o)},t}}function Vd(s){return function(i,e,t){let r=t.value;return t.value=function(...o){var a,d,c;let n=[];return(d=(a=Wn.get(this))==null?void 0:a.queue)==null||d.forEach(h=>n.push(h)),(c=Ud.get(this))==null||c.forEach(h=>h==null?void 0:h.queue.forEach(u=>n.push(u))),n.forEach(h=>{h.reject(new Q({code:H.API_CALL_ABORTED,message:s}))}),Wn.delete(this),Ud.delete(this),r.apply(this,o)},t}}function br(s){return function(i,e,t){let r=t.value,o=n=>s(...n);return t.value=function(...n){let a=Ud.get(this)||new Map,d=a.get(o(n))||new Pd;return a.set(o(n),d),Ud.set(this,a),d.push({fn:r,args:n,context:this})},t}}function zt(s,i){return ve((e,t)=>function(...r){let o=s;try{let n=e.apply(this,r),a=le();return Wr(n)?n.then(d=>(i?Y.addSuccessEvent({key:o,cost:le()-a}):Y.addSuccessEvent({key:o}),d)).catch(d=>{throw Y.addFailedEvent({key:o,error:d}),d}):(Y.addSuccessEvent({key:o}),n)}catch(n){throw Y.addFailedEvent({key:o,error:n}),n}})}var Rs=class Rs extends Cs{constructor(e,t){super({mediaType:e,PlayerClass:t});l(this,"isRemote",!1);l(this,"deviceId");l(this,"groupId","");l(this,"label","");l(this,"sourceTrack");l(this,"_isRecapturing",!1);l(this,"_lastRecaptureTime",0);l(this,"_onMuteTimeoutId",-1);l(this,"_encodeCheckTimeoutId",-1);l(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,t){throw new Error("Method not implemented.")}installTrackEvent(e){vt(e,e).add(S.MUTE,this.onTrackMuted).add(S.UNMUTE,this.onTrackUnmuted).add(S.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===S.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){at(e)}setStateToCapture(){}capture(e){return I(this,null,function*(){var t;try{let r=le();x.emit(V.LOCAL_TRACK_CAPTURE_START,{track:this});let o;e.customSource?(o=new MediaStream,o.addTrack(e.customSource)):((t=this.mediaTrack)==null||t.stop(),o=yield Fp(e));let n=o.getTracks()[0];return this.sourceTrack=n,yield this.setInputMediaStreamTrack(n),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),x.emit(V.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:le()-r}),o}catch(r){throw x.emit(V.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:r}),this.log.error(`getUserMedia error observed ${r}`),r}})}setInputMediaStreamTrack(e){return this.state===fe.INIT&&this.setStateToCapture(),super.setInputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var t;if(super.setOutputMediaStreamTrack(e),this.isPublishing||this.isPublished)return(t=this.room)==null?void 0:t.replaceTrack(this)}publish(e,t){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),t}unpublish(){this.room&&this.room.localTracks.delete(this),x.emit(V.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return I(this,null,function*(){if(this.mediaTrack&&Gi){let{deviceId:e,groupId:t}=this.mediaTrack.getSettings(),{label:r}=this.mediaTrack;(yield Bp({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=r,t&&(this.groupId=t),Dd().then(n=>{let a=n.find(d=>d.deviceId===e);a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===S.AUDIO&&!Vp(this.mediaTrack)||this.kind===S.VIDEO&&!Up(this.mediaTrack)||this._isRecapturing||e&&Ti&&pt)}onTrackMuted(){if(super.onTrackMuted(),Hp(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<js){setTimeout(()=>this.onTrackMuted(),js);return}this._onMuteTimeoutId=setTimeout(()=>I(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((Ze||ze)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return I(this,null,function*(){if(Ct(Rs.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<js){setTimeout(()=>this.onTrackEnded(),js);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return I(this,null,function*(){var r;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(r=this._inputTrack)==null||r.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let t={useExactDeviceId:!0};if(e==="user"||e==="environment")t.facingMode=e;else{let o;(this.kind==="audio"?yield Wt():yield ei()).find(a=>a.deviceId===e)&&(o=e),t.deviceId=o}return this.capture(t).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),x.emit(V.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(o=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${o.message}`),this.emit("5",o),x.emit(V.LOCAL_TRACK_RECAPTURE,{track:this,error:o})})})}getRecoverCaptureDeviceId(){return I(this,null,function*(){let e=this instanceof Nt;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let r=(zn.get(t)||0)+1;if(zn.set(t,r),r>=3){let o=e?(yield ei()).find(n=>!zn.has(n.deviceId)):(yield Wt()).find(n=>!zn.has(n.deviceId));o&&(this.log.warn(`${t} capture fail ${r} times, change new ${o.deviceId}`),t=o.deviceId)}}return t})}close(){var e;super.close(),this._inputTrack&&(this._inputTrack.stop(),this.uninstallTrackEvent(this._inputTrack)),(e=this.manager)==null||e.removeInput(this)}};q([qe(fe.INIT,"capture",{ignoreError:!0,sync:!0})],Rs.prototype,"setStateToCapture",1),q([Xi()],Rs.prototype,"capture",1),q([qe("capture","publish",{ignoreError:!0,success(){var t,r;this.room.localTracks.add(this),x.emit(V.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var n,a;if(!((((a=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:a.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let d=this.kind===S.AUDIO,c=this.stat.bytesSent>0;Y[c?"addSuccessEvent":"addFailedEvent"]({key:d?503700:513702}),c||(Y.addEnum({key:d?503701:513703,value:Cn()}),Me.uploadEvent({log:`stat-encode-failed-${this.kind}-${fs()||gr()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(e){let t="error";if(e.cause instanceof RTCError){let r=e.cause;r.message.includes("timeout")?t="timeout":r.code===H.API_CALL_ABORTED&&(t="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:t,error:e.cause||e})}}),zt(521714,!1)],Rs.prototype,"publish",1),q([ve(e=>function(){return I(this,null,function*(){let t=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:t,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),qe([],"capture",{sync:!0})],Rs.prototype,"unpublish",1);var yr=Rs,zn=new Map;x.on(V.SWITCH_DEVICE_SUCCESS,s=>{s.track.deviceId&&zn.delete(s.track.deviceId)});var ti=class s extends yr{constructor(e){super(1,wd);l(this,"mediaType",1);l(this,"volume",0);l(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});l(this,"playerMuted",!0);l(this,"pipeline");l(this,"earMonitorGainNode",new ct);l(this,"_output",new ct);l(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});l(this,"mixedAudioReferenceMap",new Map);this.manager=e,this.pipeline=new Eo(e),this.pipeline.gain.pipeTo(this.earMonitorGainNode).pipeTo(this._output),this.pipeline.gain.pipeTo(this.player.pipeline.volumeMeter),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}get dbVolume(){return As.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}setInputMediaStreamTrack(e){return I(this,null,function*(){let t=this.trackSettings||{};Y.addEnum({key:501701,value:t.channelCount||0,useUV:!1}),Y.addEnum({key:501702,value:t.sampleRate||0,useUV:!1}),Y.addEnum({key:502700,value:0});let{sampleRate:r,channelCount:o}=t;this._log.info(`local audio track input ${JSON.stringify({sampleRate:r,channelCount:o})}`),this.pipeline.source.channelCount=o||1,this.pipeline.replaceSource(e),yield Ct(s.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:t,useExactDeviceId:r=!0,retryWhenExactFailed:o=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:r,retryWhenExactFailed:o,customSource:t})}switchDevice(e){return I(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===cs){if(yield Au(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.mediaTrack&&this.mediaTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),x.emit(V.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(t){throw this.log.error(`switch microphone failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}}})}listenDeviceChange(){ft&&!ft.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&ft.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return I(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),Ye(this.userId,{eventId:2003,param1:6,streamType:1});let t=yield Wt();t[0]?this.recapture(t[0].deviceId):ft.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(o){return I(this,arguments,function*({echoCancellation:e,noiseSuppression:t,autoGainControl:r}){let n=this.sourceTrack||this.mediaTrack;if(!n)return;let a=n.getConstraints(),d=!1;!L(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a.echoCancellation=e,d=!0),!L(t)&&t!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=t,a.noiseSuppression=t,d=!0),!L(r)&&r!==this.profile.autoGainControl&&(this.profile.autoGainControl=r,a.autoGainControl=r,d=!0),d&&(Ue||pt?yield n.applyConstraints(a).catch(c=>this._log.warn("update3A failed: ",c)):this.deviceId&&(yield this.recapture(this.deviceId)))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&Y.addEnum({key:502700,value:2})}setAudioVolume(e){super.setAudioVolume(0),Ze&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(dt().createGain()),this._output.setNode(dt().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this._inputTrack&&!pt)return this.update3A({echoCancellation:e})}addDenoiser(e){var t;if(qt<=92&&((t=this.trackSettings)==null?void 0:t.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}Y.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1)}mixAudioReference(e,t){if(this.mixedAudioReferenceMap.has(t))return;this.log.info(`mixAudioReference() => ${t}`);let r=Hn(e),o=new ct,n=dt().createGain();n.gain.value=1;let a=new ct;o.pipeTo(a).pipeTo(this.pipeline.mixNode),o.setNode(r),a.setNode(n),this.mixedAudioReferenceMap.set(t,[o,a])}unMixAudioReference(e){let[t,r]=this.mixedAudioReferenceMap.get(e)||[];t&&(this.log.info(`unMixAudioReference() => ${e}`),t.deleteNode(),r==null||r.deleteNode(),this.mixedAudioReferenceMap.delete(e))}setAudioReferenceVolume(e,t){let[r,o]=this.mixedAudioReferenceMap.get(e)||[];o!=null&&o.node&&(o.node.gain.value=t/100,this.log.info(`setAudioReferenceVolume() => ${e} ${o.node.gain.value}`))}addAudioProcessor(e,t,r){this.pipeline.muteNode.setNode(r),this.pipeline.mixNode.setNode(t),this.pipeline.audioProcessor.setNode(e),this.enableTrackAEC(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0))}removeAudioProcessor(e){this.pipeline.audioProcessor.node===e&&(this.pipeline.audioProcessor.deleteNode(),this.pipeline.muteNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}close(){this.mixedAudioReferenceMap.forEach(([e,t])=>{e.deleteNode(),t.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),ft.off("audioInputAdded",this.handleMicrophoneAdded,this),ft.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return I(this,null,function*(){try{yield Ct(s.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield Wt()).find(o=>o.deviceId!==e);if(r)yield Ct(s.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((t,r)=>r?r({frame:t}):t,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var vr=class{constructor(i,e=!1){this.dataView=i;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,t=[],r=0;for(let n=i;n<=e;n++){let a=this.dataView.getInt8(n);switch(a){case 0:case 1:case 2:case 3:r===2&&(t.push(3),r=0),a==0?r++:r=0,t.push(a);break;default:r=0,t.push(a);break}}t.push(this.dataView.getInt8(this.dataView.byteLength-1));let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=o}removePreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,t=[],r=0;for(let n=i;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:r++,t.push(this.dataView.getInt8(n));break;case 3:r!==2&&t.push(this.dataView.getInt8(n)),r=0;break;default:t.push(this.dataView.getInt8(n)),r=0;break}let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=o}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let i=6;for(let e=6;e<this.dataView.buffer.byteLength&&(i++,this.dataView.getUint8(e)===255);e++);return i}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let i=0,e=6;for(let o=6;o<this.dataView.buffer.byteLength;o++){let n=this.dataView.getUint8(o);if(e++,n===255)i+=255;else{i+=n;break}}let t=new ArrayBuffer(i),r=new DataView(t);for(let o=0;o<t.byteLength;o++,e++)r.setInt8(o,this.dataView.getInt8(e));return r}};var Bd=class{constructor(){l(this,"_seiMessageList",[]);l(this,"_smallSeiMessageList",[]);l(this,"_seiPayloadType",243)}encodeSEINalu(i){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,o=[];o.push(0,0,0,1,6,this._seiPayloadType);for(let a=0;a<t;a++)o.push(255);o.push(r);let n=new DataView(i);return o.push(...new Uint8Array(n.buffer)),o.push(128),new vr(new DataView(new Uint8Array(o).buffer),!0)}sendSEI(i,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(i),e!=null&&e.small&&this._smallSeiMessageList.push(i)}isEmpty(){return!this._seiMessageList.length}getNaluCount(i){let e=0,t=0,r=new DataView(i);for(let o=0;o<i.byteLength;o++)switch(r.getUint8(o)){case 0:e++;break;case 1:(e===2||e===3)&&t++,e=0;break;default:e=0;break}return t}encode(i,e){let t=e?this._smallSeiMessageList:this._seiMessageList;if(t.length>0&&i.data.byteLength>0){let o=9-this.getNaluCount(i.data);if(o<=0)return 0;let n=t.splice(0,o).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((m,p)=>m+p.dataView.byteLength,0),d=new ArrayBuffer(a+i.data.byteLength),c=new DataView(d),h=new DataView(i.data),u=0;for(let m=0;m<n.length;m++)for(let p=0;p<n[m].dataView.byteLength;p++)c.setInt8(u++,n[m].dataView.getInt8(p));for(let m=0;m<i.data.byteLength;m++)c.setInt8(u++,h.getInt8(m));return i.data=d,n.length}return 0}};var ys=class ys extends yr{constructor(e,t=4){super(t,Zt);l(this,"profile",{width:640,height:480,frameRate:15,bitrate:500});l(this,"avoidCropping",!1);l(this,"_scaleResolutionDownBy");l(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});l(this,"small");l(this,"isNeedToSetBandwidth");l(this,"muteImage");l(this,"manager");l(this,"_seiCodec",new Bd);this.manager=e;let r=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(ne(K({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",r),this.on("publish",r),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!Gi||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return I(this,null,function*(){var t,r,o;if(Oe(e)){if(this.muteImage===e)return;yield(t=this.manager)==null?void 0:t.deleteWatermark("mute"),yield(r=this.manager)==null?void 0:r.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,Ct(ys.prototype,this,"setMute").call(this,!1)}else yield(o=this.manager)==null?void 0:o.deleteWatermark("mute"),this.muteImage=void 0,Ct(ys.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:t,useExactDeviceId:r=!0,customSource:o,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:t||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:r,retryWhenExactFailed:n,customSource:o})}setProfile(e){let t=K({},e),r=t.width>t.height;t.width*t.height<=160*120&&ze&&xt&&(this.log.warn(`resolution is ${t.width}*${t.height}, fallback to 240*180`),t.width=r?240:180,t.height=r?180:240,t.bitrate=Math.max(t.bitrate,150)),t.width*t.height>1280*720&&kl&&(t.width=r?1280:720,t.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),this.avoidCropping&&(xt||Ue)&&!wl()&&t.width*t.height<=640*360&&t.width/t.height===16/9&&(this._scaleResolutionDownBy=1280/t.width,t.width=1280,t.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),t.bitrate&&(this.isNeedToSetBandwidth=t.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(t):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(ne(K({},this.profile),{width:1920,height:1080})))}applyProfile(){return I(this,null,function*(){var a;if(!this.mediaTrack)return;let{width:e=0,height:t=0}=(this.sourceTrack||this.mediaTrack).getSettings(),r=e*t,o=this.settings;if(!(!(o.height!==this.profile.height||o.width!==this.profile.width||o.frameRate!==this.profile.frameRate)||!this.deviceId)&&(Xt===16?yield this.recapture(this.deviceId):(yield(a=this.sourceTrack||this.mediaTrack)==null?void 0:a.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth)){this.isNeedToSetBandwidth=!1;let{width:d=0,height:c=0}=(this.sourceTrack||this.mediaTrack).getSettings(),h=d*c;if(h&&r&&h===r){this.log.warn("set bandwidth failed: resolution is not changed");return}return this.room.setBandWidth({bandwidth:this.profile.bitrate,type:S.VIDEO,videoType:S.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate};return Gi&&this.mediaTrack&&Object.assign(e,this.mediaTrack.getSettings()),e}get scaleResolutionDownBy(){if(this._scaleResolutionDownBy)return this._scaleResolutionDownBy;let{settings:e}=this;return e.width===this.profile.width&&e.height===this.profile.height?1:Ua()&&this.profile.width>this.profile.height&&e.height>e.width?Math.max(e.width/this.profile.height,e.height/this.profile.width,1):Math.max(e.width/this.profile.width,e.height/this.profile.height,1)}isAllowed2k4k(e){var t;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((t=this.room.scheduleResult.trtcAutoConf)==null?void 0:t["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return I(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let t={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?t.facingMode=e:t.deviceId=e,this.mediaTrack.stop(),yield this.capture(t),x.emit(V.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(t){throw this.log.error(`switch camera failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}})}listenDeviceChange(){ft&&!ft.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&ft.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return I(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),Ye(this.userId,{eventId:2003,param1:7,streamType:2});let t=yield ei();t[0]?this.recapture(t[0].deviceId):ft.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return I(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,t){if(!this.manager)return e;let r=t?8:this.mediaType;return this.manager.encodePipeline.reduceRight((o,n)=>n?n({frame:o,mediaType:r}):o,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,t){return L(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,t)}close(){ft.off("videoInputAdded",this.handleCameraAdded,this),ft.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return I(this,null,function*(){try{yield Ct(ys.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield ei()).find(o=>o.deviceId!==e);if(r)yield Ct(ys.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}};q([Ut(function(e){this.setContentHint(e.contentHint||"motion")})],ys.prototype,"capture",1);var Nt=ys;var zp=Rn();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:zp,exposeOrigin:!0,permittedOrigins:["*"]})}catch(s){}var ME=function(s){return I(this,null,function*(){let i=null,e=PE(s);j.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);s.systemAudio&&t.getAudioTracks().length===0&&(co&&qt<74||pt||Ue)&&j.warn("Your browser not support capture system audio");let r=t.getVideoTracks()[0];if(r){if(s.frameRate)try{yield r.applyConstraints({frameRate:{min:s.frameRate,ideal:s.frameRate},width:s.width,height:s.height})}catch(o){j.warn(`screen applyConstraints failed: ${o}`)}s.captureElement&&(yield xE(r,s.captureElement))}if(s.audio){let o=LE(s);j.info(`getUserMedia with constraints: ${JSON.stringify(o)}`),i=yield navigator.mediaDevices.getUserMedia(o),t.addTrack(i.getAudioTracks()[0])}return t})};function xE(s,i){return I(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&Fe(s.cropTo))try{if(!(((e=s.getCaptureHandle())==null?void 0:e.handle)===zp))return;let r=yield CropTarget.fromElement(i);yield s.cropTo(r)}catch(t){j.warn(`cropTo target failed ${t}`)}})}function LE(s){let i={echoCancellation:s.echoCancellation,autoGainControl:s.autoGainControl,noiseSuppression:s.noiseSuppression,sampleRate:s.sampleRate,channelCount:s.channelCount};return L(s.microphoneId)||(i.deviceId=s.microphoneId),{audio:i,video:!1}}function PE(s){let i={preferCurrentTab:s.preferDisplaySurface==="current-tab"||!!s.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:pt?{max:s.width}:{ideal:s.width,max:s.width},height:pt?{max:s.height}:{ideal:s.height,max:s.height},frameRate:s.frameRate,displaySurface:s.preferDisplaySurface||"monitor"};if(i.video=e,s.systemAudio){let{echoCancellation:t=!0,noiseSuppression:r=!1,autoGainControl:o=!1}=s;i.audio={echoCancellation:t,noiseSuppression:r,autoGainControl:o,sampleRate:48e3}}return i}var jp=ME;var jt=class extends Nt{constructor(e){super(e,2);l(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});l(this,"objectFit","contain");l(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}capture(h){return I(this,arguments,function*({systemAudio:e=!1,autoGainControl:t,echoCancellation:r,noiseSuppression:o,audioTrack:n,videoTrack:a,captureElement:d,preferDisplaySurface:c}){try{let u;return a||n?(u=new MediaStream,a&&u.addTrack(a),n&&u.addTrack(n)):u=yield jp({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:t,echoCancellation:r,noiseSuppression:o,captureElement:d,preferDisplaySurface:c}),yield this.setInputMediaStreamTrack(u.getVideoTracks()[0]),u}catch(u){throw this.log.error(`getDisplayMedia error observed ${u}`),u instanceof Q?u:new Q({code:H.INITIALIZE_FAILED,name:u.name,message:u.message})}})}switchDevice(e){return I(this,null,function*(){throw new Error("Method not implemented.")})}};q([Ut(function(e){this.setContentHint(e.contentHint||"detail")})],jt.prototype,"capture",1);var Yi=class extends ti{constructor(i){super(i),this._log.id=`s-${this._log.id}`}};var UE="registerProcessor('dumper', class extends AudioWorkletProcessor {process(inputs) {this.port.postMessage(inputs);return true;}});",Ru;function jn(s){return I(this,null,function*(){let i=dt("dump");Ru||(Ru=Rr(i,URL.createObjectURL(new Blob([UE],{type:"application/javascript"})))),yield Ru;let e=new AudioWorkletNode(i,"dumper",{numberOfInputs:s.length,numberOfOutputs:0});return s.forEach((t,r)=>t.connect(e,0,r)),new ReadableStream({start(t){e.port.onmessage=r=>{t.enqueue(r.data)}},cancel(){s.forEach(t=>t.disconnect(e)),e.port.close()}})})}var $d=class extends bd{constructor(e){super();this.room=e;l(this,"_localAudioTrack");l(this,"_localScreenAudioTrack");l(this,"log",j.createLogger({id:"am"}));l(this,"denoiser");l(this,"voiceChanger");l(this,"mixChangedDebounce");l(this,"audioProcessor");l(this,"encodePipeline",[]);l(this,"decodePipeline",[]);l(this,"audioReferenceMap",new Map);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.handleAudioReferenceChanged=this.handleAudioReferenceChanged.bind(this),x.on(V.AUDIO_PROCESSOR_REFERENCE_CHANGED,this.handleAudioReferenceChanged)}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}dump(e){var h,u;if(!this._localAudioTrack)return;let t=[],r=[];(h=this._localAudioPipline)!=null&&h.source.node&&(t.push(this._localAudioPipline.source.node),r.push("mic")),(u=this._localAudioPipline)!=null&&u.denoiser.node&&(t.push(this._localAudioPipline.denoiser.node),r.push("mic-processed")),this.mixWeight>1&&(t.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),r.push("mix")),this.log.info(`dump audio track ${r}, duration: ${e}`);let o=new AbortController,n=[],a=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),o.abort("timeout")},e*1e3),d=()=>{for(let m=0;m<r.length;m++){let p=URL.createObjectURL(new Blob(n[m])),g=document.createElement("a");g.href=p,g.download=`${r[m]}.pcm`,g.style.display="none",document.body.appendChild(g),g.click(),URL.revokeObjectURL(p),g.remove()}clearTimeout(a),o.abort("download")},c=jn(t).then(m=>m.pipeTo(new WritableStream({write(p){p.forEach((g,f)=>n[f]=n[f]?n[f].concat(g[0]):[g[0]])}}),o).catch(p=>d));return{then:c.then.bind(c),download:d}}getPCM(e){var n;if(L(WritableStream)){this.log.warn("getPCM failed: browser not support WritableStream");return}if(!((n=this._localAudioPipline)!=null&&n.source.node)){this.log.warn("getPCM failed: no local audio track");return}this.log.warn("getPCM");let t=new Float32Array(1920),r=0,o=new AbortController;return jn([this._localAudioPipline.source.node]).then(a=>a.pipeTo(new WritableStream({write(d){d[0][0]&&(t.set(d[0][0],r),r+=d[0][0].length,r>=1920&&(r=0,e(t),t=new Float32Array(1920)))}}),o).catch(d=>this.log.warn(`stop getPCM reason:${d}`))),o}get hasScreenAudioTrack(){return this._localScreenAudioTrack!==null}get hasAudioTrack(){return!L(this._localAudioTrack)}changeInput(e){if(e instanceof Yi)return this._localScreenAudioTrack=e,e.pipeline.connect(),this.mixOnChange();if(e instanceof ti)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((t,r)=>{e.mixAudioReference(t,r)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof Ri)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixAudioReference(e,t){var r;(r=this._localAudioTrack)==null||r.mixAudioReference(e,t)}unMixAudioReference(e){var t;(t=this._localAudioTrack)==null||t.unMixAudioReference(e)}setAudioReferenceVolume(e,t){var r;(r=this._localAudioTrack)==null||r.setAudioReferenceVolume(e,t)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,t;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(t=this._localScreenAudioTrack)==null?void 0:t.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof Yi?delete this._localScreenAudioTrack:e instanceof ti?delete this._localAudioTrack:e instanceof Ri}addDenoiser(e){var t;this.denoiser=e,(t=this._localAudioTrack)==null||t.addDenoiser(e)}addAudioProcessor(e,t,r){var o;this.audioProcessor=[e,t,r],(o=this._localAudioTrack)==null||o.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((n,a)=>{var d;(d=this._localAudioTrack)==null||d.mixAudioReference(n,a)})}removeDenoiser(e){var t;delete this.denoiser,(t=this._localAudioTrack)==null||t.removeDenoiser(e)}addVoiceChanger(e,t){var r;this.voiceChanger=[e,t],(r=this._localAudioTrack)==null||r.pipeline.voiceChanger.setNode(e,t)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}removeAudioProcessor(e){var t;delete this.audioProcessor,(t=this._localAudioTrack)==null||t.removeAudioProcessor(e)}destroy(){x.off(V.AUDIO_PROCESSOR_REFERENCE_CHANGED,this.handleAudioReferenceChanged),this.close()}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}handleAudioReferenceChanged({room:e,type:t,audioReference:r,refId:o,volume:n}){if(e===this.room){if(t==="add"){if(this.audioReferenceMap.get(o)||!r||(this.audioReferenceMap.set(o,r),!this.audioProcessor))return;this.mixAudioReference(r,o)}else if(t==="remove")this.audioReferenceMap.get(o)&&(this.audioReferenceMap.delete(o),this.unMixAudioReference(o));else if(t==="update_volume"){if(!this.audioProcessor||L(n))return;this.setAudioReferenceVolume(o,n)}}}};function Fd(s=30,i=2){return ve((e,t)=>function(...r){return new Promise((o,n)=>{let a=setTimeout(()=>{let d=new Q({code:H.API_CALL_TIMEOUT,message:`checkPendingPromise ${t}() timeout ${s}s`});j.warn(d),i===2?n(d):i===1&&o()},s*1e3);e.apply(this,r).then(o,n).finally(()=>{clearTimeout(a)})})})}var ch={};nr(ch,{Events:()=>Ke,Inspect:()=>di,LastSink:()=>bs,Sink:()=>Ee,Subscribe:()=>vs,TimeoutError:()=>Jn,audit:()=>ET,bindCallback:()=>rT,bindNodeCallback:()=>sT,buffer:()=>jE,bufferCount:()=>zE,bufferTime:()=>UT,call:()=>Jp,catchError:()=>oh,combineLatest:()=>Xp,concat:()=>$E,concatMap:()=>DT,concatMapTo:()=>kT,count:()=>aT,create:()=>we,debounce:()=>TT,debounceTime:()=>ST,defer:()=>Qp,delay:()=>VT,deliver:()=>Ae,dispose:()=>Hd,elementAt:()=>IT,empty:()=>Qn,every:()=>bT,exhaustMap:()=>MT,exhaustMapTo:()=>xT,filter:()=>Zi,find:()=>AT,findIndex:()=>CT,first:()=>RT,fromAnimationFrame:()=>tT,fromArray:()=>XE,fromEvent:()=>We,fromEventPattern:()=>QE,fromFetch:()=>YE,fromIterable:()=>ZE,fromPromise:()=>Kp,fromReadableStream:()=>eT,fromReader:()=>KE,groupBy:()=>LT,identity:()=>VE,ignoreElements:()=>uT,iif:()=>HE,inspect:()=>qp,interval:()=>Ou,last:()=>yT,map:()=>Yn,mapTo:()=>NT,max:()=>dT,merge:()=>Du,mergeMap:()=>OT,mergeMapTo:()=>wT,min:()=>cT,never:()=>oT,nothing:()=>$e,of:()=>qE,pairwise:()=>vT,pipe:()=>He,race:()=>ku,range:()=>iT,reduce:()=>wu,retry:()=>HT,scan:()=>sh,share:()=>Nr,shareReplay:()=>FE,skip:()=>mT,skipUntil:()=>pT,skipWhile:()=>Jd,startWith:()=>qn,subject:()=>Vt,subscribe:()=>it,sum:()=>lT,switchMap:()=>Ao,switchMapTo:()=>Ds,take:()=>Dr,takeLast:()=>hT,takeUntil:()=>St,takeWhile:()=>ef,tap:()=>dh,throttle:()=>_T,throwError:()=>nT,timeInterval:()=>PT,timeout:()=>FT,timer:()=>Xn,toPromise:()=>BT,toReadableStream:()=>$T,withLatestFrom:()=>WE,zip:()=>GE});function $e(...s){}var Jp=s=>s(),VE=s=>s;function Hd(){this.dispose()}var qp=()=>typeof __FASTRX_DEVTOOLS__!="undefined",BE=1,di=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(i){let e=new yu(i,this,this.streamId++);return Ke.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},bs=class{constructor(){this.defers=new Set,this.disposed=!1}next(i){}complete(){this.dispose()}error(i){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=$e,this.error=$e,this.next=$e,this.dispose=$e,this.subscribe=$e,this.doDefer()}subscribe(i){return i instanceof di?i.subscribe(this):i(this),this}get bindSubscribe(){return i=>this.subscribe(i)}doDefer(){this.defers.forEach(Jp),this.defers.clear()}defer(i){this.defers.add(i)}removeDefer(i){this.defers.delete(i)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},Ee=class extends bs{constructor(i){super(),this.sink=i,i.defer(this.bindDispose)}next(i){this.sink.next(i)}complete(){this.sink.complete()}error(i){this.sink.error(i)}},vs=class extends bs{constructor(i,e=$e,t=$e,r=$e){if(super(),this._next=e,this._error=t,this._complete=r,this.then=$e,i instanceof di){let o={toString:()=>"subscribe",id:0,source:i};this.defer(()=>{Ke.defer(o,0)}),Ke.create(o),Ke.pipe(o),this.sourceId=o.id,this.subscribe(i),Ke.subscribe({id:o.id,end:!0}),e==$e?this._next=n=>Ke.next(o,0,n):this.next=n=>{Ke.next(o,0,n),e(n)},r==$e?this._complete=()=>Ke.complete(o,0):this.complete=()=>{this.dispose(),Ke.complete(o,0),r()},t==$e?this._error=n=>Ke.complete(o,0,n):this.error=n=>{this.dispose(),Ke.complete(o,0,n),t()}}else this.subscribe(i)}next(i){this._next(i)}complete(){this.dispose(),this._complete()}error(i){this.dispose(),this._error(i)}};function He(s,...i){return i.reduce((e,t)=>t(e),s)}function we(s,i,e){if(qp()){let t=Object.defineProperties(Object.setPrototypeOf(s,di.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:i,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Ke.create(t);for(let r=0;r<e.length;r++){let o=e[r];typeof o=="function"&&o instanceof di&&Ke.addSource(t,o)}return t}return s}function Ae(s,i){return function(...e){return t=>{if(t instanceof di){let r=we(o=>{let n=new s(o,...e);n.sourceId=r.id,n.subscribe(t)},i,arguments);return r.source=t,Ke.pipe(r),r}else return r=>t(new s(r,...e))}}}function Zr(s,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:s,payload:i}})}var yu=class extends Ee{constructor(i,e,t){super(i),this.source=e,this.id=t,this.sourceId=i.sourceId,this.defer(()=>{Ke.defer(this.source,this.id)})}next(i){Ke.next(this.source,this.id,i),this.sink.next(i)}complete(){Ke.complete(this.source,this.id),this.sink.complete()}error(i){Ke.complete(this.source,this.id,i),this.sink.error(i)}},Ke={addSource(s,i){Zr("addSource",{id:s.id,name:s.toString(),source:{id:i.id,name:i.toString()}})},next(s,i,e){Zr("next",{id:s.id,streamId:i,data:e&&e.toString()})},subscribe({id:s,end:i},e){Zr("subscribe",{id:s,end:i,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(s,i,e){Zr("complete",{id:s.id,streamId:i,err:e?e.toString():null})},defer(s,i){Zr("defer",{id:s.id,streamId:i})},pipe(s){Zr("pipe",{name:s.toString(),id:s.id,source:{id:s.source.id,name:s.source.toString()}})},update(s){Zr("update",{id:s.id,name:s.toString()})},create(s){s.id||(s.id=BE++),Zr("create",{name:s.toString(),id:s.id})}},Jn=class extends Error{constructor(i){super(`timeout after ${i}ms`),this.timeout=i}};var Gd=class extends bs{constructor(i){super(),this.source=i,this.sinks=new Set}add(i){i.defer(()=>this.remove(i)),this.sinks.add(i).size===1&&(this.reset(),this.subscribe(this.source))}remove(i){this.sinks.delete(i),this.sinks.size===0&&this.dispose()}next(i){this.sinks.forEach(e=>e.next(i))}complete(){this.sinks.forEach(i=>i.complete()),this.sinks.clear()}error(i){this.sinks.forEach(e=>e.error(i)),this.sinks.clear()}};function Nr(){return s=>{let i=new Gd(s);if(s instanceof di){let e=we(t=>{i.add(t)},"share",arguments);return i.sourceId=e.id,e.source=s,Ke.pipe(e),e}return we(i.add.bind(i),"share",arguments)}}function Du(...s){return we(i=>{let e=new Ee(i),t=s.length;e.complete=()=>{--t===0&&i.complete()},s.forEach(e.bindSubscribe)},"merge",arguments)}function ku(...s){return we(i=>{let e=new Map;s.forEach(t=>{let r=new Ee(i);e.set(t,r),r.complete=()=>{e.delete(t),e.size===0?i.complete():r.dispose()},r.next=o=>{e.delete(t),e.forEach(n=>n.dispose()),r.resetNext(),r.resetComplete(),r.next(o)}}),s.forEach(t=>e.get(t).subscribe(t))},"race",arguments)}function $E(...s){return we(i=>{let e=0,t=s.length,r=new Ee(i);r.complete=()=>{e<t&&!r.disposed?(r.doDefer(),r.subscribe(s[e++])):i.complete()},r.complete()},"concat",arguments)}function FE(s){return i=>{let e=new Gd(i),t=[];return e.next=function(r){t.push(r),t.length>s&&t.shift(),this.sinks.forEach(o=>o.next(r))},we(r=>{r.defer(()=>e.remove(r)),t.forEach(o=>r.next(o)),e.add(r)},"shareReplay",arguments)}}function HE(s,i,e){return we(t=>s()?i(t):e(t),"iif",arguments)}function Xp(...s){return we(i=>{let e=s.length,t=e,r=e,o=new Array(e),n=()=>{--r===0&&i.complete()},a=(d,c)=>{let h=new Ee(i);h.next=u=>{--t===0?(h.next=m=>{o[c]=m,i.next(o)},h.next(u)):o[c]=u},h.complete=n,h.subscribe(d)};s.forEach(a)},"combineLatest",arguments)}function GE(...s){return we(i=>{let e=s.length,t=e,r=new Array(e),o=()=>{--t===0&&i.complete()},n=(a,d)=>{let c=new Ee(i),h=[];r[d]=h,c.next=u=>{h.push(u),r.every(m=>m.length)&&i.next(r.map(m=>m.shift()))},c.complete=o,c.subscribe(a)};s.forEach(n)},"zip",arguments)}function qn(...s){return i=>we((e,t=0,r=s.length)=>{for(;t<r&&!e.disposed;)e.next(s[t++]);e.disposed||e.subscribe(i)},"startWith",arguments)}var bu=class extends Ee{constructor(i,...e){super(i);let t=new Ee(this.sink);t.next=r=>this.buffer=r,t.complete=$e,t.subscribe(Xp(...e))}next(i){this.buffer&&this.sink.next([i,...this.buffer])}},WE=Ae(bu,"withLatestFrom"),vu=class extends Ee{constructor(i,e,t){super(i),this.bufferSize=e,this.startBufferEvery=t,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(i){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(i)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(i),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(i=>this.sink.next(i)),super.complete()}},zE=Ae(vu,"bufferCount"),Nu=class extends Ee{constructor(i,e){super(i),this.buffer=[];let t=new Ee(i);t.next=r=>{i.next(this.buffer),this.buffer=[]},t.complete=$e,t.subscribe(e)}next(i){this.buffer.push(i)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},jE=Ae(Nu,"buffer");var JE=function(s,i,e,t){function r(o){return o instanceof e?o:new e(function(n){n(o)})}return new(e||(e=Promise))(function(o,n){function a(h){try{c(t.next(h))}catch(u){n(u)}}function d(h){try{c(t.throw(h))}catch(u){n(u)}}function c(h){h.done?o(h.value):r(h.value).then(a,d)}c((t=t.apply(s,i||[])).next())})};function Vt(s){let i=arguments,e=Nr()(we(t=>{e.next=r=>t.next(r),e.complete=()=>t.complete(),e.error=r=>t.error(r),s&&t.subscribe(s)},"subject",i));return e.next=$e,e.complete=$e,e.error=$e,e}function Qp(s){return we(i=>i.subscribe(s()),"defer",arguments)}var Yp=s=>i=>{setTimeout(()=>s(i))},Zp=s=>Yp(i=>{for(let e=0;!i.disposed&&e<s.length;e++)i.next(s[e]);i.complete()});function qE(...s){return we(Zp(s),"of",arguments)}function XE(s){return we(Zp(s),"fromArray",arguments)}function Ou(s){return we(i=>{let e=0,t=setInterval(()=>i.next(e++),s);return i.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function Xn(s,i){return we(e=>{let t=0,r=setTimeout(()=>{if(e.removeDefer(o),e.next(t++),i){let n=setInterval(()=>e.next(t++),i);e.defer(()=>{clearInterval(n)})}else e.complete()},s),o=()=>{clearTimeout(r)};e.defer(o)},"timer",arguments)}function Wd(s,i){return e=>{let t=r=>e.next(r);e.defer(()=>i(t)),s(t)}}function QE(s,i){return we(Wd(s,i),"fromEventPattern",arguments)}function We(s,i){if("on"in s&&"off"in s)return we(Wd(e=>s.on(i,e),e=>s.off(i,e)),"fromEvent",arguments);if("addListener"in s&&"removeListener"in s)return we(Wd(e=>s.addListener(i,e),e=>s.removeListener(i,e)),"fromEvent",arguments);if("addEventListener"in s)return we(Wd(e=>s.addEventListener(i,e),e=>s.removeEventListener(i,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function Kp(s){return we(i=>{s.then(i.next.bind(i),i.error.bind(i))},"fromPromise",arguments)}function YE(s,i){return we(Qp(()=>Kp(fetch(s,i))),"fromFetch",arguments)}function ZE(s){return we(Yp(i=>{try{for(let e of s){if(i.disposed)return;i.next(e)}i.complete()}catch(e){i.error(e)}}),"fromIterable",arguments)}function KE(s){let i=e=>JE(this,void 0,void 0,function*(){if(e.disposed)return;let{done:t,value:r}=yield s.read();if(t){e.complete();return}else e.next(r),i(e)});return we(e=>{i(e)},"fromReader",arguments)}function eT(s){return we(i=>{let e=new AbortController,t=e.signal;i.defer(()=>e.abort("cancelled")),s.pipeTo(new WritableStream({write(r){i.next(r)},close(){i.complete()},abort(r){i.error(r)}}),{signal:t}).then(()=>i.complete(),r=>i.error(r))},"fromReadableStream",arguments)}function tT(){return we(s=>{let i=requestAnimationFrame(function e(t){s.disposed||(s.next(t),i=requestAnimationFrame(e))});s.defer(()=>cancelAnimationFrame(i))},"fromAnimationFrame",arguments)}function iT(s,i){return we((e,t=s,r=i+s)=>{for(;t<r&&!e.disposed;)e.next(t++);return e.complete(),"range"},"range",arguments)}function rT(s,i,...e){return we(t=>{let r=e.concat(o=>(t.next(o),t.complete()));s.apply(i,r)},"bindCallback",arguments)}function sT(s,i,...e){return we(t=>{let r=e.concat((o,n)=>o?t.error(o):(t.next(n),t.complete()));s.apply(i,r)},"bindNodeCallback",arguments)}function oT(){return we(()=>{},"never",arguments)}function nT(s){return we(i=>i.error(s),"throwError",arguments)}function Qn(){return we(s=>s.complete(),"empty",arguments)}var Ns=class extends Ee{constructor(i,e,t){super(i),this.f=e;let r=()=>{this.sink.next(this.acc),this.sink.complete()};typeof t=="undefined"?this.next=o=>{this.acc=o,this.complete=r,this.resetNext()}:(this.acc=t,this.complete=r)}next(i){this.acc=this.f(this.acc,i)}},wu=Ae(Ns,"reduce"),aT=s=>Ae(Ns,"count")((i,e)=>s(e)?i+1:i,0),dT=()=>Ae(Ns,"max")(Math.max),cT=()=>Ae(Ns,"min")(Math.min),lT=()=>Ae(Ns,"sum")((s,i)=>s+i,0);var Mu=class extends Ee{constructor(i,e,t){super(i),this.filter=e,this.thisArg=t}next(i){this.filter.call(this.thisArg,i)&&this.sink.next(i)}},Zi=Ae(Mu,"filter"),xu=class extends Ee{next(i){}},uT=Ae(xu,"ignoreElements"),Lu=class extends Ee{constructor(i,e){super(i),this.count=e}next(i){this.sink.next(i),--this.count===0&&this.complete()}},Dr=Ae(Lu,"take"),Pu=class extends Ee{constructor(i,e){super(i);let t=new Ee(i);t.next=()=>i.complete(),t.complete=Hd,t.subscribe(e)}},St=Ae(Pu,"takeUntil"),Uu=class extends Ee{constructor(i,e){super(i),this.f=e}next(i){this.f(i)?this.sink.next(i):this.complete()}},ef=Ae(Uu,"takeWhile"),hT=s=>wu((i,e)=>(i.push(e),i.length>s&&i.shift(),i),[]),Vu=class extends Ee{constructor(i,e){super(i),this.count=e}next(i){--this.count===0&&(this.next=super.next)}},mT=Ae(Vu,"skip"),Bu=class extends Ee{constructor(i,e){super(i),i.next=$e;let t=new Ee(i);t.next=()=>{t.dispose(),i.resetNext()},t.complete=Hd,t.subscribe(e)}},pT=Ae(Bu,"skipUntil"),$u=class extends Ee{constructor(i,e){super(i),this.f=e}next(i){this.f(i)||(this.next=super.next,this.next(i))}},Jd=Ae($u,"skipWhile"),fT={leading:!0,trailing:!1},Fu=class extends Ee{constructor(i,e,t){super(i),this.durationSelector=e,this.trailing=t}cacheValue(i){this.last=i,this.disposed&&this.throttle(i)}send(i){this.sink.next(i),this.throttle(i)}throttle(i){this.reset(),this.subscribe(this.durationSelector(i))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},zd=class extends Ee{constructor(i,e,t=fT){super(i),this.durationSelector=e,this.config=t,this._throttle=new Fu(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(i){this._throttle.disposed&&this.config.leading?this._throttle.send(i):this._throttle.cacheValue(i)}complete(){this._throttle.throttle=$e,this._throttle.complete(),super.complete()}},_T=Ae(zd,"throttle"),gT={leading:!1,trailing:!0},ET=s=>Ae(zd,"audit")(s,gT),Hu=class extends Ee{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},jd=class extends Ee{constructor(i,e){super(i),this.durationSelector=e,this._debounce=new Hu(this.sink),this._debounce.dispose()}next(i){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=i,this._debounce.subscribe(this.durationSelector(i))}complete(){this._debounce.complete(),super.complete()}},TT=Ae(jd,"debounce"),ST=s=>Ae(jd,"debounceTime")(i=>Xn(s)),Gu=class extends Ee{constructor(i,e,t){super(i),this.count=e,this.defaultValue=t}next(i){this.count--===0&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},IT=Ae(Gu,"elementAt"),AT=s=>i=>Dr(1)(Jd(e=>!s(e))(i)),Wu=class extends Ee{constructor(i,e){super(i),this.f=e,this.i=0}next(i){this.f(i)?(this.sink.next(this.i++),this.complete()):++this.i}},CT=Ae(Wu,"findIndex"),zu=class extends Ee{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},RT=Ae(zu,"first"),ju=class extends Ee{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},yT=Ae(ju,"last"),Ju=class extends Ee{constructor(i,e){super(i),this.predicate=e,this.index=0}next(i){this.predicate(i,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},bT=Ae(Ju,"every");var qu=class extends Ee{constructor(i,e,t){super(i),this.f=e,typeof t=="undefined"?this.next=r=>{this.acc=r,this.resetNext(),this.sink.next(this.acc)}:this.acc=t}next(i){this.sink.next(this.acc=this.f(this.acc,i))}},sh=Ae(qu,"scan"),Xu=class extends Ee{constructor(){super(...arguments),this.hasLast=!1}next(i){this.hasLast?this.sink.next([this.last,i]):this.hasLast=!0,this.last=i}},vT=Ae(Xu,"pairwise"),qd=class extends Ee{constructor(i,e,t){super(i),this.mapper=e,this.thisArg=t}next(i){super.next(this.mapper.call(this.thisArg,i))}},Yn=Ae(qd,"map"),NT=s=>Ae(qd,"mapTo")(i=>s),So=class extends Ee{constructor(i,e,t){super(i),this.data=e,this.context=t}next(i){let e=this.context.combineResults;e?this.sink.next(e(this.data,i)):this.sink.next(i)}tryComplete(){this.context.resetComplete(),this.dispose()}},Io=class extends Ee{constructor(i,e,t){super(i),this.makeSource=e,this.combineResults=t,this.index=0}subInner(i,e){let t=this.currentSink=new e(this.sink,i,this);this.complete=this.tryComplete,t.complete=t.tryComplete,t.subscribe(this.makeSource(i,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},Xd=class extends So{},Qd=class extends Io{next(i){this.subInner(i,Xd),this.next=e=>{this.currentSink.dispose(),this.subInner(e,Xd)}}},Ao=Ae(Qd,"switchMap");function ec(s){return(i,e)=>s(()=>i,e)}var Ds=ec(Ae(Qd,"switchMapTo")),Qu=class extends So{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},Yd=class extends Io{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(i){this.next2(i),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),Qu),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},DT=Ae(Yd,"concatMap"),kT=ec(Ae(Yd,"concatMapTo")),Yu=class extends So{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},Zd=class extends Io{constructor(){super(...arguments),this.inners=new Set}next(i){this.subInner(i,Yu),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(i=>i.resetComplete()):this.dispose()}},OT=Ae(Zd,"mergeMap"),wT=ec(Ae(Zd,"mergeMapTo")),Zu=class extends So{dispose(){this.context.resetNext(),super.dispose()}},Kd=class extends Io{next(i){this.next=$e,this.subInner(i,Zu)}},MT=Ae(Kd,"exhaustMap"),xT=ec(Ae(Kd,"exhaustMapTo")),Ku=class extends Ee{constructor(i,e){super(i),this.f=e,this.groups=new Map}next(i){let e=this.f(i),t=this.groups.get(e);typeof t=="undefined"&&(t=Vt(),t.key=e,this.groups.set(e,t),super.next(t)),t.next(i)}complete(){this.groups.forEach(i=>i.complete()),super.complete()}error(i){this.groups.forEach(e=>e.error(i)),super.error(i)}},LT=Ae(Ku,"groupBy"),eh=class extends Ee{constructor(){super(...arguments),this.start=new Date}next(i){this.sink.next({value:i,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},PT=Ae(eh,"timeInterval"),th=class extends Ee{constructor(i,e){super(i),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(i){this.buffer.push(i)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},UT=Ae(th,"bufferTime"),ih=class extends Ee{constructor(i,e){super(i),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(i){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:t,data:r}=e;super.next(r),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(t))}},i)}next(i){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:i})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},VT=Ae(ih,"delay"),rh=class extends Ee{constructor(i,e){super(i),this.selector=e}error(i){this.dispose(),this.selector(i)(this.sink)}},oh=Ae(rh,"catchError");var BT=()=>s=>new Promise((i,e)=>{let t;new vs(s,r=>t=r,e,()=>i(t))}),$T=()=>s=>{let i;return new ReadableStream({start(e){i=new vs(s,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){i.dispose()}})},it=(s=$e,i=$e,e=$e)=>t=>new vs(t,s,i,e),nh=class extends Ee{constructor(i,e){super(i),e instanceof Function?this.next=t=>{e(t),i.next(t)}:(e.next&&(this.next=t=>{e.next(t),i.next(t)}),e.complete&&(this.complete=()=>{e.complete(),i.complete()}),e.error&&(this.error=t=>{e.error(t),i.error(t)}))}},dh=Ae(nh,"tap"),ah=class extends Ee{constructor(i,e){super(i),this.timeout=e,this.id=setTimeout(()=>this.error(new Jn(this.timeout)),this.timeout)}next(i){super.next(i),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},FT=Ae(ah,"timeout"),HT=(s=1/0)=>i=>{if(i instanceof di){let e=we(t=>{let r=s,o=new Ee(t);o.error=n=>{r-- >0?o.subscribe(i):t.error(n)},o.sourceId=e.id,o.subscribe(i)},"retry",[s]);return e.source=i,Ke.pipe(e),e}else return e=>{let t=s,r=new Ee(e);r.error=o=>{t-- >0?i(r):e.error(o)},i(r)}};var Ki=class Ki extends Cs{constructor(e,t,r){super({userId:t.userId,sdkAppId:e.sdkAppId,mediaType:r,room:e});this.room=e;this.user=t;l(this,"tinyId");l(this,"isRemote",!0);l(this,"jitterBufferDelay",0);l(this,"availableState");l(this,"remotePublishState");l(this,"_triggerCheckDecodeSubject",Vt(We(this,Ki.STATE_SUBSCRIBE)));this.tinyId=t.tinyId,this.availableState=new fe(`${t.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new fe(`${t.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),He(Du(We(this,fe.STATECHANGED),We(this.remotePublishState,fe.STATECHANGED)),Yn(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),it(d=>{this.availableState.state!==(d?fe.ON:fe.OFF)&&(this.availableState.state=d?fe.ON:fe.OFF),this.updatePlayingState(d)}));let o=He(We(this.player,Ge.ERROR),Zi(d=>d.code===MediaError.MEDIA_ERR_DECODE)),n=He(Xn(5e3),Zi(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived?!1:this.player.isPlaying||(this.kind===S.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),a=He(ku(o,n),St(We(this,fe.INIT)));He(this._triggerCheckDecodeSubject,Zi(()=>!this.ignoreDecodeError),Ds(a),it(d=>{this.reportDecodeResult(!1,d)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var t,r;return(((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===Ki.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===fe.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,t){let r=this.kind===S.AUDIO;Y[e?"addSuccessEvent":"addFailedEvent"]({key:r?504700:514702}),e||(Y.addEnum({key:r?504701:514703,value:Cn()}),Me.uploadEvent({log:`stat-decode-failed-${this.kind}-${fs()||gr()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===S.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:t}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?fe.ON:fe.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};l(Ki,"STATE_SUBSCRIBE","subscribe"),q([Fd(5,1)],Ki.prototype,"waitHasMediaTrack",1),q([qe(fe.INIT,Ki.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),x.emit(V.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),zt(521716,!1)],Ki.prototype,"subscribe",1),q([qe(Ki.STATE_SUBSCRIBE,fe.INIT,{sync:!0,success(){this.log.info("unsubscribed"),x.emit(V.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],Ki.prototype,"unsubscribe",1);var Co=Ki;var Ri=class extends Co{constructor(e,t){super(e,t,1);l(this,"volume",0);l(this,"mediaType",1);l(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return As.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}decodeFrame(e){if(!this.manager)return e;let t=e;for(let r of this.manager.decodePipeline)if(r&&(t=r({frame:t,track:this}),!t))return;return t}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isRemotePublished(){return this.user.muteState.audioAvailable}};var WT=[-1,-1,1,-1,-1,1,1,1],zT=[0,0,1,0,0,1,1,1];var Bt=class extends fe{constructor(e,t){super();this.context=e;l(this,"name");l(this,"input");l(this,"output");l(this,"texture");l(this,"ctx2d",null);l(this,"fbo");l(this,"width",0);l(this,"height",0);l(this,"x",0);l(this,"y",0);l(this,"program");l(this,"vertexShader");l(this,"fragmentShader");l(this,"totalFrames",0);l(this,"dropFrames",0);l(this,"matchInputSize",!0);l(this,"texCoordBuffer");l(this,"positionBuffer");l(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});l(this,"cost",0);l(this,"_canvas",null);l(this,"_image");l(this,"log");if(this.context.on("disconnect",this.close,this),this.name=t.name,this.log=t.logger,this.matchInputSize=t.matchInputSize!==!1,this.width=t.width||e.width,this.height=t.height||e.height,this._image=t.image,e instanceof Dt){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&Xt!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let r=e.ctx;this.texCoordBuffer=this.createBuffer(zT),this.positionBuffer=this.createBuffer(WT),t.createTexture!==!1&&(this.texture=r.createTexture(),this.useTexture(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1)),t.useFbo&&(this.fbo=r.createFramebuffer(),this.useBufferFrame(),this.useTexture(),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.width,this.height,0,r.RGBA,r.UNSIGNED_BYTE,null),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,this.texture,0)),t.useDefaultProgram?this.program=e.defaultProgam:(t.vertexShaderSource||t.fragmentShaderSource)&&(this.vertexShader=t.vertexShaderSource?e.createShader(r.VERTEX_SHADER,t.vertexShaderSource):e.defaultVShader,this.fragmentShader=t.fragmentShaderSource?e.createShader(r.FRAGMENT_SHADER,t.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(r){this.context.destroy(new Q({code:H.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${r.message||r}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let t=this.context.ctx,r=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),r}connect(e,...t){return e.addInput(this,...t),this.output=e,e}addInput(e,...t){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let t=Date.now();if(this.context instanceof mt&&this.render(e)||this.context instanceof Dt&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-t,!0}render2d(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var t;(t=this.output)==null||t.update(e)}disconnect(...e){var t;(t=this.output)==null||t.removeInput(this,...e),delete this.output}removeInput(e,...t){delete this.input}close(){var e,t;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(t=this.input)==null||t.disconnect(),this.context instanceof mt){let r=this.context.ctx;r.deleteBuffer(this.texCoordBuffer),r.deleteBuffer(this.positionBuffer),this.fbo&&r.deleteFramebuffer(this.fbo),this.texture&&r.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&r.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&r.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&r.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let t=this.context.ctx;e.forEach((r,o)=>{r&&(t.activeTexture(t.TEXTURE0+o),t.bindTexture(t.TEXTURE_2D,r))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let t=this.context.ctx,r=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW),r}setTexBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.texCoordBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}setPosBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}changeBufferData(e,t){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,e),r.bufferData(r.ARRAY_BUFFER,new Float32Array(t),r.STATIC_DRAW)}setAttributes(...e){let t=this.context.ctx;e.forEach((r,o)=>{t.enableVertexAttribArray(o),t.bindBuffer(t.ARRAY_BUFFER,r),t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0)})}getVertexPoint(e,t){return[e/this.width*2-1,t/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,t){if(!(this.width===e&&this.height===t)){if(this.width=e,this.height=t,this._canvas&&(this._canvas.width=e,this._canvas.height=t),this.texture&&this.fbo){this.useTexture();let r=this.context.ctx;r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e,t,0,r.RGBA,r.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,t)}}draw(e,t){this.setAttributes(e||this.positionBuffer,t||this.texCoordBuffer);let r=this.context.ctx;r.drawArrays(r.TRIANGLE_STRIP,0,4)}draw2d(e,t,r,o,n){return this.ctx2d&&e?(e instanceof ImageData?this.ctx2d.putImageData(e,t,r):(this.ctx2d.drawImage(e,t,r,o,n),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}getInfo(){var u;let{totalFrames:e,x:t,y:r,width:o,height:n,name:a,cost:d}=this,c=Date.now(),h=(e-this.lastInfo.totalFrames)/((c-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:o,height:n,timestamp:c,fps:h,name:a,cost:d},K({parent:(u=this.input)==null?void 0:u.getInfo()},this.lastInfo)}createTexture(e){let t=this.context.ctx,r=t.createTexture();return this.useTextures(r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),r}};q([qe(fe.INIT,"connected",{sync:!0})],Bt.prototype,"connect",1),q([qe("connected",fe.INIT,{ignoreError:!0,sync:!0})],Bt.prototype,"disconnect",1),q([qe([],"closed",{sync:!0})],Bt.prototype,"close",1);var jT=He(Ou(250),Yn(()=>performance.now()),Nr());var rf=s=>i=>{let e=performance.now();He(jT,Jd(t=>t-e<s),Dr(1))(i)};var qT=[0,1,1,1,0,0,1,0],ks=class extends Bt{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t));l(this,"_intervalId",0);l(this,"_sequence",0);l(this,"checkGLError",!1);l(this,"checkVisibilityChange");e instanceof Dt?this.ctx2d=e.ctx||null:e.available&&(t!=null&&t.mirrorUpAndDown)&&this.setTexBuffer(qT)}start(e){this.log.info(`${this.name} start render ${e} fps`),Le.clearTask(this._intervalId),this._intervalId=Le.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(Le.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof mt){let r=this.context.ctx.getError();r&&this.context.destroy(new Q({code:H.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${r}`}))}},{fps:this.context.frameRate})}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...t){super.addInput(e,...t),this.start(this.context.frameRate)}update(e=0){if(this._intervalId&&(Le.clearTask(this._intervalId),this._intervalId=0,e===1)){this.log.info(`${this.name} use requestVideoFrameCallback`);let t=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",t))};document.addEventListener("visibilitychange",t)}this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),Le.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),Le.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},Ro=class extends ks{constructor(e,t){super(e,t);l(this,"_videoTrack");l(this,"_muteOb");l(this,"_closedOb",We(this,"closed"));l(this,"_subscription");l(this,"_canvasContainer");Number(fr)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=We(this._videoTrack,"mute"),He(We(this._videoTrack,"ended"),St(this._closedOb),it(()=>{this.context.destroy(new Q({code:H.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=He(this._muteOb,St(this._closedOb),Ds(rf(5e3)),Zi(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),it(()=>{this.context.destroy(new Q({code:H.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,t;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(t=this._canvasContainer)==null||t.remove()}},tc=class extends Ro{render(i){var e;return!!((e=this.input)!=null&&e.requestFrame(i))}};var ic=class extends Ro{constructor(e,t,r){super(e,{name:"smallDestination",logger:r});this.resolution=t}resize(e,t){let r,o=e*t,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${t} small res: ${this.resolution.width}*${this.resolution.height} `),o>n?r=o/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${t} small: ${this.resolution.width} * ${this.resolution.height}`),r=o/(160*120)),super.resize(e/Math.sqrt(r),t/Math.sqrt(r))}};var Zn=class extends Bt{constructor(e,t){super(e,K({name:"imageSource"},t));l(this,"_lastImage");l(this,"_totalFrames",0);l(this,"_autoResize",!1);l(this,"_canvasRendered");l(this,"_videoCallbackId",0);l(this,"waitingFirstFrame",!0);this._autoResize=(t==null?void 0:t.autoResize)!==!1,Xt===16&&(this._canvasRendered=Vt(),He(this._canvasRendered,qn(this._image),Ao(r=>r instanceof HTMLCanvasElement?We(r,"rendered"):Qn()),St(We(this,"closed")),it(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){let e=this.image;this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),Is()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((t,r)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=r.presentedFrames,this.update(1))}))}_render(e,t){var a;let{width:r,height:o}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:r,videoHeight:o}=n,!r||!o)return!1;n.width=r,n.height=o}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:r,height:o}=n,n!==this._lastImage)this._lastImage=n;else if(r===this.width&&o===this.height)return!1}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:r,height:o}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:r,displayHeight:o}=n,(a=this._lastImage)==null||a.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===r&&this.height===o&&this.totalFrames){if(t){this.useTexture();let d=this.context.ctx;d.texSubImage2D(d.TEXTURE_2D,0,0,0,d.RGBA,d.UNSIGNED_BYTE,n)}}else{if(t){this.useTexture();let d=this.context.ctx;d.texImage2D(d.TEXTURE_2D,0,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,n)}this.resize(r,o)}return!0}get image(){return this._image}set image(e){var t;(t=this._canvasRendered)==null||t.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},Kn=class extends Zn{constructor(e,t,r){super(e,r);this._player=t;this.name="videoPlayerSource",He(We(this._player,Ge.PLAYER_STATE_CHANGED),St(We(this,"closed")),Zi(({state:o})=>o==="PLAYING"),it(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},kr=class extends Kn{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(i,e,t){super(i,new Zt({id:t.name,track:e,muted:!0,container:null,objectFit:"contain",log:t.logger}),t),this.name="videoTrackSource",this._player.play()}replaceTrack(i){this.waitingFirstFrame=!0,this._player.setTrack(i),this._player.play()}close(){super.close(),this._player.stop()}};var QT=`
33
+ `,t.onclick=this.onQuestionClick.bind(this);let r=document.createElement("div");r.className=Hd,r.innerText=`${Nt()?"\u8BE6\u60C5 >":"Detail >"}`,r.onclick=this.onCollapseClick.bind(this);let o=i.content.firstChild,n=o.querySelector(`.${la}`);return n.appendChild(r),n.appendChild(t),n.appendChild(e),o}addDiaLog(){Jd()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${gs}`).onclick=i=>i.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",R.info("show autoplay dialog"),te.uploadEvent({log:D_}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){R.warn("confirm clicked, try resume stream"),E.emit(I.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let i=this._dialogNode.querySelector(`.${$h}`);i.style.visibility=`${this._showDetail?"hidden":"visible"}`,i.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||te.uploadEvent({log:O_}),this._isCollapseClicked=!0}onQuestionClick(){window.open(Jh,"_blank"),this._isQuestionClicked||te.uploadEvent({log:M_}),this._isQuestionClicked=!0}},jh=Gd;var pt=class extends si{constructor(e){super(e,m.VIDEO);d(this,"stat",{});d(this,"_calculateTimeout",-1);d(this,"viewMirror",!1);d(this,"objectFit");d(this,"container");d(this,"canvas");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,T(e.viewMirror)||(this.viewMirror=e.viewMirror),T(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return this._state!=="PLAYING"||this.element&&this.element.paused?!1:((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){var t;let e=document.createElement(m.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(t=this.container)==null||t.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var t;this.container=e,this.track&&this.elementToRender&&((t=this.container)==null||t.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(m.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(m.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var t;super.handleTrackEvent(e),e.type===m.MUTE&&((t=this.stat)!=null&&t.fps)&&(this.stat.fps=0)}handleElementEvent(e){var r,o;if(this.mode===2)return;super.handleElementEvent(e);let t=e.type;if(t===m.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(r=this.container)==null?void 0:r.id}`),this.container&&this.container!==document.getElementById(this.container.id)&&(this._pausedRetryCount=hr,this._log.info(`view container ${(o=this.container)==null?void 0:o.id} is recreated`)),this._pausedRetryCount>0&&!Jd()&&(this._log.info(`[${hr-this._pausedRetryCount+1}/${hr}] ${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let n=this.element.style.transform;t===m.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=n.replace("scaleX(-1)",""):t===m.LEAVE_PICTURE_IN_PICTURE&&!n.includes("scaleX")&&(this.element.style.transform=`${n} scaleX(-1)`)}}setCanvas(e,t=1){var r,o,n,a;this.canvas!==e&&((r=this.canvas)==null||r.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?t:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((o=this.element)==null||o.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((a=this.container)==null||a.appendChild(this.element)))}setAttr(e){let t=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);t.style=Object.assign({width:"100%",height:"100%"},t.style),super.setAttr(t)}get mirror(){return this.viewMirror}setRect(e,t){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${t}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}setPoster(e){this.element&&(this.element.poster=e)}stop(e=0){var t;super.stop(e),(t=this.canvas)==null||t.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(le.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(br()&&this.element&&this._calculateTimeout<0){let e=0,t=null,r=(o,n)=>{this.stat.width=n.width,this.stat.height=n.height,t&&(this.stat.fps=Math.round((n.presentedFrames-t.presentedFrames)/(o-e)*1e3)),e=o,t=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var a;return(a=this.element)==null?void 0:a.requestVideoFrameCallback(r)},2e3))};this.element.requestVideoFrameCallback(r)}}catch(e){this._log.warn("init stat failed",e)}}};function Nr(s,i){return p(this,null,function*(){if(!s.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield s.audioWorklet.addModule(i),R.info("worklet addModule success")}catch(e){throw R.info(`worklet addModule catch error. ${e.message}`),e}})}var ko;typeof AudioContext!="undefined"?ko=AudioContext:typeof webkitAudioContext!="undefined"?ko=webkitAudioContext:typeof mozAudioContext!="undefined"&&(ko=mozAudioContext);var wt,qh=-1;Xh();function Xh(){try{if(wt)return;wt=new ko({sampleRate:48e3}),wt.onstatechange=()=>{R.info(`context state: ${wt.state}${wt.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),Ts()},clearTimeout(qh)}catch(s){R.error(`initAudioContext failed: ${s} typeof AudioContextClass: ${typeof ko}`),qh=setTimeout(Xh,1e3)}}var Ts=()=>{wt.state==="suspended"?(Es(),document.addEventListener("click",Ts)):wt.state==="interrupted"?Es():(document.removeEventListener("visibilitychange",Ts),document.removeEventListener("click",Ts))},jd=0,qd=-1;function Es(){return new Promise((s,i)=>{if(wt.state==="running")return s();Date.now()-jd<1e3?(clearTimeout(qd),qd=setTimeout(()=>{jd=Date.now(),wt.resume().then(s,i)},1e3)):(clearTimeout(qd),jd=Date.now(),wt.resume().then(s,i))}).catch(s=>{R.warn(`context resume failed: ${s}`),document.addEventListener("visibilitychange",Ts)})}document.addEventListener("click",Ts);var Ce=s=>wt;var We=class{constructor(){d(this,"node");d(this,"node2");d(this,"pre",new Set);d(this,"next",new Set);d(this,"context");d(this,"connectedNodes",new Set);d(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(i){this._channelCount=i,this.setChannelCount(this.node,i),this.setChannelCount(this.node2,i),this.next.forEach(e=>e.channelCount=i)}setChannelCount(i,e){!i||i instanceof ScriptProcessorNode||(i.channelCountMode="explicit",i.channelCount=e||this.channelCount||1)}setContext(i){this.context=i,this.node&&i.addMixWeight()}removeContext(){var i;this.node&&((i=this.context)==null||i.reduceMixWeight()),delete this.context}replaceNode(i){var e;if(i!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=i,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(t){R.error(t)}}setNode(i,e){var t;if(!this.node)try{(t=this.context)==null||t.addMixWeight(),this.node=i,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),b.addSuccessEvent({key:502701})}catch(r){R.error(r),b.addFailedEvent({key:502701,error:r})}}deleteNode(){var i;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(i=this.context)==null||i.reduceMixWeight(),this.preNodeReconnect(),b.addSuccessEvent({key:502702})}catch(e){R.error(e),b.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(i=>{i.node?i.reconnect():i.preNodeReconnect()})}connectNext(i){this.next.forEach(e=>{i._connect(e.node)||e.connectNext(i)})}_connect(i){return!this.node||!i?!1:((this.node2||this.node).connect(i),this.connectedNodes.add(i),!0)}_disconnect(){this.connectedNodes.forEach(i=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(i)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(...i){return i.forEach(e=>{this.next.add(e),e.pre.add(this)}),this}},ha=class extends We{constructor(e=256){super();this.fftSize=e;d(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),t=1,r=0,o=0,n=`M${r},${o}`;for(let a=0;a<e.length;a++)o=e[a]/128*100/2,n+=`L${r},${o}`,r+=t;return n}},Lo=class{constructor(){d(this,"source",new We);d(this,"gain",new We);d(this,"destination",new We)}get volume(){var i;return((i=this.gain.node)==null?void 0:i.gain.value)||1}setVolume(i){if(i===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(Ce().createGain()),this.gain.node.gain.value=i}replaceSource(i){this.source.replaceNode(Xd(i))}get track(){var i;return(i=this.stream)==null?void 0:i.getAudioTracks()[0]}get stream(){var i;return(i=this.destination.node)==null?void 0:i.stream}},Ss=class extends Lo{constructor(e){super();this.context=e;d(this,"denoiser",new We);d(this,"voiceChanger",new We);this.source.pipeTo(this.denoiser.pipeTo(this.voiceChanger.pipeTo(this.gain.pipeTo(this.destination))))}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.denoiser.setContext(this.context),this.voiceChanger.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){this.context.inputs.has(this)&&(this.destination.deleteNode(),this.source.removeContext(),this.denoiser.removeContext(),this.voiceChanger.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.denoiser.deleteNode(),this.voiceChanger.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},ma=class{constructor(){d(this,"audioContext",Ce("audio-mixer"));d(this,"destination",this.audioContext.createMediaStreamDestination());d(this,"inputs",new Set);d(this,"mixWeight",0);this.destination.channelCount=1}addMixWeight(i=1){this.mixWeight+=i,this.mixWeight-1===i+1>>1&&this.mixOnChange()}reduceMixWeight(i=1){this.addMixWeight(-i)}close(){this.inputs.forEach(i=>i.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},zh=new WeakMap;function Xd(s){let i=zh.get(s);if(i)return i;let e=Ce();if(s instanceof HTMLAudioElement)i=e.createMediaElementSource(s);else if(s instanceof MediaStreamTrack)i=e.createMediaStreamSource(new MediaStream([s]));else return s;return zh.set(s,i),i}var ft=class ft{constructor(i){d(this,"_volume",0);d(this,"_volumeDb",0);d(this,"_log");d(this,"_scriptProcessorNode",null);d(this,"_audioWorkletNode",null);d(this,"_interval",200);d(this,"ready",this.preload());let{log:e}=i;this._log=e,E.on(I.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-ft.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!ft.workletReady){let i='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(i<h?(s[0].set(this.cache.slice(0,i)),this.cache=this.cache.slice(i)):this.unmute&&s[0].set(t[0]),(i<h?s:t)[0]);if(a){let e=0;for(let t=0;t<a.length;++t)e=Math.max(Math.abs(a[t]),e);s=a.reduce((t,e)=>t+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';ft.workletReady=Nr(ft.audioContext,URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}return ft.workletReady.then(()=>this.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(ft.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=e=>{ft.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||0,!i&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),i=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(i){this._log.error(`volumeMeter init audio worklet error: ${i}`),te.logFailedEvent({userId:this._log.userId,eventType:rt.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=Ce("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{ft.lastMessageTime=Date.now();let e=i.inputBuffer.getChannelData(0),t=0;for(let r=0;r<e.length;++r)t+=e[r]*e[r];this._volume=Math.sqrt(t/e.length)||0}}catch(i){this._log.error(`volumeMeter init script processor error: ${i}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,E.off(I.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(this._volumeDb*100)}handleAudioLevelInterval(i){var t;let{interval:e}=i;this._interval=e,(t=this._audioWorkletNode)==null||t.port.postMessage({name:"setIntervalTime",intervalTime:e})}};d(ft,"lastMessageTime",0),d(ft,"audioContext",Ce("volume-meter")),d(ft,"workletReady");var pa=ft,fa=class extends We{constructor(e){super();d(this,"_volumeMeter");this._volumeMeter=new pa(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return p(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}getVolumeDb(){return this._volumeMeter.getVolumeDb()}write(e){if(this.node){let t=e.allocationSize({planeIndex:0}),r=new Float32Array(t>>2);e.copyTo(r,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:r},[r.buffer]),e.close()}}},vr=pa;var Zh=Be(Qe(),1);var Yh=s=>i=>i.deviceId===s;var Po=class{constructor(i,e="Input"){d(this,"kind");d(this,"type");d(this,"devices",[]);this.kind=i,this.type=e}update(i,e){let t=i.filter(r=>r.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&Is(this.devices[0])){this.devices=t;return}e&&(t.forEach(r=>{if(r.deviceId&&!this.devices.find(Yh(r.deviceId))){let o=`${this.kind}${this.type}Added`;R.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}}),this.devices.forEach(r=>{if(r.deviceId&&!t.find(Yh(r.deviceId))){let o=`${this.kind}${this.type}Removed`;R.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}})),this.devices=t}hasDevice(i){return!!this.devices.find(e=>e.deviceId===i)}},zd=class extends Zh.EventEmitter{constructor(){super();d(this,"audioInputs",new Po(m.AUDIO));d(this,"videoInputs",new Po(m.VIDEO));d(this,"audioOutputs",new Po(m.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||se.run("interval",()=>{this.update()},{delay:1e4}))}init(){_a().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return p(this,arguments,function*(e=0){let t=yield _a(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}},ke=Ws||jr?null:new zd;function Is(s){return s.deviceId===s.groupId&&s.groupId===""}function _a(){return p(this,arguments,function*(s=0){if(Di()||!sa())return[];let i=yield navigator.mediaDevices.enumerateDevices();if(s!==0){let e={audio:!1,video:!1};if(i.forEach(t=>{Is(t)&&(t.kind===m.AUDIO_INPUT?e.audio=!0:t.kind===m.VIDEO_INPUT&&(e.video=!0))}),s===2&&(e.audio=!1),s===1&&(e.video=!1),e.audio||e.video){let t;try{t=yield navigator.mediaDevices.getUserMedia(e),e.audio&&Es()}catch(r){R.debug("capture before getDevices failed: ",r)}i=yield navigator.mediaDevices.enumerateDevices(),t==null||t.getTracks().forEach(r=>r.stop())}}return i.map((e,t)=>{let r={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${t}`};return e.deviceId.length>0&&Qd.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(r.getCapabilities=()=>e.getCapabilities()),r})})}function ot(s=!1){return ke.update(s?1:0).then(i=>i.audioInputs.devices)}function _t(s=!1){return ke.update(s?2:0).then(i=>i.videoInputs.devices)}var Kh=!1;function em(){return p(this,null,function*(){try{Kh||(Kh=!0,R.info(`speakers:${(yield tr()).map(s=>` ${s.deviceId.slice(0,8)}: ${s.label}`)}`))}catch(s){}})}function tr(s=!1){return p(this,null,function*(){return(Se||Le)&&(s=!1),ke.update(s?1:0).then(i=>i.audioOutputs.devices)})}var Qd=new Set;function tm(s){if(s instanceof CanvasCaptureMediaStreamTrack||!(s instanceof MediaStreamTrack))return!1;let i=s.label.toLocaleLowerCase();if(i.includes("camera")||i.includes("webcam"))return!0;let t=`${((s==null?void 0:s.getSettings())||{}).deviceId}_${m.VIDEO_INPUT}`;return!!Qd.has(t)}function im(s){if(s instanceof CanvasCaptureMediaStreamTrack||!(s instanceof MediaStreamTrack))return!1;let i=s.label.toLocaleLowerCase();if(i.includes("mic")||i.includes("\u9EA6\u514B\u98CE"))return!0;let t=`${((s==null?void 0:s.getSettings())||{}).deviceId}_${m.AUDIO_INPUT}`;return!!Qd.has(t)}function Yd(s,i){return p(this,null,function*(){let t=(yield ot()).find(r=>r.deviceId===mr);return!i&&(t==null?void 0:t.groupId)===s||(t==null?void 0:t.groupId)===s&&t.label===i})}function rm(o){return p(this,arguments,function*({newDeviceId:s,oldDeviceId:i,oldGroupId:e,oldLabel:t,kind:r}){return s!==i?!1:r===m.AUDIO&&s===mr?yield Yd(e,t):!0})}var ga,Kd=class extends Lo{constructor(e){super();this.log=e;d(this,"volumeMeter");d(this,"volumeDestination");d(this,"analyser",new ha);this.volumeMeter=new fa({log:this.log}),this.volumeDestination=new We,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},Ta=class s extends si{constructor(e){super(e,m.AUDIO);d(this,"_outputDeviceId");d(this,"_volume",1);d(this,"_destination",Ce("player").createMediaStreamDestination());d(this,"pipeline");d(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new Kd(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Xt==="15.2"||Xt==="15.3"||Xt==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let r=ga||new Audio;r.setAttribute("autoplay","autoplay"),r.srcObject=this.getMediaStream(),r.muted=this.muted,this.element=r,j(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),r===ga&&(ga=void 0),this.bindElementEvents()}play(e){return p(this,null,function*(){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?this.pipeline.volumeMeter.init():this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(Ce("player").createAnalyser()),em(),Fe(s.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return p(this,null,function*(){var t,r;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(r=(t=this.element).setSinkId)==null?void 0:r.call(t,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}},Ea=class extends Ta{setTrack(i){this.track!==i&&(this.unbindTrackEvents(),this.track=i,this.emit(le.MEDIA_TRACK_CHANGED,i),i&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([i]))))}setVolume(i){this._volume=i,this.element&&(this.element.volume=i)}},Sa=class extends Ta{constructor(e){super(e);d(this,"_sourceElement");d(this,"_output",new We);this.pipeline.source.pipeTo(this.pipeline.gain.pipeTo(this.pipeline.volumeMeter.pipeTo(this._output),this.pipeline.destination))}setOutput(){this.mode=1,this._output.setNode(Ce("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var t,r,o;((r=(t=this.element)==null?void 0:t.error)==null?void 0:r.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(le.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((o=e.getSettings())==null?void 0:o.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1?this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element"):Se||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),be(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let t=this._sourceElement||this.element;t&&Qi&&(ga=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var Dr=class extends H{constructor({userId:e,sdkAppId:t,mediaType:r,room:o,PlayerClass:n=r===1?Sa:pt}){var a;super();d(this,"id",_o());d(this,"userId","");d(this,"isRemote");d(this,"mediaType");d(this,"room");d(this,"user");d(this,"_log");d(this,"_inputTrack");d(this,"_outputTrack");d(this,"isPlayCalled");d(this,"container",null);d(this,"player");d(this,"subVideoPlayerMap");d(this,"muted",!1);d(this,"abortCtrl");d(this,"objectFit","cover");d(this,"mirror");d(this,"isScreen",!1);d(this,"manager");d(this,"trackSettings");d(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=r,this._log=R.createLogger({id:`${this.kind[0]}t`,userId:(a=o||this.room)==null?void 0:a.userId,remoteUserId:this instanceof ki?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof ki}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(le.PLAYER_STATE_CHANGED,c=>{E.emit(I.PLAYER_STATE_CHANGED,v({track:this},c)),this.emit("player-state-changed",c)}),this.kind===m.VIDEO&&(this.player.on(le.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(le.LOADED_DATA),E.emit(I.VIDEO_LOADED_DATA,{track:this})}),this.player.on(le.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(le.LOADED_META_DATA)}),this.player.on(le.MEDIA_TRACK_CHANGED,c=>{var l;(l=this.subVideoPlayerMap)==null||l.forEach(u=>u.setTrack(c))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(le.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||R}get kind(){return this.mediaType===1?m.AUDIO:m.VIDEO}get strMediaType(){return this.mediaType===4?m.VIDEO:this.mediaType===2?m.SCREEN:m.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,t){return p(this,null,function*(){let r=_e(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(t)}`),t&&!T(t.muted)&&this.setPlayerMute(t.muted),t&&!T(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof pt&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&(this.container=r,this.player.setContainer(r)),_e(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),t)));return}if(t&&!T(t.muted)?this.setPlayerMute(t.muted):(!this.isRemote||this.kind===m.VIDEO)&&this.setPlayerMute(!0),t&&!T(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof pt&&(this.player.setObjectFit(this.objectFit),t&&!T(t.poster)&&this.player.setPoster(t.poster)),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof pt&&this.player.setContainer(r)),E.emit(I.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(t)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(t),_e(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),t))}catch(o){throw this.handleAutoPlayFailed(o),o}})}setMirror(e,t){if(this.isScreen||this.kind!==m.VIDEO||T(e)||e===this.mirror)return;this.mirror=e;let r=this.player;t&&(r=t);let o=this.manager;if(ge(this.mirror)){r.setViewMirror(this.mirror),o&&(o.mirror=!1);return}switch(this.mirror){case"view":{o&&(o.mirror=!1),r.setViewMirror(!0);break}case"publish":{o&&(o.mirror=!0),r.setViewMirror(!0);break}case"both":o&&(o.mirror=!0),r.setViewMirror(!1)}}playSubContainer(e,t){return p(this,null,function*(){if(!this._outputTrack||this.kind===m.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((o,n)=>{var a;e.find(c=>n===c)||(o.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[o,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?t&&(T(t.objectFit)||a.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(n,new pt({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${o+1}`})}))}let r=[...this.subVideoPlayerMap.values()];for(let o of r)o.setViewMirror(this.player.mirror),yield o.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(Jc(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(t=>{t.stop()}),this.container=null)}resume(){return p(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),E.emit(e?I.TRACK_MUTED:I.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){Ge(e,e).add(m.MUTE,this.onTrackMuted).add(m.UNMUTE,this.onTrackUnmuted).add(m.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===m.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){be(e)}setInputMediaStreamTrack(e){var r;let t=this._inputTrack;if(e!==t)return this._inputTrack=e,this.trackSettings=(r=e.getSettings)==null?void 0:r.call(e),e.enabled=!this.muted,t&&this.uninstallTrackEvent(t),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,t||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var r;let t=this._outputTrack;e!==t&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(r=e.getSettings)==null?void 0:r.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(t=>this.handleAutoPlayFailed(t)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(Jc(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new jh;else{let t=()=>{this.resume().then(()=>{document.removeEventListener("click",t,!0)})};document.addEventListener("click",t,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof pt?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,a,c;if(this.isFirstVideoFrameEmitted)return;let t=(n=this.mediaTrack)==null?void 0:n.getSettings(),r=(t==null?void 0:t.width)||((a=this.player.element)==null?void 0:a.videoWidth)||0,o=(t==null?void 0:t.height)||((c=this.player.element)==null?void 0:c.videoHeight)||0;e===le.LOADED_META_DATA&&!r&&!o||(e===le.LOADED_DATA&&!r&&!o&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,this.emit("first-video-frame",{width:r,height:o,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};N([pe([],H.INIT,{sync:!0})],Dr.prototype,"close",1);var L_=Object.prototype.hasOwnProperty,{toString:lC}=Object.prototype;function P_(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(He(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(L_.call(s,i))return!1;return!0}}return!1}var oi=P_;var x_=function(s){return p(this,null,function*(){let i=U_(s);R.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let e=[],t=[],r=["label","deviceId","groupId"];i.audio&&(e=yield ot(),R.info(`microphones: ${Tt(e.map(o=>x(v({},o),{groupId:o.groupId.substring(0,8)})),{keysToInclude:r})}`)),i.video&&(t=yield _t(),R.info(`cameras: ${Tt(t,{keysToInclude:r})}`));try{let o=yield navigator.mediaDevices.getUserMedia(i);return Ld&&o.getTracks().forEach(n=>{R.info(`${n.kind} capabilities: ${Tt(n.getCapabilities(),{keysToInclude:An})}`)}),i.audio&&Es(),o}catch(o){let{message:n}=o;throw o.name==="NotFoundError"&&(s.video&&t&&t.length===0&&(n=P({key:L.CAMERA_NOT_FOUND})),s.audio&&e&&e.length===0&&(n=P({key:L.MICROPHONE_NOT_FOUND}))),new y({code:S.INITIALIZE_FAILED,name:o.name,message:n,constraint:o.constraint})}})},w_=jt({retryFunction:x_,settings:{retries:3,timeout:500},onError:({error:s,retry:i,reject:e,retryFuncArgs:t,retriedCount:r})=>{let o=r+1;s.name==="NotReadableError"||s.name==="OverconstrainedError"?(o===1?(t[0].video&&(t[0].maxResolution=!1,(!Le||t[0].width*t[0].height<=1920*1080)&&t[0].frameRate&&(t[0].frameRate=t[0].frameRate>10?10:5)),t[0].retryWhenExactFailed&&t[0].useExactDeviceId&&(t[0].useExactDeviceId=!1)):o===2?t[0].useDeviceIdOnly=!0:o===3&&!t[0].useExactDeviceId&&(t[0].useTrueAsConstraint=!0),i()):e(s),t[0].microphoneId&&sm(t[0].microphoneId,!1),t[0].cameraId&&sm(t[0].cameraId,!0)},onRetrying:s=>{R.warn(`getUserMedia NotReadableError observed, retrying [${s}/3]`)},onRetryFailed:s=>{te.logFailedEvent({eventType:rt.GET_USER_MEDIA_RETRY,error:s})},onRetrySuccess:s=>{te.logSuccessEvent({eventType:rt.GET_USER_MEDIA_RETRY}),te.uploadEvent({log:`stat-${rt.GET_USER_MEDIA_RETRY}-success-${s}`})}});function sm(s,i){return p(this,null,function*(){let t=(i?yield _t():yield ot()).find(r=>r.deviceId===s);t&&oe(t.getCapabilities)&&R.warn(Tt(t.getCapabilities(),{keysToInclude:An}))})}function U_(s){return{audio:V_(s),video:B_(s)}}function V_(s){if(!s.audio)return!1;if(s.useTrueAsConstraint)return!0;let i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:s.sampleRate};return!oi(s.microphoneId)&&(i.deviceId=s.useExactDeviceId?{exact:s.microphoneId}:s.microphoneId,s.useDeviceIdOnly)?i:(j(s.channelCount)&&(i.channelCount=s.channelCount),ge(s.echoCancellation)&&!s.echoCancellation&&(i.echoCancellation=!1),ge(s.noiseSuppression)&&!s.noiseSuppression&&(i.noiseSuppression=!1),ge(s.autoGainControl)&&!s.autoGainControl&&(i.autoGainControl=!1),oi(i)?!0:i)}function B_(s){if(!s.video)return!1;if(s.useTrueAsConstraint)return!0;let{maxResolution:i=!0}=s,e={};return s.cameraId?e.deviceId=s.useExactDeviceId?{exact:s.cameraId}:s.cameraId:s.facingMode&&(e.facingMode=s.facingMode),s.useDeviceIdOnly&&!oi(e)?e:(s.width&&(e.width={ideal:s.width},i&&!ne&&(e.width.max=s.width)),s.height&&(e.height={ideal:s.height},i&&!ne&&(e.height.max=s.height)),ne&&kt&&s.width&&s.height&&s.width*s.height<352*288&&(e.width=s.width,e.height=s.height),s.frameRate&&(e.frameRate=s.frameRate),oi(e)?!0:e)}var om=w_;function Ia(s){return Q((i,e)=>function(...t){return p(this,null,function*(){return yield s.apply(this,t),i.apply(this,t)})})}function Ze(s){return Q((i,e)=>function(...t){return p(this,null,function*(){let r=yield i.apply(this,t);return yield s.call(this,...t),r})})}function Aa(s){return Q((i,e)=>function(...t){return p(this,null,function*(){try{return yield i.apply(this,t)}catch(r){s.call(this,r)}})})}function Q(s){return function(i,e,t){return t.value=s(t.value,e),t}}var nm=(()=>{let s=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&R.info(`visibility change: ${document.visibilityState}`),!s&&(document.addEventListener("visibilitychange",()=>{R.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),s=!0)}})();var F_=0,Ca=class{constructor(){d(this,"log",R.createLogger({id:`fq${++F_}`}));d(this,"isRunning",!1);d(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(i,e=!1){var o,n;let t=v({},i),r=new Promise((a,c)=>{t.resolve=a,t.reject=c});return t.promise=r,e?this.length<=1?this.queue.push(t):(n=(o=this.lastQueueItem)==null?void 0:o.promise)==null||n.then(t.resolve,t.reject):this.queue.push(t),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),r}shift(){let i=this.queue.shift();return this.log.debug(`shift ${this.length}`),i}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:i,args:e,context:t,resolve:r,reject:o}=this.queue[0];this.isRunning=!0,i.apply(t,e).then(r,o).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},xo=new WeakMap,Ra=new WeakMap;function ni(s=!1){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=xo.get(this)||new Ca;return xo.set(this,n),n.push({fn:r,args:o,context:this},s)},t}}function am(s){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=xo.get(this);if(n){let a=n.queue.filter((c,l)=>{if(l===0)return!0;let u=!0;return c.args.forEach(h=>{o.find(f=>f===h)||(u=!1)}),u?(c.reject(new y({code:S.API_CALL_ABORTED,message:s})),!1):!0});n.queue=a}return r.apply(this,o)},t}}function ya(s){return function(i,e,t){let r=t.value;return t.value=function(...o){var a,c,l;let n=[];return(c=(a=xo.get(this))==null?void 0:a.queue)==null||c.forEach(u=>n.push(u)),(l=Ra.get(this))==null||l.forEach(u=>u==null?void 0:u.queue.forEach(h=>n.push(h))),n.forEach(u=>{u.reject(new y({code:S.API_CALL_ABORTED,message:s}))}),xo.delete(this),Ra.delete(this),r.apply(this,o)},t}}function Li(s){return function(i,e,t){let r=t.value,o=n=>s(...n);return t.value=function(...n){let a=Ra.get(this)||new Map,c=a.get(o(n))||new Ca;return a.set(o(n),c),Ra.set(this,a),c.push({fn:r,args:n,context:this})},t}}function nt(s,i){return Q((e,t)=>function(...r){let o=s;try{let n=e.apply(this,r),a=w();return Xi(n)?n.then(c=>(i?b.addSuccessEvent({key:o,cost:w()-a}):b.addSuccessEvent({key:o}),c)).catch(c=>{throw b.addFailedEvent({key:o,error:c}),c}):(b.addSuccessEvent({key:o}),n)}catch(n){throw b.addFailedEvent({key:o,error:n}),n}})}var Or=class Or extends Dr{constructor(e,t){super({mediaType:e,PlayerClass:t});d(this,"isRemote",!1);d(this,"deviceId");d(this,"groupId","");d(this,"label","");d(this,"sourceTrack");d(this,"_isRecapturing",!1);d(this,"_lastRecaptureTime",0);d(this,"_onMuteTimeoutId",-1);d(this,"_encodeCheckTimeoutId",-1);d(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,t){throw new Error("Method not implemented.")}installTrackEvent(e){Ge(e,e).add(m.MUTE,this.onTrackMuted).add(m.UNMUTE,this.onTrackUnmuted).add(m.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===m.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){be(e)}setStateToReady(){}capture(e){return p(this,null,function*(){var t;try{let r=w();E.emit(I.LOCAL_TRACK_CAPTURE_START,{track:this});let o;e.customSource?(o=new MediaStream,o.addTrack(e.customSource)):((t=this.mediaTrack)==null||t.stop(),o=yield om(e));let n=o.getTracks()[0];return this.sourceTrack=n,yield this.setInputMediaStreamTrack(n),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),E.emit(I.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:w()-r}),o}catch(r){throw E.emit(I.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:r}),this.log.error(`getUserMedia error observed ${r}`),r}})}setOutputMediaStreamTrack(e){var t;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(t=this.room)==null?void 0:t.replaceTrack(this)}publish(e,t){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),t}unpublish(){this.room&&this.room.localTracks.delete(this),E.emit(I.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return p(this,null,function*(){if(this.mediaTrack&&ei){let{deviceId:e,groupId:t}=this.mediaTrack.getSettings(),{label:r}=this.mediaTrack;(yield rm({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=r,t&&(this.groupId=t),_a().then(n=>{let a=n.find(c=>c.deviceId===e);a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===m.AUDIO&&!im(this.mediaTrack)||this.kind===m.VIDEO&&!tm(this.mediaTrack)||this._isRecapturing||e&&kt&&Le)}onTrackMuted(){if(super.onTrackMuted(),nm(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<zr){setTimeout(()=>this.onTrackMuted(),zr);return}this._onMuteTimeoutId=setTimeout(()=>p(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((Se||he)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return p(this,null,function*(){if(Fe(Or.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<zr){setTimeout(()=>this.onTrackEnded(),zr);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return p(this,null,function*(){var r;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(r=this._inputTrack)==null||r.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let t={useExactDeviceId:!0};if(e==="user"||e==="environment")t.facingMode=e;else{let o;(this.kind==="audio"?yield ot():yield _t()).find(a=>a.deviceId===e)&&(o=e),t.deviceId=o}return this.capture(t).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),E.emit(I.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(o=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${o.message}`),this.emit("5",o),E.emit(I.LOCAL_TRACK_RECAPTURE,{track:this,error:o})})})}getRecoverCaptureDeviceId(){return p(this,null,function*(){let e=this instanceof Je;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let r=(wo.get(t)||0)+1;if(wo.set(t,r),r>=3){let o=e?(yield _t()).find(n=>!wo.has(n.deviceId)):(yield ot()).find(n=>!wo.has(n.deviceId));o&&(this.log.warn(`${t} capture fail ${r} times, change new ${o.deviceId}`),t=o.deviceId)}}return t})}stopCapture(){var e,t;this._inputTrack&&((e=this._inputTrack)==null||e.stop(),this.uninstallTrackEvent(this._inputTrack)),(t=this.manager)==null||t.removeInput(this)}close(){var e;super.close(),this._inputTrack&&(this._inputTrack.stop(),this.uninstallTrackEvent(this._inputTrack)),(e=this.manager)==null||e.removeInput(this)}};N([pe(H.INIT,"ready",{ignoreError:!0,sync:!0})],Or.prototype,"setStateToReady",1),N([ni()],Or.prototype,"capture",1),N([pe("ready","publish",{ignoreError:!0,success(){var t,r;this.room.localTracks.add(this),E.emit(I.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var n,a;if(!((((a=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:a.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let c=this.kind===m.AUDIO,l=this.stat.bytesSent>0;b[l?"addSuccessEvent":"addFailedEvent"]({key:c?503700:513702}),l||(b.addEnum({key:c?503701:513703,value:fo()}),te.uploadEvent({log:`stat-encode-failed-${this.kind}-${Sr()||bi()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(e){let t="error";if(e.cause instanceof RTCError){let r=e.cause;r.message.includes("timeout")?t="timeout":r.code===S.API_CALL_ABORTED&&(t="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:t,error:e.cause||e})}}),nt(521714,!1)],Or.prototype,"publish",1),N([Q(e=>function(){return p(this,null,function*(){let t=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:t,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),pe([],"ready",{sync:!0})],Or.prototype,"unpublish",1);var ki=Or,wo=new Map;E.on(I.SWITCH_DEVICE_SUCCESS,s=>{s.track.deviceId&&wo.delete(s.track.deviceId)});var St=class s extends ki{constructor(e){super(1,Ea);d(this,"mediaType",1);d(this,"volume",0);d(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});d(this,"playerMuted",!0);d(this,"pipeline");d(this,"earMonitorGainNode",new We);d(this,"_output",new We);d(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});this.manager=e,this.pipeline=new Ss(e),this.pipeline.gain.pipeTo(this.earMonitorGainNode.pipeTo(this._output),this.player.pipeline.volumeMeter),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}get dbVolume(){return vr.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}setInputMediaStreamTrack(e){return p(this,null,function*(){let t=this.trackSettings||{};b.addEnum({key:501701,value:t.channelCount||0,useUV:!1}),b.addEnum({key:501702,value:t.sampleRate||0,useUV:!1}),b.addEnum({key:502700,value:0});let{sampleRate:r,channelCount:o}=t;this._log.info(`local audio track input ${JSON.stringify({sampleRate:r,channelCount:o})}`),this.pipeline.source.channelCount=o||1,this.pipeline.replaceSource(e),yield Fe(s.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:t,useExactDeviceId:r=!0,retryWhenExactFailed:o=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:r,retryWhenExactFailed:o,customSource:t})}switchDevice(e){return p(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===mr){if(yield Yd(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.mediaTrack&&this.mediaTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),E.emit(I.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(t){throw this.log.error(`switch microphone failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}}})}listenDeviceChange(){ke&&!ke.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&ke.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return p(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),Te(this.userId,{eventId:2003,param1:6,streamType:1});let t=yield ot();t[0]?this.recapture(t[0].deviceId):ke.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(o){return p(this,arguments,function*({echoCancellation:e,noiseSuppression:t,autoGainControl:r}){let n=this.sourceTrack||this.mediaTrack;if(!n)return;let a=n.getConstraints(),c=!1;!T(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a.echoCancellation=e,c=!0),!T(t)&&t!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=t,a.noiseSuppression=t,c=!0),!T(r)&&r!==this.profile.autoGainControl&&(this.profile.autoGainControl=r,a.autoGainControl=r,c=!0),c&&(ne||Le?yield n.applyConstraints(a).catch(l=>this._log.warn("update3A failed: ",l)):this.deviceId&&(yield this.recapture(this.deviceId)))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&b.addEnum({key:502700,value:2})}setAudioVolume(e){super.setAudioVolume(0),Se&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(Ce().createGain()),this._output.setNode(Ce().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}addDenoiser(e){var t;if(dt<=92&&((t=this.trackSettings)==null?void 0:t.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}b.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0))}close(){this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),ke.off("audioInputAdded",this.handleMicrophoneAdded,this),ke.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return p(this,null,function*(){try{yield Fe(s.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield ot()).find(o=>o.deviceId!==e);if(r)yield Fe(s.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((t,r)=>r?r({frame:t}):t,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var Pi=class{constructor(i,e=!1){this.dataView=i;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,t=[],r=0;for(let n=i;n<=e;n++){let a=this.dataView.getInt8(n);switch(a){case 0:case 1:case 2:case 3:r===2&&(t.push(3),r=0),a==0?r++:r=0,t.push(a);break;default:r=0,t.push(a);break}}t.push(this.dataView.getInt8(this.dataView.byteLength-1));let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=o}removePreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,t=[],r=0;for(let n=i;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:r++,t.push(this.dataView.getInt8(n));break;case 3:r!==2&&t.push(this.dataView.getInt8(n)),r=0;break;default:t.push(this.dataView.getInt8(n)),r=0;break}let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=o}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let i=6;for(let e=6;e<this.dataView.buffer.byteLength&&(i++,this.dataView.getUint8(e)===255);e++);return i}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let i=0,e=6;for(let o=6;o<this.dataView.buffer.byteLength;o++){let n=this.dataView.getUint8(o);if(e++,n===255)i+=255;else{i+=n;break}}let t=new ArrayBuffer(i),r=new DataView(t);for(let o=0;o<t.byteLength;o++,e++)r.setInt8(o,this.dataView.getInt8(e));return r}};var ba=class{constructor(){d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(this,"_seiPayloadType",243)}encodeSEINalu(i){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,o=[];o.push(0,0,0,1,6,this._seiPayloadType);for(let a=0;a<t;a++)o.push(255);o.push(r);let n=new DataView(i);return o.push(...new Uint8Array(n.buffer)),o.push(128),new Pi(new DataView(new Uint8Array(o).buffer),!0)}sendSEI(i,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(i),e!=null&&e.small&&this._smallSeiMessageList.push(i)}isEmpty(){return!this._seiMessageList.length}getNaluCount(i){let e=0,t=0,r=new DataView(i);for(let o=0;o<i.byteLength;o++)switch(r.getUint8(o)){case 0:e++;break;case 1:(e===2||e===3)&&t++,e=0;break;default:e=0;break}return t}encode(i,e){let t=e?this._smallSeiMessageList:this._seiMessageList;if(t.length>0&&i.data.byteLength>0){let o=9-this.getNaluCount(i.data);if(o<=0)return 0;let n=t.splice(0,o).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((f,_)=>f+_.dataView.byteLength,0),c=new ArrayBuffer(a+i.data.byteLength),l=new DataView(c),u=new DataView(i.data),h=0;for(let f=0;f<n.length;f++)for(let _=0;_<n[f].dataView.byteLength;_++)l.setInt8(h++,n[f].dataView.getInt8(_));for(let f=0;f<i.data.byteLength;f++)l.setInt8(h++,u.getInt8(f));return i.data=c,n.length}return 0}};var Mr=class Mr extends ki{constructor(e,t=4){super(t,pt);d(this,"profile",{width:640,height:480,frameRate:15,bitrate:500});d(this,"avoidCropping",!1);d(this,"_scaleResolutionDownBy");d(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});d(this,"small");d(this,"isNeedToSetBandwidth");d(this,"muteImage");d(this,"manager");d(this,"_seiCodec",new ba);this.manager=e;let r=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(x(v({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",r),this.on("publish",r),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!ei||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return p(this,null,function*(){var t,r,o;if(K(e)){if(this.muteImage===e)return;yield(t=this.manager)==null?void 0:t.deleteWatermark("mute"),yield(r=this.manager)==null?void 0:r.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,Fe(Mr.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(o=this.manager)==null?void 0:o.deleteWatermark("mute"),this.muteImage=void 0),Fe(Mr.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:t,useExactDeviceId:r=!0,customSource:o,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:t||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:r,retryWhenExactFailed:n,customSource:o})}setProfile(e){let t=v({},e),r=t.width>t.height;t.width*t.height<=160*120&&he&&Ye&&(this.log.warn(`resolution is ${t.width}*${t.height}, fallback to 240*180`),t.width=r?240:180,t.height=r?180:240,t.bitrate=Math.max(t.bitrate,150)),t.width*t.height>1280*720&&sd&&(t.width=r?1280:720,t.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),this.avoidCropping&&(Ye||ne)&&!nd()&&t.width*t.height<=640*360&&t.width/t.height===16/9&&(this._scaleResolutionDownBy=1280/t.width,t.width=1280,t.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),t.bitrate&&(this.isNeedToSetBandwidth=t.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(t):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(x(v({},this.profile),{width:1920,height:1080})))}applyProfile(){return p(this,null,function*(){var a;if(!this.mediaTrack)return;let{width:e=0,height:t=0}=(this.sourceTrack||this.mediaTrack).getSettings(),r=e*t,o=this.settings;if(!(!(o.height!==this.profile.height||o.width!==this.profile.width||o.frameRate!==this.profile.frameRate)||!this.deviceId)&&(lt===16?yield this.recapture(this.deviceId):(yield(a=this.sourceTrack||this.mediaTrack)==null?void 0:a.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth)){this.isNeedToSetBandwidth=!1;let{width:c=0,height:l=0}=(this.sourceTrack||this.mediaTrack).getSettings(),u=c*l;if(u&&r&&u===r){this.log.warn("set bandwidth failed: resolution is not changed");return}return this.room.setBandWidth({bandwidth:this.profile.bitrate,type:m.VIDEO,videoType:m.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},t=this.sourceTrack||this.mediaTrack;return ei&&t&&Object.assign(e,t.getSettings()),e}get scaleResolutionDownBy(){if(this._scaleResolutionDownBy)return this._scaleResolutionDownBy;let{settings:e}=this;return e.width===this.profile.width&&e.height===this.profile.height?1:yn()&&this.profile.width>this.profile.height&&e.height>e.width?Math.max(e.width/this.profile.height,e.height/this.profile.width,1):Math.max(e.width/this.profile.width,e.height/this.profile.height,1)}isAllowed2k4k(e){var t;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((t=this.room.scheduleResult.trtcAutoConf)==null?void 0:t["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return p(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let t={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?t.facingMode=e:t.deviceId=e,this.mediaTrack.stop(),yield this.capture(t),E.emit(I.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(t){throw this.log.error(`switch camera failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}})}listenDeviceChange(){ke&&!ke.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&ke.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return p(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),Te(this.userId,{eventId:2003,param1:7,streamType:2});let t=yield _t();t[0]?this.recapture(t[0].deviceId):ke.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return p(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,t){if(!this.manager)return e;let r=t?8:this.mediaType;return this.manager.encodePipeline.reduceRight((o,n)=>n?n({frame:o,mediaType:r}):o,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,t){return T(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,t)}close(){ke.off("videoInputAdded",this.handleCameraAdded,this),ke.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return p(this,null,function*(){try{yield Fe(Mr.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield _t()).find(o=>o.deviceId!==e);if(r)yield Fe(Mr.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}};N([Ze(function(e){this.setContentHint(e.contentHint||"motion")})],Mr.prototype,"capture",1);var Je=Mr;var dm=_o();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:dm,exposeOrigin:!0,permittedOrigins:["*"]})}catch(s){}var W_=function(s){return p(this,null,function*(){let i=null,e=q_(s);R.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);s.systemAudio&&t.getAudioTracks().length===0&&(us&&dt<74||Le||ne)&&R.warn("Your browser not support capture system audio");let r=t.getVideoTracks()[0];if(r){if(s.frameRate)try{yield r.applyConstraints({frameRate:{min:s.frameRate,ideal:s.frameRate},width:s.width,height:s.height})}catch(o){R.warn(`screen applyConstraints failed: ${o}`)}s.captureElement&&(yield J_(r,s.captureElement))}if(s.audio){let o=j_(s);R.info(`getUserMedia with constraints: ${JSON.stringify(o)}`),i=yield navigator.mediaDevices.getUserMedia(o),t.addTrack(i.getAudioTracks()[0])}return t})};function J_(s,i){return p(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&oe(s.cropTo))try{if(!(((e=s.getCaptureHandle())==null?void 0:e.handle)===dm))return;let r=yield CropTarget.fromElement(i);yield s.cropTo(r)}catch(t){R.warn(`cropTo target failed ${t}`)}})}function j_(s){let i={echoCancellation:s.echoCancellation,autoGainControl:s.autoGainControl,noiseSuppression:s.noiseSuppression,sampleRate:s.sampleRate,channelCount:s.channelCount};return T(s.microphoneId)||(i.deviceId=s.microphoneId),{audio:i,video:!1}}function q_(s){let i={preferCurrentTab:s.preferDisplaySurface==="current-tab"||!!s.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:Le?{max:s.width}:{ideal:s.width,max:s.width},height:Le?{max:s.height}:{ideal:s.height,max:s.height},frameRate:s.frameRate,displaySurface:s.preferDisplaySurface||"monitor"};if(i.video=e,s.systemAudio){let{echoCancellation:t=!0,noiseSuppression:r=!1,autoGainControl:o=!1}=s;i.audio={echoCancellation:t,noiseSuppression:r,autoGainControl:o,sampleRate:48e3}}return i}var lm=W_;var at=class extends Je{constructor(e){super(e,2);d(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});d(this,"objectFit","contain");d(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}capture(u){return p(this,arguments,function*({systemAudio:e=!1,autoGainControl:t,echoCancellation:r,noiseSuppression:o,audioTrack:n,videoTrack:a,captureElement:c,preferDisplaySurface:l}){try{let h;return a||n?(h=new MediaStream,a&&h.addTrack(a),n&&h.addTrack(n)):h=yield lm({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:t,echoCancellation:r,noiseSuppression:o,captureElement:c,preferDisplaySurface:l}),yield this.setInputMediaStreamTrack(h.getVideoTracks()[0]),h}catch(h){throw this.log.error(`getDisplayMedia error observed ${h}`),h instanceof y?h:new y({code:S.INITIALIZE_FAILED,name:h.name,message:h.message})}})}switchDevice(e){return p(this,null,function*(){throw new Error("Method not implemented.")})}};N([Ze(function(e){this.setContentHint(e.contentHint||"detail")})],at.prototype,"capture",1);var ci=class extends St{constructor(i){super(i),this._log.id=`s-${this._log.id}`}};var X_='registerProcessor("dumper",class extends AudioWorkletProcessor{constructor(e){super(),this.sourceSampleRate=e.processorOptions.sourceSampleRate||48e3,this.targetSampleRate=e.processorOptions.targetSampleRate||48e3,this.port.onmessage=e=>{this.port2=e.data.port}}process(e){return(this.port2||this.port).postMessage(this.resampleAll(e,this.sourceSampleRate,this.targetSampleRate)),!0}resampleAll(r,s,a){if(s===a)return r;var o=[];for(let t=0;t<r.length;t++){o[t]=[];for(let e=0;e<r[t].length;e++)o[t][e]=this.resample(r[t][e],s,a)}return o}resample(t,e,r){if(e===r)return t;var s=Math.round(t.length*(this.targetSampleRate/this.sourceSampleRate)),a=new Float32Array(s),o=(t.length-1)/(s-1);a[0]=t[0];for(let e=1;e<s-1;e++){var l=e*o,p=Math.floor(l),h=Math.ceil(l);a[e]=t[p]+(t[h]-t[p])*(l-p)}return a[s-1]=t[t.length-1],a}});',Zd;function Uo(s,i=48e3,e){return p(this,null,function*(){let t=Ce("dump");Zd||(Zd=Nr(t,URL.createObjectURL(new Blob([X_],{type:"application/javascript"})))),yield Zd;let r=t.sampleRate,o=new AudioWorkletNode(t,"dumper",{numberOfInputs:s.length,numberOfOutputs:0,processorOptions:{sourceSampleRate:r,targetSampleRate:i}});return e&&o.port.postMessage({port:e},[e]),s.forEach((n,a)=>n.connect(o,0,a)),new ReadableStream({start(n){o.port.onmessage=a=>{n.enqueue(a.data)}},cancel(){s.forEach(n=>n.disconnect(o)),o.port.close()}})})}var Na=class extends ma{constructor(e){super();this.room=e;d(this,"_localAudioTrack");d(this,"_localScreenAudioTrack");d(this,"log",R.createLogger({id:"am"}));d(this,"denoiser");d(this,"voiceChanger");d(this,"mixChangedDebounce");d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);d(this,"getPCMAbortCtrlMap",new Map);d(this,"audioFrameEventConfigMap",new Map);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.installEvent()}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}dump(e){var u,h;if(!this._localAudioTrack)return;let t=[],r=[];(u=this._localAudioPipline)!=null&&u.source.node&&(t.push(this._localAudioPipline.source.node),r.push("mic")),(h=this._localAudioPipline)!=null&&h.denoiser.node&&(t.push(this._localAudioPipline.denoiser.node),r.push("mic-processed")),this.mixWeight>1&&(t.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),r.push("mix")),this.log.info(`dump audio track ${r}, duration: ${e}`);let o=new AbortController,n=[],a=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),o.abort("timeout")},e*1e3),c=()=>{for(let f=0;f<r.length;f++){let _=URL.createObjectURL(new Blob(n[f])),D=document.createElement("a");D.href=_,D.download=`${r[f]}.pcm`,D.style.display="none",document.body.appendChild(D),D.click(),URL.revokeObjectURL(_),D.remove()}clearTimeout(a),o.abort("download")},l=Uo(t).then(f=>f.pipeTo(new WritableStream({write(_){_.forEach((D,g)=>n[g]=n[g]?n[g].concat(D[0]):[D[0]])}}),o).catch(_=>c));return{then:l.then.bind(l),download:c}}getPCM(e,t){var M,ie,F;if(T(WritableStream)){this.log.warn("getPCM failed: browser not support WritableStream");return}let{enable:r,sampleRate:o=48e3,channelCount:n=1,port:a}=(t===""?this.audioFrameEventConfigMap.get(""):this.audioFrameEventConfigMap.get(t)||this.audioFrameEventConfigMap.get("*"))||{};if(!r)return;this.log.info(`getPCM ${t||"local"}`);let c=Math.floor(o*.04),l=new Float32Array(c),u=new Float32Array(c),h,f,_=0,D=new AbortController,g=t===""?(M=this._localAudioTrack)==null?void 0:M.mediaTrack:(F=(ie=this.room)==null?void 0:ie.remotePublishedUserMap.get(t))==null?void 0:F.remoteAudioTrack.mediaTrack;if(!g){this.log.info(`getPCM failed: ${t||"local"} has no audio track`);return}let A=Ce().createMediaStreamSource(new MediaStream([g]));return Uo([A],o,a).then(Oe=>Oe.pipeTo(new WritableStream({write(U){U[0][0]&&(_+U[0][0].length>c?(l.set(U[0][0].subarray(0,c-_),_),h=U[0][0].subarray(c-_),u.set(U[0][1].subarray(0,c-_),_),f=U[0][1].subarray(c-_),_+=c-_):(h&&(l.set(h,_),_+=h.length,h=void 0),f&&(u.set(f,_),f=void 0),l.set(U[0][0],_),u.set(U[0][1],_),_+=U[0][0].length),_>=c&&(_=0,e({userId:t,sampleRate:o,channelCount:n,data:n===1?l:[l,u]}),l=new Float32Array(c),u=new Float32Array(c)))}}),D).catch(U=>this.log.warn(`stop getPCM reason:${U}`))),D}get hasScreenAudioTrack(){return this._localScreenAudioTrack!==null}get hasAudioTrack(){return!T(this._localAudioTrack)}changeInput(e){if(e instanceof ci)return this._localScreenAudioTrack=e,e.pipeline.connect(),this.mixOnChange();if(e instanceof St)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),e.pipeline.connect(),this.mixOnChange();if(e instanceof xi)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,t;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(t=this._localScreenAudioTrack)==null?void 0:t.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof ci?delete this._localScreenAudioTrack:e instanceof St?delete this._localAudioTrack:e instanceof xi}addDenoiser(e){var t;this.denoiser=e,(t=this._localAudioTrack)==null||t.addDenoiser(e)}removeDenoiser(e){var t;delete this.denoiser,(t=this._localAudioTrack)==null||t.removeDenoiser(e)}addVoiceChanger(e,t){var r;this.voiceChanger=[e,t],(r=this._localAudioTrack)==null||r.pipeline.voiceChanger.setNode(e,t)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}destroy(){this.close(),this.getPCMAbortCtrlMap.forEach(e=>e==null?void 0:e.abort("destroy")),this.getPCMAbortCtrlMap.clear(),this.audioFrameEventConfigMap.clear(),this.uninstallEvent()}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}handleLocalTrackStarted({room:e,userId:t}){var o;if(e!==this.room||this.getPCMAbortCtrlMap.get(t))return;let r=this.getPCM(n=>{var a;(a=this.room)==null||a.emit("audio-frame",n)},"");this.getPCMAbortCtrlMap.set(t,r),this.getPCMAbortCtrlMap.get(t)&&((o=this._localAudioTrack)==null||o.on("input-media-track-changed",()=>{let n=this.getPCMAbortCtrlMap.get(t);n&&(n.abort("inputMediaTrackChanged"),n=this.getPCM(a=>{var c;(c=this.room)==null||c.emit("audio-frame",a)},""),this.getPCMAbortCtrlMap.set(t,n))}))}handleLocalTrackStopped({room:e,userId:t}){if(e!==this.room)return;let r=this.getPCMAbortCtrlMap.get(t);r&&(r.abort("stopLocalAudio"),this.getPCMAbortCtrlMap.delete(t))}handleRemoteTrackStarted({room:e,userId:t}){if(e===this.room&&!this.getPCMAbortCtrlMap.get(t)){let r=this.room.audioManager.getPCM(o=>{var n;(n=this.room)==null||n.emit("audio-frame",o)},t);this.getPCMAbortCtrlMap.set(t,r)}}handleRemoteTrackStopped({room:e,userId:t}){if(e!==this.room)return;let r=this.getPCMAbortCtrlMap.get(t);r&&(r.abort("stopRemoteAudio"),this.getPCMAbortCtrlMap.delete(t))}installEvent(){E.on("113",this.handleLocalTrackStarted,this),E.on("114",this.handleLocalTrackStopped,this),E.on("115",this.handleRemoteTrackStarted,this),E.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){E.off("113",this.handleLocalTrackStarted),E.off("114",this.handleLocalTrackStopped),E.off("115",this.handleRemoteTrackStarted),E.off("116",this.handleRemoteTrackStopped)}};function va(s=30,i=2){return Q((e,t)=>function(...r){return new Promise((o,n)=>{let a=setTimeout(()=>{let c=new y({code:S.API_CALL_TIMEOUT,message:`checkPendingPromise ${t}() timeout ${s}s`});R.warn(c),i===2?n(c):i===1&&o()},s*1e3);e.apply(this,r).then(o,n).finally(()=>{clearTimeout(a)})})})}var Vl={};fi(Vl,{Events:()=>Ie,Inspect:()=>It,LastSink:()=>kr,Sink:()=>W,Subscribe:()=>Lr,TimeoutError:()=>Vo,audit:()=>Dg,bindCallback:()=>pg,bindNodeCallback:()=>fg,buffer:()=>rg,bufferCount:()=>ig,bufferTime:()=>Xg,call:()=>um,catchError:()=>Pl,combineLatest:()=>mm,concat:()=>Y_,concatMap:()=>Fg,concatMapTo:()=>$g,count:()=>Tg,create:()=>ee,debounce:()=>Og,debounceTime:()=>Mg,defer:()=>pm,delay:()=>zg,deliver:()=>q,dispose:()=>Da,elementAt:()=>kg,empty:()=>$o,every:()=>Ug,exhaustMap:()=>Wg,exhaustMapTo:()=>Jg,filter:()=>di,find:()=>Lg,findIndex:()=>Pg,first:()=>xg,fromAnimationFrame:()=>hg,fromArray:()=>ng,fromEvent:()=>ue,fromEventPattern:()=>ag,fromFetch:()=>cg,fromIterable:()=>dg,fromPromise:()=>gm,fromReadableStream:()=>ug,fromReader:()=>lg,groupBy:()=>jg,identity:()=>z_,ignoreElements:()=>Ag,iif:()=>Z_,inspect:()=>hm,interval:()=>nl,last:()=>wg,map:()=>Ho,mapTo:()=>Bg,max:()=>Eg,merge:()=>sl,mergeMap:()=>Hg,mergeMapTo:()=>Gg,min:()=>Sg,never:()=>_g,nothing:()=>ce,of:()=>og,pairwise:()=>Vg,pipe:()=>de,race:()=>ol,range:()=>mg,reduce:()=>al,retry:()=>Zg,scan:()=>Ll,share:()=>wi,shareReplay:()=>K_,skip:()=>Rg,skipUntil:()=>yg,skipWhile:()=>Pa,startWith:()=>Bo,subject:()=>et,subscribe:()=>Re,sum:()=>Ig,switchMap:()=>Rs,switchMapTo:()=>xr,take:()=>Ui,takeLast:()=>Cg,takeUntil:()=>we,takeWhile:()=>Tm,tap:()=>Ul,throttle:()=>Ng,throwError:()=>gg,timeInterval:()=>qg,timeout:()=>Kg,timer:()=>Fo,toPromise:()=>Qg,toReadableStream:()=>Yg,withLatestFrom:()=>tg,zip:()=>eg});function ce(...s){}var um=s=>s(),z_=s=>s;function Da(){this.dispose()}var hm=()=>typeof __FASTRX_DEVTOOLS__!="undefined",Q_=1,It=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(i){let e=new el(i,this,this.streamId++);return Ie.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},kr=class{constructor(){this.defers=new Set,this.disposed=!1}next(i){}complete(){this.dispose()}error(i){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=ce,this.error=ce,this.next=ce,this.dispose=ce,this.subscribe=ce,this.doDefer()}subscribe(i){return i instanceof It?i.subscribe(this):i(this),this}get bindSubscribe(){return i=>this.subscribe(i)}doDefer(){this.defers.forEach(um),this.defers.clear()}defer(i){this.defers.add(i)}removeDefer(i){this.defers.delete(i)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},W=class extends kr{constructor(i){super(),this.sink=i,i.defer(this.bindDispose)}next(i){this.sink.next(i)}complete(){this.sink.complete()}error(i){this.sink.error(i)}},Lr=class extends kr{constructor(i,e=ce,t=ce,r=ce){if(super(),this._next=e,this._error=t,this._complete=r,this.then=ce,i instanceof It){let o={toString:()=>"subscribe",id:0,source:i};this.defer(()=>{Ie.defer(o,0)}),Ie.create(o),Ie.pipe(o),this.sourceId=o.id,this.subscribe(i),Ie.subscribe({id:o.id,end:!0}),e==ce?this._next=n=>Ie.next(o,0,n):this.next=n=>{Ie.next(o,0,n),e(n)},r==ce?this._complete=()=>Ie.complete(o,0):this.complete=()=>{this.dispose(),Ie.complete(o,0),r()},t==ce?this._error=n=>Ie.complete(o,0,n):this.error=n=>{this.dispose(),Ie.complete(o,0,n),t()}}else this.subscribe(i)}next(i){this._next(i)}complete(){this.dispose(),this._complete()}error(i){this.dispose(),this._error(i)}};function de(s,...i){return i.reduce((e,t)=>t(e),s)}function ee(s,i,e){if(hm()){let t=Object.defineProperties(Object.setPrototypeOf(s,It.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:i,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Ie.create(t);for(let r=0;r<e.length;r++){let o=e[r];typeof o=="function"&&o instanceof It&&Ie.addSource(t,o)}return t}return s}function q(s,i){return function(...e){return t=>{if(t instanceof It){let r=ee(o=>{let n=new s(o,...e);n.sourceId=r.id,n.subscribe(t)},i,arguments);return r.source=t,Ie.pipe(r),r}else return r=>t(new s(r,...e))}}}function ir(s,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:s,payload:i}})}var el=class extends W{constructor(i,e,t){super(i),this.source=e,this.id=t,this.sourceId=i.sourceId,this.defer(()=>{Ie.defer(this.source,this.id)})}next(i){Ie.next(this.source,this.id,i),this.sink.next(i)}complete(){Ie.complete(this.source,this.id),this.sink.complete()}error(i){Ie.complete(this.source,this.id,i),this.sink.error(i)}},Ie={addSource(s,i){ir("addSource",{id:s.id,name:s.toString(),source:{id:i.id,name:i.toString()}})},next(s,i,e){ir("next",{id:s.id,streamId:i,data:e&&e.toString()})},subscribe({id:s,end:i},e){ir("subscribe",{id:s,end:i,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(s,i,e){ir("complete",{id:s.id,streamId:i,err:e?e.toString():null})},defer(s,i){ir("defer",{id:s.id,streamId:i})},pipe(s){ir("pipe",{name:s.toString(),id:s.id,source:{id:s.source.id,name:s.source.toString()}})},update(s){ir("update",{id:s.id,name:s.toString()})},create(s){s.id||(s.id=Q_++),ir("create",{name:s.toString(),id:s.id})}},Vo=class extends Error{constructor(i){super(`timeout after ${i}ms`),this.timeout=i}};var Oa=class extends kr{constructor(i){super(),this.source=i,this.sinks=new Set}add(i){i.defer(()=>this.remove(i)),this.sinks.add(i).size===1&&(this.reset(),this.subscribe(this.source))}remove(i){this.sinks.delete(i),this.sinks.size===0&&this.dispose()}next(i){this.sinks.forEach(e=>e.next(i))}complete(){this.sinks.forEach(i=>i.complete()),this.sinks.clear()}error(i){this.sinks.forEach(e=>e.error(i)),this.sinks.clear()}};function wi(){return s=>{let i=new Oa(s);if(s instanceof It){let e=ee(t=>{i.add(t)},"share",arguments);return i.sourceId=e.id,e.source=s,Ie.pipe(e),e}return ee(i.add.bind(i),"share",arguments)}}function sl(...s){return ee(i=>{let e=new W(i),t=s.length;e.complete=()=>{--t===0&&i.complete()},s.forEach(e.bindSubscribe)},"merge",arguments)}function ol(...s){return ee(i=>{let e=new Map;s.forEach(t=>{let r=new W(i);e.set(t,r),r.complete=()=>{e.delete(t),e.size===0?i.complete():r.dispose()},r.next=o=>{e.delete(t),e.forEach(n=>n.dispose()),r.resetNext(),r.resetComplete(),r.next(o)}}),s.forEach(t=>e.get(t).subscribe(t))},"race",arguments)}function Y_(...s){return ee(i=>{let e=0,t=s.length,r=new W(i);r.complete=()=>{e<t&&!r.disposed?(r.doDefer(),r.subscribe(s[e++])):i.complete()},r.complete()},"concat",arguments)}function K_(s){return i=>{let e=new Oa(i),t=[];return e.next=function(r){t.push(r),t.length>s&&t.shift(),this.sinks.forEach(o=>o.next(r))},ee(r=>{r.defer(()=>e.remove(r)),t.forEach(o=>r.next(o)),e.add(r)},"shareReplay",arguments)}}function Z_(s,i,e){return ee(t=>s()?i(t):e(t),"iif",arguments)}function mm(...s){return ee(i=>{let e=s.length,t=e,r=e,o=new Array(e),n=()=>{--r===0&&i.complete()},a=(c,l)=>{let u=new W(i);u.next=h=>{--t===0?(u.next=f=>{o[l]=f,i.next(o)},u.next(h)):o[l]=h},u.complete=n,u.subscribe(c)};s.forEach(a)},"combineLatest",arguments)}function eg(...s){return ee(i=>{let e=s.length,t=e,r=new Array(e),o=()=>{--t===0&&i.complete()},n=(a,c)=>{let l=new W(i),u=[];r[c]=u,l.next=h=>{u.push(h),r.every(f=>f.length)&&i.next(r.map(f=>f.shift()))},l.complete=o,l.subscribe(a)};s.forEach(n)},"zip",arguments)}function Bo(...s){return i=>ee((e,t=0,r=s.length)=>{for(;t<r&&!e.disposed;)e.next(s[t++]);e.disposed||e.subscribe(i)},"startWith",arguments)}var tl=class extends W{constructor(i,...e){super(i);let t=new W(this.sink);t.next=r=>this.buffer=r,t.complete=ce,t.subscribe(mm(...e))}next(i){this.buffer&&this.sink.next([i,...this.buffer])}},tg=q(tl,"withLatestFrom"),il=class extends W{constructor(i,e,t){super(i),this.bufferSize=e,this.startBufferEvery=t,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(i){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(i)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(i),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(i=>this.sink.next(i)),super.complete()}},ig=q(il,"bufferCount"),rl=class extends W{constructor(i,e){super(i),this.buffer=[];let t=new W(i);t.next=r=>{i.next(this.buffer),this.buffer=[]},t.complete=ce,t.subscribe(e)}next(i){this.buffer.push(i)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},rg=q(rl,"buffer");var sg=function(s,i,e,t){function r(o){return o instanceof e?o:new e(function(n){n(o)})}return new(e||(e=Promise))(function(o,n){function a(u){try{l(t.next(u))}catch(h){n(h)}}function c(u){try{l(t.throw(u))}catch(h){n(h)}}function l(u){u.done?o(u.value):r(u.value).then(a,c)}l((t=t.apply(s,i||[])).next())})};function et(s){let i=arguments,e=wi()(ee(t=>{e.next=r=>t.next(r),e.complete=()=>t.complete(),e.error=r=>t.error(r),s&&t.subscribe(s)},"subject",i));return e.next=ce,e.complete=ce,e.error=ce,e}function pm(s){return ee(i=>i.subscribe(s()),"defer",arguments)}var fm=s=>i=>{setTimeout(()=>s(i))},_m=s=>fm(i=>{for(let e=0;!i.disposed&&e<s.length;e++)i.next(s[e]);i.complete()});function og(...s){return ee(_m(s),"of",arguments)}function ng(s){return ee(_m(s),"fromArray",arguments)}function nl(s){return ee(i=>{let e=0,t=setInterval(()=>i.next(e++),s);return i.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function Fo(s,i){return ee(e=>{let t=0,r=setTimeout(()=>{if(e.removeDefer(o),e.next(t++),i){let n=setInterval(()=>e.next(t++),i);e.defer(()=>{clearInterval(n)})}else e.complete()},s),o=()=>{clearTimeout(r)};e.defer(o)},"timer",arguments)}function Ma(s,i){return e=>{let t=r=>e.next(r);e.defer(()=>i(t)),s(t)}}function ag(s,i){return ee(Ma(s,i),"fromEventPattern",arguments)}function ue(s,i){if("on"in s&&"off"in s)return ee(Ma(e=>s.on(i,e),e=>s.off(i,e)),"fromEvent",arguments);if("addListener"in s&&"removeListener"in s)return ee(Ma(e=>s.addListener(i,e),e=>s.removeListener(i,e)),"fromEvent",arguments);if("addEventListener"in s)return ee(Ma(e=>s.addEventListener(i,e),e=>s.removeEventListener(i,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function gm(s){return ee(i=>{s.then(i.next.bind(i),i.error.bind(i))},"fromPromise",arguments)}function cg(s,i){return ee(pm(()=>gm(fetch(s,i))),"fromFetch",arguments)}function dg(s){return ee(fm(i=>{try{for(let e of s){if(i.disposed)return;i.next(e)}i.complete()}catch(e){i.error(e)}}),"fromIterable",arguments)}function lg(s){let i=e=>sg(this,void 0,void 0,function*(){if(e.disposed)return;let{done:t,value:r}=yield s.read();if(t){e.complete();return}else e.next(r),i(e)});return ee(e=>{i(e)},"fromReader",arguments)}function ug(s){return ee(i=>{let e=new AbortController,t=e.signal;i.defer(()=>e.abort("cancelled")),s.pipeTo(new WritableStream({write(r){i.next(r)},close(){i.complete()},abort(r){i.error(r)}}),{signal:t}).then(()=>i.complete(),r=>i.error(r))},"fromReadableStream",arguments)}function hg(){return ee(s=>{let i=requestAnimationFrame(function e(t){s.disposed||(s.next(t),i=requestAnimationFrame(e))});s.defer(()=>cancelAnimationFrame(i))},"fromAnimationFrame",arguments)}function mg(s,i){return ee((e,t=s,r=i+s)=>{for(;t<r&&!e.disposed;)e.next(t++);return e.complete(),"range"},"range",arguments)}function pg(s,i,...e){return ee(t=>{let r=e.concat(o=>(t.next(o),t.complete()));s.apply(i,r)},"bindCallback",arguments)}function fg(s,i,...e){return ee(t=>{let r=e.concat((o,n)=>o?t.error(o):(t.next(n),t.complete()));s.apply(i,r)},"bindNodeCallback",arguments)}function _g(){return ee(()=>{},"never",arguments)}function gg(s){return ee(i=>i.error(s),"throwError",arguments)}function $o(){return ee(s=>s.complete(),"empty",arguments)}var Pr=class extends W{constructor(i,e,t){super(i),this.f=e;let r=()=>{this.sink.next(this.acc),this.sink.complete()};typeof t=="undefined"?this.next=o=>{this.acc=o,this.complete=r,this.resetNext()}:(this.acc=t,this.complete=r)}next(i){this.acc=this.f(this.acc,i)}},al=q(Pr,"reduce"),Tg=s=>q(Pr,"count")((i,e)=>s(e)?i+1:i,0),Eg=()=>q(Pr,"max")(Math.max),Sg=()=>q(Pr,"min")(Math.min),Ig=()=>q(Pr,"sum")((s,i)=>s+i,0);var cl=class extends W{constructor(i,e,t){super(i),this.filter=e,this.thisArg=t}next(i){this.filter.call(this.thisArg,i)&&this.sink.next(i)}},di=q(cl,"filter"),dl=class extends W{next(i){}},Ag=q(dl,"ignoreElements"),ll=class extends W{constructor(i,e){super(i),this.count=e}next(i){this.sink.next(i),--this.count===0&&this.complete()}},Ui=q(ll,"take"),ul=class extends W{constructor(i,e){super(i);let t=new W(i);t.next=()=>i.complete(),t.complete=Da,t.subscribe(e)}},we=q(ul,"takeUntil"),hl=class extends W{constructor(i,e){super(i),this.f=e}next(i){this.f(i)?this.sink.next(i):this.complete()}},Tm=q(hl,"takeWhile"),Cg=s=>al((i,e)=>(i.push(e),i.length>s&&i.shift(),i),[]),ml=class extends W{constructor(i,e){super(i),this.count=e}next(i){--this.count===0&&(this.next=super.next)}},Rg=q(ml,"skip"),pl=class extends W{constructor(i,e){super(i),i.next=ce;let t=new W(i);t.next=()=>{t.dispose(),i.resetNext()},t.complete=Da,t.subscribe(e)}},yg=q(pl,"skipUntil"),fl=class extends W{constructor(i,e){super(i),this.f=e}next(i){this.f(i)||(this.next=super.next,this.next(i))}},Pa=q(fl,"skipWhile"),bg={leading:!0,trailing:!1},_l=class extends W{constructor(i,e,t){super(i),this.durationSelector=e,this.trailing=t}cacheValue(i){this.last=i,this.disposed&&this.throttle(i)}send(i){this.sink.next(i),this.throttle(i)}throttle(i){this.reset(),this.subscribe(this.durationSelector(i))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},ka=class extends W{constructor(i,e,t=bg){super(i),this.durationSelector=e,this.config=t,this._throttle=new _l(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(i){this._throttle.disposed&&this.config.leading?this._throttle.send(i):this._throttle.cacheValue(i)}complete(){this._throttle.throttle=ce,this._throttle.complete(),super.complete()}},Ng=q(ka,"throttle"),vg={leading:!1,trailing:!0},Dg=s=>q(ka,"audit")(s,vg),gl=class extends W{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},La=class extends W{constructor(i,e){super(i),this.durationSelector=e,this._debounce=new gl(this.sink),this._debounce.dispose()}next(i){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=i,this._debounce.subscribe(this.durationSelector(i))}complete(){this._debounce.complete(),super.complete()}},Og=q(La,"debounce"),Mg=s=>q(La,"debounceTime")(i=>Fo(s)),Tl=class extends W{constructor(i,e,t){super(i),this.count=e,this.defaultValue=t}next(i){this.count--===0&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},kg=q(Tl,"elementAt"),Lg=s=>i=>Ui(1)(Pa(e=>!s(e))(i)),El=class extends W{constructor(i,e){super(i),this.f=e,this.i=0}next(i){this.f(i)?(this.sink.next(this.i++),this.complete()):++this.i}},Pg=q(El,"findIndex"),Sl=class extends W{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},xg=q(Sl,"first"),Il=class extends W{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},wg=q(Il,"last"),Al=class extends W{constructor(i,e){super(i),this.predicate=e,this.index=0}next(i){this.predicate(i,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},Ug=q(Al,"every");var Cl=class extends W{constructor(i,e,t){super(i),this.f=e,typeof t=="undefined"?this.next=r=>{this.acc=r,this.resetNext(),this.sink.next(this.acc)}:this.acc=t}next(i){this.sink.next(this.acc=this.f(this.acc,i))}},Ll=q(Cl,"scan"),Rl=class extends W{constructor(){super(...arguments),this.hasLast=!1}next(i){this.hasLast?this.sink.next([this.last,i]):this.hasLast=!0,this.last=i}},Vg=q(Rl,"pairwise"),xa=class extends W{constructor(i,e,t){super(i),this.mapper=e,this.thisArg=t}next(i){super.next(this.mapper.call(this.thisArg,i))}},Ho=q(xa,"map"),Bg=s=>q(xa,"mapTo")(i=>s),As=class extends W{constructor(i,e,t){super(i),this.data=e,this.context=t}next(i){let e=this.context.combineResults;e?this.sink.next(e(this.data,i)):this.sink.next(i)}tryComplete(){this.context.resetComplete(),this.dispose()}},Cs=class extends W{constructor(i,e,t){super(i),this.makeSource=e,this.combineResults=t,this.index=0}subInner(i,e){let t=this.currentSink=new e(this.sink,i,this);this.complete=this.tryComplete,t.complete=t.tryComplete,t.subscribe(this.makeSource(i,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},wa=class extends As{},Ua=class extends Cs{next(i){this.subInner(i,wa),this.next=e=>{this.currentSink.dispose(),this.subInner(e,wa)}}},Rs=q(Ua,"switchMap");function $a(s){return(i,e)=>s(()=>i,e)}var xr=$a(q(Ua,"switchMapTo")),yl=class extends As{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},Va=class extends Cs{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(i){this.next2(i),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),yl),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},Fg=q(Va,"concatMap"),$g=$a(q(Va,"concatMapTo")),bl=class extends As{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},Ba=class extends Cs{constructor(){super(...arguments),this.inners=new Set}next(i){this.subInner(i,bl),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(i=>i.resetComplete()):this.dispose()}},Hg=q(Ba,"mergeMap"),Gg=$a(q(Ba,"mergeMapTo")),Nl=class extends As{dispose(){this.context.resetNext(),super.dispose()}},Fa=class extends Cs{next(i){this.next=ce,this.subInner(i,Nl)}},Wg=q(Fa,"exhaustMap"),Jg=$a(q(Fa,"exhaustMapTo")),vl=class extends W{constructor(i,e){super(i),this.f=e,this.groups=new Map}next(i){let e=this.f(i),t=this.groups.get(e);typeof t=="undefined"&&(t=et(),t.key=e,this.groups.set(e,t),super.next(t)),t.next(i)}complete(){this.groups.forEach(i=>i.complete()),super.complete()}error(i){this.groups.forEach(e=>e.error(i)),super.error(i)}},jg=q(vl,"groupBy"),Dl=class extends W{constructor(){super(...arguments),this.start=new Date}next(i){this.sink.next({value:i,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},qg=q(Dl,"timeInterval"),Ol=class extends W{constructor(i,e){super(i),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(i){this.buffer.push(i)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},Xg=q(Ol,"bufferTime"),Ml=class extends W{constructor(i,e){super(i),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(i){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:t,data:r}=e;super.next(r),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(t))}},i)}next(i){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:i})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},zg=q(Ml,"delay"),kl=class extends W{constructor(i,e){super(i),this.selector=e}error(i){this.dispose(),this.selector(i)(this.sink)}},Pl=q(kl,"catchError");var Qg=()=>s=>new Promise((i,e)=>{let t;new Lr(s,r=>t=r,e,()=>i(t))}),Yg=()=>s=>{let i;return new ReadableStream({start(e){i=new Lr(s,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){i.dispose()}})},Re=(s=ce,i=ce,e=ce)=>t=>new Lr(t,s,i,e),xl=class extends W{constructor(i,e){super(i),e instanceof Function?this.next=t=>{e(t),i.next(t)}:(e.next&&(this.next=t=>{e.next(t),i.next(t)}),e.complete&&(this.complete=()=>{e.complete(),i.complete()}),e.error&&(this.error=t=>{e.error(t),i.error(t)}))}},Ul=q(xl,"tap"),wl=class extends W{constructor(i,e){super(i),this.timeout=e,this.id=setTimeout(()=>this.error(new Vo(this.timeout)),this.timeout)}next(i){super.next(i),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},Kg=q(wl,"timeout"),Zg=(s=1/0)=>i=>{if(i instanceof It){let e=ee(t=>{let r=s,o=new W(t);o.error=n=>{r-- >0?o.subscribe(i):t.error(n)},o.sourceId=e.id,o.subscribe(i)},"retry",[s]);return e.source=i,Ie.pipe(e),e}else return e=>{let t=s,r=new W(e);r.error=o=>{t-- >0?i(r):e.error(o)},i(r)}};var li=class li extends Dr{constructor(e,t,r){super({userId:t.userId,sdkAppId:e.sdkAppId,mediaType:r,room:e});this.room=e;this.user=t;d(this,"tinyId");d(this,"isRemote",!0);d(this,"jitterBufferDelay",0);d(this,"availableState");d(this,"remotePublishState");d(this,"_triggerCheckDecodeSubject",et(ue(this,li.STATE_SUBSCRIBE)));this.tinyId=t.tinyId,this.availableState=new H(`${t.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new H(`${t.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),de(sl(ue(this,H.STATECHANGED),ue(this.remotePublishState,H.STATECHANGED)),Ho(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),Re(c=>{this.availableState.state!==(c?H.ON:H.OFF)&&(this.availableState.state=c?H.ON:H.OFF),this.updatePlayingState(c)}));let o=de(ue(this.player,le.ERROR),di(c=>c.code===MediaError.MEDIA_ERR_DECODE)),n=de(Fo(5e3),di(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived?!1:this.player.isPlaying||(this.kind===m.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),a=de(ol(o,n),we(ue(this,H.INIT)));de(this._triggerCheckDecodeSubject,di(()=>!this.ignoreDecodeError),xr(a),Re(c=>{this.reportDecodeResult(!1,c)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var t,r;return(((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===li.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===H.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,t){let r=this.kind===m.AUDIO;b[e?"addSuccessEvent":"addFailedEvent"]({key:r?504700:514702}),e||(b.addEnum({key:r?504701:514703,value:fo()}),te.uploadEvent({log:`stat-decode-failed-${this.kind}-${Sr()||bi()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===m.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:t}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?H.ON:H.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};d(li,"STATE_SUBSCRIBE","subscribe"),N([va(5,1)],li.prototype,"waitHasMediaTrack",1),N([pe(H.INIT,li.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),E.emit(I.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),nt(521716,!1)],li.prototype,"subscribe",1),N([pe(li.STATE_SUBSCRIBE,H.INIT,{sync:!0,success(){this.log.info("unsubscribed"),E.emit(I.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],li.prototype,"unsubscribe",1);var ys=li;var xi=class extends ys{constructor(e,t){super(e,t,1);d(this,"volume",0);d(this,"mediaType",1);d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return vr.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}decodeFrame(e){if(!this.manager)return e;let t=e;for(let r of this.manager.decodePipeline)if(r&&(t=r({frame:t,track:this}),!t))return;return t}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isRemotePublished(){return this.user.muteState.audioAvailable}};var tT=[-1,-1,1,-1,-1,1,1,1],iT=[0,0,1,0,0,1,1,1];var tt=class extends H{constructor(e,t){super();this.context=e;d(this,"name");d(this,"input");d(this,"output");d(this,"texture");d(this,"ctx2d",null);d(this,"fbo");d(this,"width",0);d(this,"height",0);d(this,"x",0);d(this,"y",0);d(this,"program");d(this,"vertexShader");d(this,"fragmentShader");d(this,"totalFrames",0);d(this,"dropFrames",0);d(this,"matchInputSize",!0);d(this,"texCoordBuffer");d(this,"positionBuffer");d(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});d(this,"cost",0);d(this,"_canvas",null);d(this,"_image");d(this,"log");if(this.context.on("disconnect",this.close,this),this.name=t.name,this.log=t.logger,this.matchInputSize=t.matchInputSize!==!1,this.width=t.width||e.width,this.height=t.height||e.height,this._image=t.image,e instanceof je){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&lt!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let r=e.ctx;this.texCoordBuffer=this.createBuffer(iT),this.positionBuffer=this.createBuffer(tT),t.createTexture!==!1&&(this.texture=r.createTexture(),this.useTexture(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1)),t.useFbo&&(this.fbo=r.createFramebuffer(),this.useBufferFrame(),this.useTexture(),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.width,this.height,0,r.RGBA,r.UNSIGNED_BYTE,null),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,this.texture,0)),t.useDefaultProgram?this.program=e.defaultProgam:(t.vertexShaderSource||t.fragmentShaderSource)&&(this.vertexShader=t.vertexShaderSource?e.createShader(r.VERTEX_SHADER,t.vertexShaderSource):e.defaultVShader,this.fragmentShader=t.fragmentShaderSource?e.createShader(r.FRAGMENT_SHADER,t.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(r){this.context.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${r.message||r}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let t=this.context.ctx,r=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),r}connect(e,...t){return e.addInput(this,...t),this.output=e,e}addInput(e,...t){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let t=Date.now();if(this.context instanceof De&&this.render(e)||this.context instanceof je&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-t,!0}render2d(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var t;(t=this.output)==null||t.update(e)}disconnect(...e){var t;(t=this.output)==null||t.removeInput(this,...e),delete this.output}removeInput(e,...t){delete this.input}close(){var e,t;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(t=this.input)==null||t.disconnect(),this.context instanceof De){let r=this.context.ctx;r.deleteBuffer(this.texCoordBuffer),r.deleteBuffer(this.positionBuffer),this.fbo&&r.deleteFramebuffer(this.fbo),this.texture&&r.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&r.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&r.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&r.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let t=this.context.ctx;e.forEach((r,o)=>{r&&(t.activeTexture(t.TEXTURE0+o),t.bindTexture(t.TEXTURE_2D,r))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let t=this.context.ctx,r=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW),r}setTexBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.texCoordBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}setPosBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}changeBufferData(e,t){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,e),r.bufferData(r.ARRAY_BUFFER,new Float32Array(t),r.STATIC_DRAW)}setAttributes(...e){let t=this.context.ctx;e.forEach((r,o)=>{t.enableVertexAttribArray(o),t.bindBuffer(t.ARRAY_BUFFER,r),t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0)})}getVertexPoint(e,t){return[e/this.width*2-1,t/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,t){if(!(this.width===e&&this.height===t)){if(this.width=e,this.height=t,this._canvas&&(this._canvas.width=e,this._canvas.height=t),this.texture&&this.fbo){this.useTexture();let r=this.context.ctx;r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e,t,0,r.RGBA,r.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,t)}}draw(e,t){this.setAttributes(e||this.positionBuffer,t||this.texCoordBuffer);let r=this.context.ctx;r.drawArrays(r.TRIANGLE_STRIP,0,4)}draw2d(e,t,r,o,n){return this.ctx2d&&e?(e instanceof ImageData?this.ctx2d.putImageData(e,t,r):(this.ctx2d.drawImage(e,t,r,o,n),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}getInfo(){var h;let{totalFrames:e,x:t,y:r,width:o,height:n,name:a,cost:c}=this,l=Date.now(),u=(e-this.lastInfo.totalFrames)/((l-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:o,height:n,timestamp:l,fps:u,name:a,cost:c},v({parent:(h=this.input)==null?void 0:h.getInfo()},this.lastInfo)}createTexture(e){let t=this.context.ctx,r=t.createTexture();return this.useTextures(r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),r}};N([pe(H.INIT,"connected",{sync:!0})],tt.prototype,"connect",1),N([pe("connected",H.INIT,{ignoreError:!0,sync:!0})],tt.prototype,"disconnect",1),N([pe([],"closed",{sync:!0})],tt.prototype,"close",1);var rT=de(nl(250),Ho(()=>performance.now()),wi());var Sm=s=>i=>{let e=performance.now();de(rT,Pa(t=>t-e<s),Ui(1))(i)};var oT=[0,1,1,1,0,0,1,0],wr=class extends tt{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t));d(this,"_intervalId",0);d(this,"_sequence",0);d(this,"checkGLError",!1);d(this,"checkVisibilityChange");e instanceof je?this.ctx2d=e.ctx||null:e.available&&(t!=null&&t.mirrorUpAndDown)&&this.setTexBuffer(oT)}start(e){this.log.info(`${this.name} start render ${e} fps`),se.clearTask(this._intervalId),this._intervalId=se.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(se.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof De){let r=this.context.ctx.getError();r&&this.context.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${r}`}))}},{fps:this.context.frameRate})}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...t){super.addInput(e,...t),this.start(this.context.frameRate)}update(e=0){if(this._intervalId&&(se.clearTask(this._intervalId),this._intervalId=0,e===1)){this.log.info(`${this.name} use requestVideoFrameCallback`);let t=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",t))};document.addEventListener("visibilitychange",t)}this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),se.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),se.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},bs=class extends wr{constructor(e,t){super(e,t);d(this,"_videoTrack");d(this,"_muteOb");d(this,"_closedOb",ue(this,"closed"));d(this,"_subscription");d(this,"_canvasContainer");Number(Ri)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=ue(this._videoTrack,"mute"),de(ue(this._videoTrack,"ended"),we(this._closedOb),Re(()=>{this.context.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=de(this._muteOb,we(this._closedOb),xr(Sm(5e3)),di(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),Re(()=>{this.context.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,t;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(t=this._canvasContainer)==null||t.remove()}},Ha=class extends bs{render(i){var e;return!!((e=this.input)!=null&&e.requestFrame(i))}};var Ga=class extends bs{constructor(e,t,r){super(e,{name:"smallDestination",logger:r});this.resolution=t}resize(e,t){let r,o=e*t,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${t} small res: ${this.resolution.width}*${this.resolution.height} `),o>n?r=o/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${t} small: ${this.resolution.width} * ${this.resolution.height}`),r=o/(160*120)),super.resize(e/Math.sqrt(r),t/Math.sqrt(r))}};var Go=class extends tt{constructor(e,t){super(e,v({name:"imageSource"},t));d(this,"_lastImage");d(this,"_totalFrames",0);d(this,"_autoResize",!1);d(this,"_canvasRendered");d(this,"_videoCallbackId",0);d(this,"waitingFirstFrame",!0);d(this,"shouldUpdate",!0);this._autoResize=(t==null?void 0:t.autoResize)!==!1,lt===16&&(this._canvasRendered=et(),de(this._canvasRendered,Bo(this._image),Rs(r=>r instanceof HTMLCanvasElement?ue(r,"rendered"):$o()),we(ue(this,"closed")),Re(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){let e=this.image;this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),br()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((t,r)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=r.presentedFrames,this.update(1))}))}_render(e,t){var a;let{width:r,height:o}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.shouldUpdate&&this.tryVideoFrameCallback(),{videoWidth:r,videoHeight:o}=n,!r||!o)return!1;n.width=r,n.height=o}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:r,height:o}=n,n!==this._lastImage)this._lastImage=n;else if(r===this.width&&o===this.height)return!1}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:r,height:o}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:r,displayHeight:o}=n,(a=this._lastImage)==null||a.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===r&&this.height===o&&this.totalFrames){if(t){this.useTexture();let c=this.context.ctx;c.texSubImage2D(c.TEXTURE_2D,0,0,0,c.RGBA,c.UNSIGNED_BYTE,n)}}else{if(t){this.useTexture();let c=this.context.ctx;c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,n)}this.resize(r,o)}return!0}get image(){return this._image}set image(e){var t;(t=this._canvasRendered)==null||t.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},Wo=class extends Go{constructor(e,t,r){super(e,r);this._player=t;this.name="videoPlayerSource",de(ue(this._player,le.PLAYER_STATE_CHANGED),we(ue(this,"closed")),di(({state:o})=>o==="PLAYING"),Re(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},Vi=class extends Wo{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(i,e,t){super(i,new pt({id:t.name,track:e,muted:!0,container:null,objectFit:"contain",log:t.logger}),t),this.name="videoTrackSource",this._player.play()}replaceTrack(i){this.waitingFirstFrame=!0,this._player.setTrack(i),this._player.play()}close(){super.close(),this._player.stop()}};var aT=`
35
34
  // \u9876\u70B9\u7740\u8272\u5668
36
35
  attribute vec4 a_position;
37
36
  attribute vec2 a_texCoord;
@@ -41,7 +40,7 @@ void main() {
41
40
  gl_Position = a_position;
42
41
  v_texCoord = a_texCoord;
43
42
  }
44
- `,YT=`
43
+ `,cT=`
45
44
  // \u7247\u5143\u7740\u8272\u5668
46
45
  precision mediump float;
47
46
  varying vec2 v_texCoord;
@@ -49,43 +48,32 @@ uniform sampler2D u_texture;
49
48
 
50
49
  void main() {
51
50
  gl_FragColor = texture2D(u_texture, v_texCoord);
52
- } `;var Os=class extends fe{constructor(e){super();l(this,"frameRate");l(this,"_canvas");l(this,"log");l(this,"hasAlpha",!1);l(this,"name");l(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,t){this._canvas&&(this._canvas.width=e,this._canvas.height=t)}createVideoTrackSource(e,t){return new kr(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new Ro(this,e)}createVideoImageSource(e,t){return new Zn(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new Kn(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};l(Os,"_ids",0);var ZT={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},yo=class yo extends Os{constructor(){super(...arguments);l(this,"defaultProgam");l(this,"defaultVShader");l(this,"defaultFShader");l(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Os._ids++}`),this.ctx=this._canvas.getContext("webgl2",ZT),!this.ctx)throw new Q({code:H.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,QT),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,YT),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new Q({code:H.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let t="";return e&&(t=e.message,this.error=e,Y.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${t}`?`: ${t}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var t;(t=this.ctx)==null||t.viewport(0,0,e,this.height),super.width=e}set height(e){var t;(t=this.ctx)==null||t.viewport(0,0,this.width,e),super.height=e}setSize(e,t){var r;(r=this.ctx)==null||r.viewport(0,0,e,t),super.setSize(e,t)}createShader(e,t){let r=this.ctx,o=r.createShader(e);return r.shaderSource(o,t),r.compileShader(o),o}createProgram(e,t){let r=this.ctx,o=r.createProgram();return r.attachShader(o,e),r.attachShader(o,t),r.linkProgram(o),r.getProgramParameter(o,r.LINK_STATUS)||this.log.error(r.getProgramInfoLog(o)),o}};l(yo,"UNAVAILABLE","unavailable"),q([qe(fe.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),Y.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),Y.addSuccessEvent({key:512700})}})],yo.prototype,"create",1),q([qe("created",fe.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(yo.UNAVAILABLE,e),this.removeAllListeners()}})],yo.prototype,"destroy",1);var mt=yo,Dt=class extends Os{constructor(){super(...arguments);l(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Os._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new Q({code:H.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(e){let t="";e&&(t=e.message,this.error=e,Y.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${t?`: ${t}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),Y.addSuccessEvent({key:512703})}};q([qe(fe.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),Y.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),Y.addSuccessEvent({key:512701})}})],Dt.prototype,"create",1),q([qe("created",fe.INIT,{ignoreError:!0,sync:!0})],Dt.prototype,"destroy",1);function KT(s){return[15,30,45,60].reduce((e,t)=>Math.abs(t-s)<Math.abs(e-s)?t:e)}var er=class extends Co{constructor(e,t,r=4){super(e,t,r);l(this,"mediaType",4);l(this,"source");l(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",o=>{this.room.emit("first-video-frame",o)})}play(e,t){return(Qe(t==null?void 0:t.canvasRender)?t.canvasRender:Xt===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,t).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new Dt({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let t=new ks(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(t),this.player.setCanvas(e._canvas),Is()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,r=KT(t);if(!De(t)||t<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${t} `);return}if(r===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${r} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${t}, closest: ${r}, current: ${e.frameRate}`),e.frameRate=r}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(a=>a.msg_user_info.str_identifier===this.userId))||{},t=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let r=e.find(a=>a.uint32_video_stream_type===t);return(r==null?void 0:r.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let t of this.manager.decodePipeline)if(t&&(e=t({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},bo=class extends er{constructor(e,t){super(e,t,2);l(this,"mediaType",2);l(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var vo=new Map;x.on(V.JOIN_SUCCESS,({room:s})=>{Ye(s.userId,{eventId:32788})});x.on(V.LEAVE_START,({room:s})=>{Ye(s.userId,{eventId:32789})});x.on(V.LOCAL_TRACK_PUBLISHED,({track:s})=>{if(s.room){let i=32769;s.mediaType===4?i=32768:s.mediaType===2&&(i=32805),Ye(s.room.userId,{eventId:i})}});x.on(V.LOCAL_TRACK_UNPUBLISHED,({track:s})=>{if(s.room){let i=32771;s.mediaType===4?i=32770:s.mediaType===2&&(i=32806),Ye(s.room.userId,{eventId:i})}});x.on(V.TRACK_MUTED,({track:s})=>{s.room&&(s.kind===S.AUDIO?Ye(s.room.userId,{eventId:s.isRemote?32785:32772,remoteUserId:s.isRemote?s.userId:void 0}):Ye(s.room.userId,{eventId:s.isRemote?32784:32773,remoteUserId:s.isRemote?s.userId:void 0}))});x.on(V.TRACK_UNMUTED,({track:s})=>{s.room&&(s.kind===S.AUDIO?Ye(s.room.userId,{eventId:s.isRemote?32787:32774,remoteUserId:s.isRemote?s.userId:void 0}):Ye(s.room.userId,{eventId:s.isRemote?32786:32775,remoteUserId:s.isRemote?s.userId:void 0}))});x.on(V.REMOTE_TRACK_SUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&Ye(s.room.userId,{eventId:32777,remoteUserId:s.userId}),s.mediaType===4&&Ye(s.room.userId,{eventId:32776,remoteUserId:s.userId}),s.mediaType===8&&Ye(s.room.userId,{eventId:32803,remoteUserId:s.userId}))});x.on(V.REMOTE_TRACK_UNSUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&Ye(s.room.userId,{eventId:32779,remoteUserId:s.userId}),s.mediaType===4&&Ye(s.room.userId,{eventId:32778,remoteUserId:s.userId}),s.mediaType===8&&Ye(s.room.userId,{eventId:32804,remoteUserId:s.userId}))});x.on(V.SWITCH_DEVICE_SUCCESS,({track:s})=>{s.room&&Ye(s.room.userId,{eventId:s.kind===S.VIDEO?32780:32781})});x.on(V.LOCAL_TRACK_REPLACED,({track:s})=>{s.room&&Ye(s.room.userId,{eventId:s.kind===S.VIDEO?32782:32783})});x.on(V.SIGNAL_CONNECTION_STATE_CHANGED,({room:s,prevState:i,state:e})=>{let t;switch(e){case"CONNECTED":i==="RECONNECTING"?t=32795:t=32791;break;case"DISCONNECTED":i==="RECONNECTING"?t=32796:t=32790;break;case"RECONNECTING":t=32794;break}t&&Ye(s.userId,{eventId:t})});x.on(V.PEER_CONNECTION_STATE_CHANGED,({room:s,prevState:i,state:e,remoteUserId:t})=>{let r=!!t,o;switch(e){case"CONNECTED":i==="RECONNECTING"?o=r?32801:32798:o=r?32793:32792;break;case"DISCONNECTED":i==="RECONNECTING"&&(o=r?32802:32799);break;case"RECONNECTING":o=r?32800:32797;break}o&&Ye(s.userId,{eventId:o,remoteUserId:t})});x.on(V.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:s,userId:i,remoteUserId:e,codec:t,isHWCodec:r,prevImplementation:o,streamType:n})=>{let a=r?1:0;o||(a=r?3:2);let d=t==="h264"?0:2,c={eventId:4004,param1:a,param2:d,streamType:n||2};e&&(c.remoteUserId=e,c.eventId=4005),Ye(i,c),Y.addEnum({key:e?514701:513701,value:a}),Y.addEnum({key:e?514700:513700,value:d})});x.on(V.LOCAL_TRACK_RECAPTURE,({track:s,error:i})=>{if(s.userId){let e={eventId:2003,param1:0};s.kind===S.AUDIO?(e.streamType=1,i&&(e.param1=2)):(e.streamType=s.streamType==="auxiliary"?7:2,i&&(e.param1=8)),Ye(s.userId,e)}});function Ye(s,i){let e=ne(K({},i),{timestamp:Xo()});vo.has(s)?vo.get(s).push(e):vo.set(s,[e])}function sf(s){if(vo.has(s)){let i=vo.get(s).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return vo.delete(s),i}return[]}var of=gt(Mt(),1);var rc=class extends of.EventEmitter{constructor(e,t,r="userId"){super();this.mySelfId=e;this._log=t;this.key=r;l(this,"userMap",new Map);l(this,"remotePublishedUserMap",new Map)}get hasRobotUser(){return!![...this.remotePublishedUserMap.values()].find(e=>e.isRobot)}getPublishedUser(e){return this.remotePublishedUserMap.get(e)}addUser(e){let t=e[this.key],{userId:r,tinyId:o,role:n}=e;if(this.userMap.has(t))return;let a={userId:r,tinyId:o,role:n===20?"anchor":"audience"};this.userMap.set(t,a),this.emit("1",a)}deleteUser(e,t){let r=this.userMap.get(e);if(!r)return;let o=`peer leave [${e}]`;L(t)||(o+=`:${ll[t]}`),this._log.info(o);let n=this.remotePublishedUserMap.get(e);if(n){let a=n.muteState;n.flag=0,this.emit("5",n.userId),this.deleteRemotePublishedUser(e),this.emit("6",{prevMuteState:a,muteState:n.muteState,flag:0})}this.userMap.delete(e),this.emit("2",r.userId)}setUserList(e){this.userMap.forEach(t=>{e.findIndex(r=>r[this.key]===t[this.key])<0&&this.deleteUser(t[this.key],0)}),e.forEach(t=>{!this.userMap.has(t[this.key])&&t[this.key]!==this.mySelfId&&this.addUser(t)})}addRemotePublishedUser(e){this.remotePublishedUserMap.has(e[this.key])||this.remotePublishedUserMap.set(e[this.key],e)}deleteRemotePublishedUser(e){this.remotePublishedUserMap.has(e)&&this.remotePublishedUserMap.delete(e)}setRemotePublishedUserList(e){this.remotePublishedUserMap.forEach(t=>{let r=t[this.key];if(e.findIndex(o=>o[this.key]===t[this.key])<0){this._log.info(`remote [${r}] unpublish`);let o=t.muteState;t.flag=0,this.emit("5",t.userId),this.deleteRemotePublishedUser(r),this.emit("6",{prevMuteState:o,muteState:t.muteState,flag:0})}}),e.forEach(t=>{var h;let r=t[this.key];if(r===this.mySelfId)return;let{flag:o,userId:n,tinyId:a}=t,d=ur(o,n),c=(h=this.remotePublishedUserMap.get(r))==null?void 0:h.muteState;if(c){let u=this.remotePublishedUserMap.get(r);u&&u.flag!==o&&(u.flag=o,this._log.info(`remote publish updated: ${JSON.stringify(u.muteState)}`),this.emit("6",{prevMuteState:c,muteState:d,flag:o}))}else this._log.info(`remote publish. state: ${JSON.stringify(d)}`),this.addUser({userId:n,tinyId:a,role:20}),this.emit("3",t),this.emit("6",{prevMuteState:ur(0,n),muteState:d,flag:o})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};function uh({timesInSecond:s,maxSizeInSecond:i,getSize:e}){return ve((t,r)=>{let o=new WeakMap;return x.on(V.ROOM_DESTROY,({room:n})=>o.delete(n)),function(...n){let a=o.get(this);if(a||(a={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},o.set(this,a)),a.timestamp===0?a.timestamp=Date.now():Date.now()-a.timestamp>1e3&&(a.timestamp=Date.now(),a.callCountInSecond=0,a.totalSizeInSecond=0),e&&(a.totalSizeInSecond+=e(...n)),a.timestamp!==0&&Date.now()-a.timestamp<1e3&&(a.callCountInSecond>=s||a.totalSizeInSecond>i))throw new Q({code:H.INVALID_OPERATION,message:pe({key:he.CALL_FREQUENCY_LIMIT,data:{isTimes:a.callCountInSecond>=s,isSize:a.totalSizeInSecond>i,name:r,timesInSecond:s,maxSizeInSecond:i}})});a.callCountInSecond++,t.call(this,...n)}})}var eS="2025-05-28 16:09:20",nf=!0,af=function(){var s;if(nf){nf=!1,j.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${wi}/en/index.html`),console.info(`* Changelog: ${wi}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),j.info("TRTC Web SDK Version:",Rt),Si||j.debug("Build Time:",eS);let i=`UA: ${navigator.userAgent}
53
- CPU core: ${navigator.hardwareConcurrency}, GPU: ${Ml()}`,e=navigator.deviceMemory;e&&(i+=`, minRAM: ${e}GB`),j.info(i),j.info(`URL: ${location.href}${((s=self.frameElement)==null?void 0:s.tagName)==="IFRAME"?" in iframe":""}`),An().then(t=>{t&&j.info(_i)})}};var ci={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var me={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},li=(P=>(P[P.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",P[P.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",P[P.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",P[P.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",P[P.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",P[P.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",P[P.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",P[P.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",P[P.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",P[P.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",P[P.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",P[P.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",P[P.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",P[P.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",P[P.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",P[P.INVALID_ROOM_ID_REQUIED=5015]="INVALID_ROOM_ID_REQUIED",P[P.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",P[P.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",P[P.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",P[P.INVALID_OPERATION=5100]="INVALID_OPERATION",P[P.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",P[P.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",P[P.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",P[P.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",P[P.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",P[P.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",P[P.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",P[P.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",P[P.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",P[P.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",P[P.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",P[P.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",P[P.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",P[P.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",P[P.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",P[P.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",P[P.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",P[P.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",P[P.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",P[P.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",P[P.DEVICE_ERROR=5300]="DEVICE_ERROR",P[P.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",P[P.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",P[P.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",P[P.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",P[P.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",P[P.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",P[P.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",P[P.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",P[P.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",P[P.SERVER_ERROR=5400]="SERVER_ERROR",P[P.NEED_TO_BUY=5401]="NEED_TO_BUY",P[P.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",P[P.OPERATION_FAILED=5500]="OPERATION_FAILED",P[P.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",P[P.REJOIN_FAILED=5502]="REJOIN_FAILED",P[P.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",P[P.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",P[P.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",P[P.OPERATION_ABORT=5998]="OPERATION_ABORT",P[P.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",P))(li||{});function cf({code:s,params:i,enableDocLink:e=!1}){let t="",r,o=li[s];try{r=df[o]}catch(n){r=df.UNKNOWN_ERROR}return Fe(r)?t=r(i):Oe(r)&&(t=r),i.fnName&&!t.includes(i.fnName)&&(t[t.length-1]!=="."&&(t+="."),t+=` thrown from ${i.fnName}()`),e&&(t+=" doc:"),t}var df=ne(K({},Tt),{INVALID_PARAMETER({fnName:s}){return`the parameters of the '${s}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o="";return Array.isArray(i.type)?o=i.type.join("|"):o=i.type,`'${r}' must be type of ${o} when calling ${e}(), received type: ${lt(t)}.`},INVALID_PARAMETER_EMPTY({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${o} when calling ${e}(), received type: ${lt(t)}.`},INVALID_PARAMETER_RANGE({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:s,rule:i,fnName:e}){return`'${s||i.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:s,rule:i,value:e}){return`the min value of ${s||i.name} is ${i.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:s,rule:i,value:e}){return`the max value of ${s||i.name} is ${i.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:s,fnName:i}){return`'${s}' is not found in the document object when calling ${i}().`},INVALID_ELEMENT_ID_TYPE({key:s,fnName:i,type:e}){return`the element corresponding to '${s}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`},INVALID_STREAM_ID({key:s}){return`'${s}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:s}){return`'${s}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:s}){return`'${s}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:s}){return`'${s}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_STREAM_TYPE:({fnName:s})=>`'streamType' is required when 'userId' is not '*', calling ${s}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:s}){return`the API '${s}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:s}){return`cannot ${s} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:s,value:i}){return`cannot ${s} because remote user(userId: ${i.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:s,value:i}){return`cannot ${s} because remote user(userId: ${i.userId}) does not publishing ${i.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:s}){return`you are already ${s}(), cannot repeated call '${s}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:s}){return`cannot call '${s}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:s}){return`cannot call '${s}' because the microphone is not turned on.`},INVALID_BUFFER_EMPTY:({key:s})=>`the buffer size of paramerter '${s}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:s})=>`you need to call ${s}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:s}){return`the current browser does not support the capability of the function '${s}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:s}){return`cannot call ${s} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:s,error:i}){return`'${s}' got device exception${i?`, error: ${i.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:s,deviceType:i=ws(s),error:e}){return`NotFoundError, no ${i} detected, please check your device and the configuration on '${s}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:s,deviceType:i=ws(s),error:e}){return`NotAllowedError, you have disabled ${i} access, please allow the current application to use the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:s,deviceType:i=ws(s),error:e}){return`NotReadableError, the ${i} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:s,deviceType:i=ws(s),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:s,deviceType:i=ws(s),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:s,deviceType:i=ws(s),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${i}, and it is recommended to turn on the ${i} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:s,deviceType:i=ws(s),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:s}){return`camera recover capture failed ${(s==null?void 0:s.name)||""}: ${(s==null?void 0:s.originMessage)||(s==null?void 0:s.message)}`},MICROPHONE_RECOVER_FAILED({error:s}){return`microphone recover capture failed ${(s==null?void 0:s.name)||""}: ${(s==null?void 0:s.originMessage)||(s==null?void 0:s.message)}`},OPERATION_FAILED({fnName:s,error:i}){return`'${s}' failed, reason: ${i==null?void 0:i.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:s}){return`an error was caught on trtc.on('${s}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:s,error:i}){return`video context error ${s} ${(i==null?void 0:i.name)||""} ${(i==null?void 0:i.message)||""}`},SERVER_ERROR({fnName:s,error:i}){return`'${s}' got server error: ${i==null?void 0:i.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:s,url:i}){return`You need to buy packages for ${s}. Refer to: ${i}`},ACCOUNT_NO_MONEY:({fnParams:s})=>`your TRTC account run out of credit, please recharge.${s.sdkAppId?` SDKAppId: ${s.sdkAppId}`:""}`,OPERATION_ABORT({fnName:s}){return`'${s}' abort`},UNKNOWN_ERROR({fnName:s,error:i}){return`'${s}' throw unknown exception${i?`, error: ${i.toString()}.`:"."}`}});function ws(s){if(!s)return"camera";let i=s.toLowerCase();return i.includes("screen")?"screen share":i.includes("audio")?"microphone":"camera"}var hh=class s extends Error{constructor({code:e,extraCode:t,message:r="",messageParams:o,fnName:n="",originError:a}){var c;let d;r?d=r:d=cf({code:e===me.SERVER_ERROR?e:t||e,params:K({fnName:n,error:a},o)});super(d);l(this,"name","RtcError");l(this,"code");l(this,"extraCode");l(this,"functionName");l(this,"message");l(this,"handler");l(this,"originError");this.name=li[e],this.code=e,this.extraCode=t,this.functionName=n,this.originError=a,this.message=d,this.extraCode===5302&&((c=this.originError)!=null&&c.message.includes("system"))&&(this.handler=()=>{let h={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},u={startLocalVideo:"webcam",startLocalAudio:"microphone"},m=document.createElement("a");ps?m.href=`ms-settings:privacy-${u[this.functionName]}`:Ti&&(m.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${h[this.functionName]}`),m.href.length>0&&m.click()})}static convertFrom(e,t,r){let o=e;if(e instanceof Q){let{stack:n}=e,a={code:me.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case H.INVALID_PARAMETER:a.code=me.INVALID_PARAMETER,a.message=e.message;break;case H.INVALID_OPERATION:a.code=me.INVALID_OPERATION;break;case H.NOT_SUPPORTED:case H.NOT_SUPPORTED_H264:a.code=me.ENV_NOT_SUPPORTED,e.getCode()===H.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(Tt.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case H.JOIN_ROOM_FAILED:a.messageParams={fnParams:r};case H.SERVER_TIMEOUT:case H.SWITCH_ROLE_FAILED:a.code=me.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case H.API_CALL_ABORTED:a.code=me.OPERATION_ABORT;break;case H.DEVICE_NOT_FOUND:case H.DEVICE_AUTO_RECOVER_FAILED:case H.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=tS(e.name));break;case H.UNKNOWN:break;default:a.code=me.OPERATION_FAILED}o=new s(a),n&&(o.stack+=n.substr(n.indexOf(`
54
- `)))}else{if(e instanceof s)return e;o=new s({code:me.UNKNOWN_ERROR,fnName:t,originError:e})}return o}};function tS(s){let i;switch(s){case"NotFoundError":i=5301;break;case"NotAllowedError":i=5302;break;case"NotReadableError":i=5303;break;case"OverconstrainedError":i=5304;break;case"InvalidStateError":i=5305;break;case"SecurityError":i=5306;break;case"AbortError":i=5307;break;default:i=5300}return i}var ue=hh;var lf={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},uf={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},No={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(s,i,e){if(Oe(s)&&!document.getElementById(s))throw new ue({code:me.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:i}})}},hf={name:"userId",required:!0,type:"string"},mf={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[ci.AUDIO_PROFILE_STANDARD,ci.AUDIO_PROFILE_STANDARD_STEREO,ci.AUDIO_PROFILE_HIGH,ci.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function ea(s,i){if(!s)throw new ue({code:me.INVALID_OPERATION,extraCode:5101,fnName:i})}function pf(s,i,e){if(!s)throw new ue({code:me.INVALID_OPERATION,extraCode:5102,fnName:i,messageParams:{value:e}})}var t0={type:"number",notLessThanZero:!0},iS={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(s,i,e){if(this._room.isJoined)throw new ue({code:me.INVALID_OPERATION,extraCode:5104,fnName:e});if(s.roomId){if(Oe(s.roomId))throw new ue({code:me.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:i}});if(!(/^[1-9]\d*$/.test(String(s.roomId))&&s.roomId<4294967295))throw new ue({code:me.INVALID_PARAMETER,extraCode:5013,fnName:e,messageParams:{key:i}})}else if(s.strRoomId){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(s.strRoomId))throw new ue({code:me.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:i}})}else throw new ue({code:me.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:No,mute:{type:["boolean","string"]},publish:{type:"boolean"},option:lf},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.videoTrack)&&Ir())throw new ue({code:me.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:ne(K({},No),{required:!1}),publish:{type:"boolean"},mute:{type:["boolean","string"]},option:lf}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:mf},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.audioTrack)&&Ir())throw new ue({code:me.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:mf}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:No,publish:{type:"boolean"},option:uf},validate(s,i,e,t,r){var o;if(!((o=s==null?void 0:s.option)!=null&&o.videoTrack)){if(Ir())throw new ue({code:me.ENV_NOT_SUPPORTED,extraCode:5201});if(!Dn())throw new ue({code:me.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:No,publish:{type:"boolean"},option:uf}},muteRemoteAudio:[hf,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[hf,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:No,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(s,i,e){ea(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(pf(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new ue({code:me.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:ne(K({},No),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(s,i,e){ea(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(pf(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new ue({code:me.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(s,i,e){if(s.userId!=="*"&&L(s.streamType))throw new ue({code:me.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(s,i,e){ea(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(s,i,e,t){if(!Mn)throw new ue({code:me.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new ue({code:me.INVALID_OPERATION,fnName:e,extraCode:5108});if(s.byteLength>1e3)throw new ue({code:me.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new ue({code:me.INVALID_PARAMETER,extraCode:5017,messageParams:{key:i},fnName:e});ea(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(s,i,e){if(!s&&!this._room.isMainStreamPublished||s&&!this._room.isAuxStreamPublished)throw new ue({code:me.INVALID_OPERATION,extraCode:5109,messageParams:{key:i},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(s,i,e,t){if(s.byteLength>1e3)throw new ue({code:me.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new ue({code:me.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:i}})}}},validate(s,i,e){if(ea(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new ue({code:me.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:i}})}}},It={TRTC:iS};var kt=class extends Error{};function rS(s,i){let e=ls(s);for(let t=0;t<i.length;t++)Li(e[t],i[t]);return e}function sS(s){this._resolve=Promise.resolve(s)}function oS(s){this._reject=Promise.reject(s)}var Kr=class Kr{constructor(i,e){this.instance=i;this.group=e;l(this,"started",!1);l(this,"ops",[]);l(this,"startSame",()=>!0);l(this,"mergeUpdate",rS);let t=Kr.instances.get(i);t?t.set(e,this):Kr.instances.set(i,new Map([[e,this]]))}static get(i,e){if(!e)return;let t=Kr.instances.get(i);return t&&t.get(e)||new Kr(i,e)}static gets(i,e){let t=Kr.instances.get(i),r=[];return t&&t.forEach((o,n)=>{e.test(n)&&r.push(o)}),r}action(i,e,t){let r=a=>{var d;return i===0?this.started=!0:i===3&&(this.started=!1),this.ops.shift(),(d=this.currentOp)==null||d.action(),a},o=a=>{var d,c;throw this.ops.shift(),i===0&&((d=this.currentOp)==null?void 0:d.type)===2&&this.ops.shift().reject(new kt("start failed")),(c=this.currentOp)==null||c.action(),a},n={type:i,action:()=>e(...n.args).then(r,o),args:t,resolve:sS,reject:oS};try{switch(this.state){case 1:if(i===0)throw new kt("already started");break;case 4:if(i===2)throw new kt("not started");break;default:return this.cacheOp(n)}}catch(a){return Promise.reject(a)}return this.ops.push(n),n.promise=e(...n.args).then(r,o)}cacheOp(i){if(this.ops.length===1)switch(this.state){case 0:case 2:if(i.type===0)throw new kt("already start");break;case 3:switch(i.type){case 2:throw new kt("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new kt("unknown state")}else switch(i.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new kt("keep stop");if(this.ops.slice(1).forEach(r=>r.reject(t)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,i.args),this.lastOp.promise;case 3:throw new kt("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new kt("start not allowed after update");case 0:throw new kt("duplicate start");case 3:if(this.startSame(this.currentOp.args,i.args))throw this.ops.pop().reject(new kt("keep start")),new kt("already start")}}i.promise=new Promise((t,r)=>{i._resolve?i._resolve.then(t):i.resolve=t,i._reject?i._reject.catch(r):i.reject=r});let{action:e}=i;return i.action=()=>e().then(i.resolve,i.reject),this.ops.push(i),i.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};l(Kr,"instances",new WeakMap);var Or=Kr;var sc=new WeakMap,oc=(s,i)=>{if(i instanceof kt){let{stack:e}=i;i=new ue({code:me.OPERATION_ABORT,message:`${s} abort: ${i.message}`,fnName:s}),e&&(i.stack+=e.substr(e.indexOf(`
55
- `)))}throw i};function es(s,i){return ve((e,t)=>function(...r){let o=Or.get(this,typeof s=="string"?s:s.call(this,...r));return o?(i&&(o.startSame=i.bind(this)),o.action(0,e.bind(this),r).catch(oc.bind(null,t))):e.apply(this,r)})}function Ms(s,i){let{merge:e,debounce:t}=i||{};return ve((r,o)=>function(...n){let a=Or.get(this,typeof s=="string"?s:s.call(this,...n));if(!a)return r.apply(this,n);if(e&&(a.mergeUpdate=e.bind(this)),t&&t.isNeedToDebounce.apply(this,n)){let{delay:d,getKey:c}=t;return new Promise((h,u)=>{var g,f;let m=(g=sc.get(this))==null?void 0:g.get(c(...n));if(m){let{timeoutId:T,resolve:C}=m;clearTimeout(T),C()}let p=setTimeout(()=>{if(a.state===3||a.state===4)return h();a.action(2,r.bind(this),n).catch(oc.bind(null,o)).then(h,u)},d);sc.has(this)?(f=sc.get(this))==null||f.set(c(...n),{timeoutId:p,resolve:h}):sc.set(this,new Map([[c(...n),{timeoutId:p,resolve:h}]]))})}return a.action(2,r.bind(this),n).catch(oc.bind(null,o))})}function ts(s){return ve((i,e)=>function(...t){let r=typeof s=="function"?s.call(this,...t):s;if(r instanceof RegExp)return Promise.all(Or.gets(this,r).map(n=>n.action(3,()=>Promise.resolve(),t))).then(()=>i.call(this,...t));let o=Or.get(this,r);return o?o.action(3,i.bind(this),t).catch(oc.bind(null,e)):i.apply(this,t)})}var oe={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame"},ff=new Set([oe.ERROR,oe.AUTOPLAY_FAILED,oe.KICKED_OUT,oe.REMOTE_USER_ENTER,oe.REMOTE_USER_EXIT,oe.REMOTE_AUDIO_AVAILABLE,oe.REMOTE_AUDIO_UNAVAILABLE,oe.REMOTE_VIDEO_AVAILABLE,oe.REMOTE_VIDEO_UNAVAILABLE,oe.CONNECTION_STATE_CHANGED,oe.PUBLISH_STATE_CHANGED,oe.SCREEN_SHARE_STOPPED,oe.DEVICE_CHANGED,oe.FIRST_VIDEO_FRAME]);function is(s){return s==="sub"?"auxiliary":s==="auxiliary"?"sub":"main"}function ta(s){return s===ci.QOS_PREFERENCE_CLEAR?"detail":s===ci.QOS_PREFERENCE_SMOOTH?"motion":""}var ph={};nr(ph,{bytes2ms:()=>bm,convertObjectNumberToInt:()=>cn,copyProperties:()=>ym,deepClone:()=>ls,deepMerge:()=>Li,delay:()=>hr,fibonacci:()=>hs,formatedTime:()=>xm,getConstructorName:()=>an,getContainerFromElement:()=>Mm,getEnv:()=>Cm,getInternalVersion:()=>Om,getLoggerUrl:()=>lr,getMediaStreamTrackInfo:()=>Fa,getMuteStateFromFlag:()=>ur,getNetworkType:()=>hl,getNumNetworkType:()=>us,getReconnectionTimeout:()=>fi,getStringByteLength:()=>dn,getTurnServer:()=>wm,getUint32Version:()=>Va,getValueType:()=>lt,getViewListFromView:()=>Qs,glog:()=>fl,ipv4ToUint32:()=>Xs,isArray:()=>tt,isAudioWorkletSupported:()=>km,isBoolean:()=>Qe,isConstructor:()=>Js,isEmpty:()=>qs,isFunction:()=>Fe,isLangChinese:()=>pi,isMediaStreamTrack:()=>Nm,isNumber:()=>De,isObject:()=>xi,isOverseaSdkAppId:()=>nn,isPlainObject:()=>Ht,isPortrait:()=>Ua,isPromise:()=>Wr,isRemoteTrack:()=>Dm,isString:()=>Oe,isUndefined:()=>L,loadImage:()=>Ys,ms2bytes:()=>vm,ms2samples:()=>pl,normalizeUrl:()=>$a,performanceNow:()=>le,promiseAny:()=>ms,samples2ms:()=>ml,setNetworkType:()=>La,stringify:()=>oi,stringifyIncludeValue:()=>Pa,throttlePromise:()=>Ba});var gh={};nr(gh,{ScheduleRequestType:()=>gf,getAbilityConfig:()=>aS,getScheduleDomain:()=>dc,isNeedToSchedule:()=>nc,scheduleProxy:()=>tr,sendScheduleRequest:()=>_h,setIsNeedToSchedule:()=>yi,setScheduleProxy:()=>ac});var fh=null,nc=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(cr).map(s=>`<link rel="dns-prefetch" href="https://${s}">`).join(`\r
56
- `));function yi(s){Qe(s)&&s!==nc&&(nc=s,j.info(`setIsNeedToSchedule ${s}`))}x.on("28",()=>yi(!0));x.on("63",()=>yi(!0));x.on("84",()=>yi(!0));x.on("201",s=>{s.state==="RECONNECTING"&&yi(!0)});x.on("202",s=>{s.state==="RECONNECTING"&&yi(!0)});function nS(s,i,e){let t={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let r=performance.getEntriesByType("resource"),o=rs(s,"config",S.MAIN),n=rs(s,"config",S.BACKUP);for(let a of r)if(a.startTime>=e&&(a.name===o||a.name===n)&&a.transferSize>0){let d=a.name===o?S.MAIN:S.BACKUP,c=Math.round(a.duration),h=Math.round(a.domainLookupStart-a.startTime),u=a.redirectStart>0?Math.round(a.redirectEnd-a.redirectStart):0,m=a.fetchStart>0?Math.round(a.domainLookupStart-a.fetchStart):0,p=Math.round(a.domainLookupEnd-a.domainLookupStart),g=Math.round(a.requestStart-a.secureConnectionStart),f=Math.round(a.secureConnectionStart-a.connectStart),T=Math.round(a.responseStart-a.requestStart),C=Math.round(a.responseEnd-a.responseStart),b=[p,g,f,T,C];Me.uploadEvent({log:`stat-schedule-net:${c}(${h}(${u}->${m})->${b.join("->")}) ${d}`,userId:i}),t=ne(K({},t),{totalCost:c,local:h,dns:p,tcp:f,tls:g,request:T,response:C});break}}catch(r){j.error("getScheduleDetailCost error",r)}return t}function _h(c){return I(this,arguments,function*({userId:s,sdkAppId:i,useStringRoomId:e,roomId:t,userSig:r,version:o,frameWorkType:n,role:a,latencyLevel:d}){if(!nc&&fh)return{isCached:!0,result:fh};let h={delta:0,count:[1,1],msg:[],detail:[]};try{let u=new FormData;u.append("userId",String(s)),u.append("sdkAppId",String(i)),u.append("isStrGroupId",String(e)),u.append("groupId",String(t)),u.append("sdkVersion",o),u.append("userSig",String(r));let m=yield nd;m!=null&&m.model&&u.append("model",String(m==null?void 0:m.model)),a&&u.append("role",String(a)),d&&u.append("latencyLevel",String(d)),n&&u.append("frameWorkType",String(n));let p=le(),g=yield cS(u,h,i);g.config&&(g.config.loggerDomain&&ns(g.config.loggerDomain),Qe(g.config.scheduleCache)&&yi(!g.config.scheduleCache)),h.delta=le()-p;let f=nS(Number(i),s,p);return fh=g,{isCached:!1,result:g,detailCost:f}}catch(u){let m=tt(u)?u[0]:u,p=De(m.code)?m.code:0,g=`schedule failed${m.message?`: ${m.message}`:""}`,f=new Q({code:H.SCHEDULE_FAILED,extraCode:p,message:pe({key:he.JOIN_ROOM_FAILED,data:{error:g,code:p}})});throw j.error(g,p),f}})}var tr={main:"",backup:""};function ac(s){tt(s)?(tr.main=s[0],tr.backup=s[1]):tr.main=s}var gf=(t=>(t.CONFIG="config",t.TRTC_AUTO_CONF="trtcAutoConf",t.AUDIO_AI_AUTH="audioAiAuth",t))(gf||{});function rs(s,i,e=S.MAIN,t=!1){return`https://${tr[e]||dc(s,e,t)}/api/v1/${i}`}function aS(s,i,e){let t=rs(s,i),r=rs(s,i,S.BACKUP),o=new URLSearchParams(e).toString(),n=fetch(`${t}?${o}`).then(d=>d.json()),a=fetch(`${r}?${o}`).then(d=>d.json());return ms([n,a])}function dc(s,i=S.MAIN,e=!1){let t;return nn(s)?e?t=i===S.MAIN?cr.MAIN_OVERSEA_BACKUP:cr.BACKUP_OVERSEA:t=i===S.MAIN?cr.MAIN_OVERSEA:cr.BACKUP_OVERSEA:t=i===S.MAIN?cr.MAIN:cr.BACKUP,t}function dS(s,i,e){return new Promise((t,r)=>{mr({url:s,body:i,timeout:e.timeout,priority:"high"}).then(o=>{o.data.code===0?t(o.data.data):r({code:o.data.code,message:o.data.msg})}).catch(r)})}var _f=(s,i)=>Ui({retryFunction:dS,settings:{retries:3,timeout:0},onError:i,onRetrying:s});function cS(s,i,e){return new Promise((t,r)=>{let o=null;ms([_f(n=>i.count[0]=n+1,({error:n,retry:a,retriedCount:d,retryFuncArgs:c})=>{i.msg[0]=n.message,o||(d>=1&&(c[0]=rs(e,"config",S.MAIN,!0)),a())})(rs(e,"config",S.MAIN),s,{get timeout(){return hs(2+i.count[0])*1e3}}),_f(n=>i.count[1]=n+1,({error:n,retry:a,retriedCount:d,retryFuncArgs:c})=>{i.msg[1]=n.message,o||(d>=2&&(c[0]=rs(e,"config",S.BACKUP,!0)),a())})(rs(e,"config",S.BACKUP),s,{get timeout(){return hs(2+i.count[1])*1e3}})]).then(n=>{o=n,t(o)}).catch(r)})}var lS=s=>s.startsWith("data:application/octet-stream;base64,"),uS=s=>s.startsWith("file://"),cc=class{constructor(){l(this,"_log");this._log=j.createLogger({id:"fd"})}download(i,e){return I(this,null,function*(){let{type:t="blob"}=e||{};i=$a(i);try{let r=le(),o;if(Fe(fetch)?o=yield this.downloadWithFetch(i,t):o=yield this.downloadWithXHR(i,t),!o||!o.data)throw new Error("data is empty");let n=le()-r;return this._log.info(`downloaded: ${i}, return type: ${t}, cost: ${n}ms`),Y.addSuccessEvent({key:522700,cost:le()-r}),o.data}catch(r){throw this._log.error(`failed to download: ${i}, error: ${r}`),Y.addFailedEvent({key:522700,error:r}),r}})}downloadWithFetch(i,e){return I(this,null,function*(){this._log.info(`download with fetch: ${i}, return type: ${e}`);try{let t=yield fetch(i);if(!t.ok)throw new Error("network response was not ok");let r;return e==="arraybuffer"?r=yield t.arrayBuffer():r=yield t.blob(),{data:r}}catch(t){throw t}})}downloadWithXHR(i,e){return this._log.info(`download with xhr: ${i}, return type: ${e}`),new Promise((t,r)=>{let o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType=e,o.onload=()=>{o.status===200||o.status===0&&o.response?t({data:o.response}):r(new Error("XHR failed"))},o.onerror=r,o.send(null)})}loadWasm(i,e){return I(this,null,function*(){this._log.info(`loadWasm ${i}, importObject: ${JSON.stringify(e)}`);let t=le(),r=null,o=null;if(Fe(WebAssembly.instantiateStreaming)&&!lS(i)&&!uS(i)&&Fe(fetch))try{let n=fetch(i);r=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){o=n}if(!r)try{let n=yield this.download(i,{type:"arraybuffer"});r=(yield WebAssembly.instantiate(n,e)).instance}catch(n){o=n}if(r){let n=le()-t;return this._log.info(`loadedWasm ${i}, cost: ${n}ms`),Y.addSuccessEvent({key:522701,cost:n}),r}throw this._log.error(`failed to loadWasm ${i}, error: ${o}`),Y.addFailedEvent({key:522701,error:o}),o})}};q([Gt({settings:{timeout:0,retries:3},onRetrying(i){this._log.warn(`download retrying: ${i}`)}})],cc.prototype,"download",1);var Ef=new cc;function Tf({TRTC:s,room:i,errorModule:e,assetsPath:t}){return{TRTC:s,room:i,assetsPath:t,fileDownloader:Ef,innerEmitter:x,constants:ul,environment:lo,utils:ph,eventLogger:Me,log:this.room.getLogger(),loggerManager:j,errorModule:e,kvStatManager:Y,rtcDectection:Wi,trtc:this,rx:ch,enums:ql,schedule:gh,clearStarted:(r,o)=>{let n=r.getAlias(),a=Or.instances.get(this);if(a)if(o){let d=a.get(n+o);if(!d)return;d.started=!1}else a.forEach((d,c)=>{c.startsWith(n)&&(d.started=!1)})},startGetPCM:jn,createAudioNode:Hn}}var Sf=(s,i)=>{let{emit:e}=s;return s.emit=(...t)=>{try{return e.apply(s,t)}catch(r){let o=pe({key:he.CATCH_HANDLER_ERROR,data:{name:i,event:t[0]},addDocLink:!1});return j.warn(`${o}
51
+ } `;var Ur=class extends H{constructor(e){super();d(this,"frameRate");d(this,"_canvas");d(this,"log");d(this,"hasAlpha",!1);d(this,"name");d(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,t){this._canvas&&(this._canvas.width=e,this._canvas.height=t)}createVideoTrackSource(e,t){return new Vi(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new bs(this,e)}createVideoImageSource(e,t){return new Go(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new Wo(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};d(Ur,"_ids",0);var dT={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},Ns=class Ns extends Ur{constructor(){super(...arguments);d(this,"defaultProgam");d(this,"defaultVShader");d(this,"defaultFShader");d(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Ur._ids++}`),this.ctx=this._canvas.getContext("webgl2",dT),!this.ctx)throw new y({code:S.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,aT),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,cT),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let t="";return e&&(t=e.message,this.error=e,b.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${t}`?`: ${t}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var t;(t=this.ctx)==null||t.viewport(0,0,e,this.height),super.width=e}set height(e){var t;(t=this.ctx)==null||t.viewport(0,0,this.width,e),super.height=e}setSize(e,t){var r;(r=this.ctx)==null||r.viewport(0,0,e,t),super.setSize(e,t)}createShader(e,t){let r=this.ctx,o=r.createShader(e);return r.shaderSource(o,t),r.compileShader(o),o}createProgram(e,t){let r=this.ctx,o=r.createProgram();return r.attachShader(o,e),r.attachShader(o,t),r.linkProgram(o),r.getProgramParameter(o,r.LINK_STATUS)||this.log.error(r.getProgramInfoLog(o)),o}};d(Ns,"UNAVAILABLE","unavailable"),N([pe(H.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),b.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),b.addSuccessEvent({key:512700})}})],Ns.prototype,"create",1),N([pe("created",H.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(Ns.UNAVAILABLE,e),this.removeAllListeners()}})],Ns.prototype,"destroy",1);var De=Ns,je=class extends Ur{constructor(){super(...arguments);d(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Ur._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new y({code:S.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(e){let t="";e&&(t=e.message,this.error=e,b.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${t?`: ${t}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),b.addSuccessEvent({key:512703})}};N([pe(H.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),b.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),b.addSuccessEvent({key:512701})}})],je.prototype,"create",1),N([pe("created",H.INIT,{ignoreError:!0,sync:!0})],je.prototype,"destroy",1);function lT(s){return[15,30,45,60].reduce((e,t)=>Math.abs(t-s)<Math.abs(e-s)?t:e)}var ui=class extends ys{constructor(e,t,r=4){super(e,t,r);d(this,"mediaType",4);d(this,"source");d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",o=>{this.room.emit("first-video-frame",o)})}play(e,t){return(ge(t==null?void 0:t.canvasRender)?t.canvasRender:lt===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,t).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new je({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let t=new wr(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(t),this.player.setCanvas(e._canvas),br()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,r=lT(t);if(!j(t)||t<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${t} `);return}if(r===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${r} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${t}, closest: ${r}, current: ${e.frameRate}`),e.frameRate=r}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(a=>a.msg_user_info.str_identifier===this.userId))||{},t=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let r=e.find(a=>a.uint32_video_stream_type===t);return(r==null?void 0:r.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let t of this.manager.decodePipeline)if(t&&(e=t({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},vs=class extends ui{constructor(e,t){super(e,t,2);d(this,"mediaType",2);d(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var Ds=new Map;E.on(I.JOIN_SUCCESS,({room:s})=>{Te(s.userId,{eventId:32788})});E.on(I.LEAVE_START,({room:s})=>{Te(s.userId,{eventId:32789})});E.on(I.LOCAL_TRACK_PUBLISHED,({track:s})=>{if(s.room){let i=32769;s.mediaType===4?i=32768:s.mediaType===2&&(i=32805),Te(s.room.userId,{eventId:i})}});E.on(I.LOCAL_TRACK_UNPUBLISHED,({track:s})=>{if(s.room){let i=32771;s.mediaType===4?i=32770:s.mediaType===2&&(i=32806),Te(s.room.userId,{eventId:i})}});E.on(I.TRACK_MUTED,({track:s})=>{s.room&&(s.kind===m.AUDIO?Te(s.room.userId,{eventId:s.isRemote?32785:32772,remoteUserId:s.isRemote?s.userId:void 0}):Te(s.room.userId,{eventId:s.isRemote?32784:32773,remoteUserId:s.isRemote?s.userId:void 0}))});E.on(I.TRACK_UNMUTED,({track:s})=>{s.room&&(s.kind===m.AUDIO?Te(s.room.userId,{eventId:s.isRemote?32787:32774,remoteUserId:s.isRemote?s.userId:void 0}):Te(s.room.userId,{eventId:s.isRemote?32786:32775,remoteUserId:s.isRemote?s.userId:void 0}))});E.on(I.REMOTE_TRACK_SUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&Te(s.room.userId,{eventId:32777,remoteUserId:s.userId}),s.mediaType===4&&Te(s.room.userId,{eventId:32776,remoteUserId:s.userId}),s.mediaType===8&&Te(s.room.userId,{eventId:32803,remoteUserId:s.userId}))});E.on(I.REMOTE_TRACK_UNSUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&Te(s.room.userId,{eventId:32779,remoteUserId:s.userId}),s.mediaType===4&&Te(s.room.userId,{eventId:32778,remoteUserId:s.userId}),s.mediaType===8&&Te(s.room.userId,{eventId:32804,remoteUserId:s.userId}))});E.on(I.SWITCH_DEVICE_SUCCESS,({track:s})=>{s.room&&Te(s.room.userId,{eventId:s.kind===m.VIDEO?32780:32781})});E.on(I.LOCAL_TRACK_REPLACED,({track:s})=>{s.room&&Te(s.room.userId,{eventId:s.kind===m.VIDEO?32782:32783})});E.on(I.SIGNAL_CONNECTION_STATE_CHANGED,({room:s,prevState:i,state:e})=>{let t;switch(e){case"CONNECTED":i==="RECONNECTING"?t=32795:t=32791;break;case"DISCONNECTED":i==="RECONNECTING"?t=32796:t=32790;break;case"RECONNECTING":t=32794;break}t&&Te(s.userId,{eventId:t})});E.on(I.PEER_CONNECTION_STATE_CHANGED,({room:s,prevState:i,state:e,remoteUserId:t})=>{let r=!!t,o;switch(e){case"CONNECTED":i==="RECONNECTING"?o=r?32801:32798:o=r?32793:32792;break;case"DISCONNECTED":i==="RECONNECTING"&&(o=r?32802:32799);break;case"RECONNECTING":o=r?32800:32797;break}o&&Te(s.userId,{eventId:o,remoteUserId:t})});E.on(I.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:s,userId:i,remoteUserId:e,codec:t,isHWCodec:r,prevImplementation:o,streamType:n})=>{let a=r?1:0;o||(a=r?3:2);let c=t==="h264"?0:2,l={eventId:4004,param1:a,param2:c,streamType:n||2};e&&(l.remoteUserId=e,l.eventId=4005),Te(i,l),b.addEnum({key:e?514701:513701,value:a}),b.addEnum({key:e?514700:513700,value:c})});E.on(I.LOCAL_TRACK_RECAPTURE,({track:s,error:i})=>{if(s.userId){let e={eventId:2003,param1:0};s.kind===m.AUDIO?(e.streamType=1,i&&(e.param1=2)):(e.streamType=s.streamType==="auxiliary"?7:2,i&&(e.param1=8)),Te(s.userId,e)}});function Te(s,i){let e=x(v({},i),{timestamp:Hs()});Ds.has(s)?Ds.get(s).push(e):Ds.set(s,[e])}function Im(s){if(Ds.has(s)){let i=Ds.get(s).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return Ds.delete(s),i}return[]}function Am(...s){return Q((i,e)=>function(...t){return uT.call(this,s,t,e,this._name),i.apply(this,t)})}function uT(s,i,e,t){try{if(_e(s))for(let r=0;r<s.length;r++)Wa.call(this,{rule:s[r],value:i[r],key:s[r].name,fnName:e,className:t});else Wa.call(this,{rule:s,value:i[0],key:s.name,fnName:e,className:t})}catch(r){throw R.error(r),r}}function Wa({rule:s,value:i,key:e,fnName:t,className:r}){if(T(i)){if(s.required)throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_PARAMETER_REQUIRED,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(T(s.defaultValue))return;i=s.defaultValue}if(Array.isArray(s.type)){let a=!1;for(let c=0;c<s.type.length;c++)s.type[c]===null&&i===null&&(a=!0),oe(s.type[c])&&i instanceof s.type[c]&&(a=!0),K(s.type[c])&&Ee(i)===s.type[c].toLowerCase()&&(a=!0);if(!a)throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_PARAMETER_TYPE,data:{key:e,rule:{type:s.type.map(c=>gr(c)?Qr(c):K(c)?c:Ee(c))},fnName:t,value:i},link:{className:r,fnName:t}})})}else if(!T(s.type)&&Ee(i)!==s.type)throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_PARAMETER_TYPE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(s.allowEmpty===!1){let a=j(i)&&(i===0||Number.isNaN(i)),c=K(i)&&i.trim()==="";if(a||c)throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_PARAMETER_EMPTY,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})})}if(s.notLessThanZero&&j(i)&&i<0)throw new y({code:S.INVALID_PARAMETER,message:P({key:L.CANNOT_LESS_THAN_ZERO,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(!T(s.min)&&j(i)&&i<s.min)throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_PARAMETER_MIN,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(!T(s.max)&&j(i)&&i>s.max)throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_PARAMETER_MAX,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(K(s.instanceOf)){if(!i||i._name!==s.instanceOf)throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})})}else if(oe(s.instanceOf)&&!(i instanceof s.instanceOf))throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(s.values&&!s.values.includes(i))throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_PARAMETER_RANGE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});let{properties:o}=s;He(o)&&bt(i)&&Object.keys(o).forEach(a=>{Wa.call(this,{rule:o[a],value:i&&i[a],key:`${e}.${a}`,fnName:t,className:r})});let{arrayItem:n}=s;He(n)&&_e(i)&&i.forEach((a,c)=>{Wa.call(this,{rule:n,value:a,key:`${e}[${c}]`,fnName:t,className:r})}),oe(s.validate)&&s.validate.call(this,i,e,t,r,this)}var Cm=Be(Qe(),1);var Ja=class extends Cm.EventEmitter{constructor(e,t,r="userId"){super();this.mySelfId=e;this._log=t;this.key=r;d(this,"userMap",new Map);d(this,"remotePublishedUserMap",new Map)}get hasRobotUser(){return!![...this.remotePublishedUserMap.values()].find(e=>e.isRobot)}getPublishedUser(e){return this.remotePublishedUserMap.get(e)}addUser(e){let t=e[this.key],{userId:r,tinyId:o,role:n}=e;if(this.userMap.has(t))return;let a={userId:r,tinyId:o,role:n===20?"anchor":"audience"};this.userMap.set(t,a),this.emit("1",a)}deleteUser(e,t){let r=this.userMap.get(e);if(!r)return;let o=`peer leave [${e}]`;T(t)||(o+=`:${Vc[t]}`),this._log.info(o);let n=this.remotePublishedUserMap.get(e);if(n){let a=n.muteState;n.flag=0,this.emit("5",n.userId),this.deleteRemotePublishedUser(e),this.emit("6",{prevMuteState:a,muteState:n.muteState,flag:0})}this.userMap.delete(e),this.emit("2",r.userId)}setUserList(e){this.userMap.forEach(t=>{e.findIndex(r=>r[this.key]===t[this.key])<0&&this.deleteUser(t[this.key],0)}),e.forEach(t=>{!this.userMap.has(t[this.key])&&t[this.key]!==this.mySelfId&&this.addUser(t)})}addRemotePublishedUser(e){this.remotePublishedUserMap.has(e[this.key])||this.remotePublishedUserMap.set(e[this.key],e)}deleteRemotePublishedUser(e){this.remotePublishedUserMap.has(e)&&this.remotePublishedUserMap.delete(e)}setRemotePublishedUserList(e){this.remotePublishedUserMap.forEach(t=>{let r=t[this.key];if(e.findIndex(o=>o[this.key]===t[this.key])<0){this._log.info(`remote [${r}] unpublish`);let o=t.muteState;t.flag=0,this.emit("5",t.userId),this.deleteRemotePublishedUser(r),this.emit("6",{prevMuteState:o,muteState:t.muteState,flag:0})}}),e.forEach(t=>{var u;let r=t[this.key];if(r===this.mySelfId)return;let{flag:o,userId:n,tinyId:a}=t,c=Si(o,n),l=(u=this.remotePublishedUserMap.get(r))==null?void 0:u.muteState;if(l){let h=this.remotePublishedUserMap.get(r);h&&h.flag!==o&&(h.flag=o,this._log.info(`remote publish updated: ${JSON.stringify(h.muteState)}`),this.emit("6",{prevMuteState:l,muteState:c,flag:o}))}else this._log.info(`remote publish. state: ${JSON.stringify(c)}`),this.addUser({userId:n,tinyId:a,role:20}),this.emit("3",t),this.emit("6",{prevMuteState:Si(0,n),muteState:c,flag:o})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};function Fl({timesInSecond:s,maxSizeInSecond:i,getSize:e}){return Q((t,r)=>{let o=new WeakMap;return E.on(I.ROOM_DESTROY,({room:n})=>o.delete(n)),function(...n){let a=o.get(this);if(a||(a={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},o.set(this,a)),a.timestamp===0?a.timestamp=Date.now():Date.now()-a.timestamp>1e3&&(a.timestamp=Date.now(),a.callCountInSecond=0,a.totalSizeInSecond=0),e&&(a.totalSizeInSecond+=e(...n)),a.timestamp!==0&&Date.now()-a.timestamp<1e3&&(a.callCountInSecond>=s||a.totalSizeInSecond>i))throw new y({code:S.INVALID_OPERATION,message:P({key:L.CALL_FREQUENCY_LIMIT,data:{isTimes:a.callCountInSecond>=s,isSize:a.totalSizeInSecond>i,name:r,timesInSecond:s,maxSizeInSecond:i}})});a.callCountInSecond++,t.call(this,...n)}})}var hT="2025-05-28 18:17:34",Rm=!0,ym=function(){var s;if(Rm){Rm=!1,R.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Ht}/en/index.html`),console.info(`* Changelog: ${Ht}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),R.info("TRTC Web SDK Version:",Me),Lt||R.debug("Build Time:",hT);let i=`UA: ${navigator.userAgent}
52
+ CPU core: ${navigator.hardwareConcurrency}, GPU: ${ad()}`,e=navigator.deviceMemory;e&&(i+=`, minRAM: ${e}GB`),R.info(i),R.info(`URL: ${location.href}${((s=self.frameElement)==null?void 0:s.tagName)==="IFRAME"?" in iframe":""}`),po().then(t=>{t&&R.info(Dt)})}};var At={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var $={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},Ut=(C=>(C[C.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",C[C.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",C[C.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",C[C.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",C[C.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",C[C.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",C[C.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",C[C.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",C[C.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",C[C.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",C[C.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",C[C.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",C[C.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",C[C.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",C[C.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",C[C.INVALID_ROOM_ID_REQUIED=5015]="INVALID_ROOM_ID_REQUIED",C[C.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",C[C.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",C[C.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",C[C.INVALID_OPERATION=5100]="INVALID_OPERATION",C[C.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",C[C.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",C[C.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",C[C.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",C[C.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",C[C.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",C[C.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",C[C.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",C[C.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",C[C.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",C[C.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",C[C.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",C[C.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",C[C.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",C[C.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",C[C.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",C[C.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",C[C.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",C[C.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",C[C.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",C[C.DEVICE_ERROR=5300]="DEVICE_ERROR",C[C.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",C[C.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",C[C.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",C[C.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",C[C.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",C[C.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",C[C.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",C[C.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",C[C.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",C[C.SERVER_ERROR=5400]="SERVER_ERROR",C[C.NEED_TO_BUY=5401]="NEED_TO_BUY",C[C.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",C[C.OPERATION_FAILED=5500]="OPERATION_FAILED",C[C.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",C[C.REJOIN_FAILED=5502]="REJOIN_FAILED",C[C.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",C[C.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",C[C.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",C[C.OPERATION_ABORT=5998]="OPERATION_ABORT",C[C.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",C))(Ut||{});function Nm({code:s,params:i,enableDocLink:e=!1}){let t="",r,o=Ut[s];try{r=bm[o]}catch(n){r=bm.UNKNOWN_ERROR}return oe(r)?t=r(i):K(r)&&(t=r),i.fnName&&!t.includes(i.fnName)&&(t[t.length-1]!=="."&&(t+="."),t+=` thrown from ${i.fnName}()`),e&&(t+=" doc:"),t}var bm=x(v({},xe),{INVALID_PARAMETER({fnName:s}){return`the parameters of the '${s}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o="";return Array.isArray(i.type)?o=i.type.join("|"):o=i.type,`'${r}' must be type of ${o} when calling ${e}(), received type: ${Ee(t)}.`},INVALID_PARAMETER_EMPTY({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${o} when calling ${e}(), received type: ${Ee(t)}.`},INVALID_PARAMETER_RANGE({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:s,rule:i,fnName:e}){return`'${s||i.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:s,rule:i,value:e}){return`the min value of ${s||i.name} is ${i.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:s,rule:i,value:e}){return`the max value of ${s||i.name} is ${i.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:s,fnName:i}){return`'${s}' is not found in the document object when calling ${i}().`},INVALID_ELEMENT_ID_TYPE({key:s,fnName:i,type:e}){return`the element corresponding to '${s}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`},INVALID_STREAM_ID({key:s}){return`'${s}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:s}){return`'${s}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:s}){return`'${s}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:s}){return`'${s}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_STREAM_TYPE:({fnName:s})=>`'streamType' is required when 'userId' is not '*', calling ${s}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:s}){return`the API '${s}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:s}){return`cannot ${s} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:s,value:i}){return`cannot ${s} because remote user(userId: ${i.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:s,value:i}){return`cannot ${s} because remote user(userId: ${i.userId}) does not publishing ${i.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:s}){return`you are already ${s}(), cannot repeated call '${s}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:s}){return`cannot call '${s}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:s}){return`cannot call '${s}' because the microphone is not turned on.`},INVALID_BUFFER_EMPTY:({key:s})=>`the buffer size of paramerter '${s}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:s})=>`you need to call ${s}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:s}){return`the current browser does not support the capability of the function '${s}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:s}){return`cannot call ${s} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:s,error:i}){return`'${s}' got device exception${i?`, error: ${i.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:s,deviceType:i=Vr(s),error:e}){return`NotFoundError, no ${i} detected, please check your device and the configuration on '${s}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:s,deviceType:i=Vr(s),error:e}){return`NotAllowedError, you have disabled ${i} access, please allow the current application to use the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:s,deviceType:i=Vr(s),error:e}){return`NotReadableError, the ${i} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:s,deviceType:i=Vr(s),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:s,deviceType:i=Vr(s),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:s,deviceType:i=Vr(s),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${i}, and it is recommended to turn on the ${i} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:s,deviceType:i=Vr(s),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:s}){return`camera recover capture failed ${(s==null?void 0:s.name)||""}: ${(s==null?void 0:s.originMessage)||(s==null?void 0:s.message)}`},MICROPHONE_RECOVER_FAILED({error:s}){return`microphone recover capture failed ${(s==null?void 0:s.name)||""}: ${(s==null?void 0:s.originMessage)||(s==null?void 0:s.message)}`},OPERATION_FAILED({fnName:s,error:i}){return`'${s}' failed, reason: ${i==null?void 0:i.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:s}){return`an error was caught on trtc.on('${s}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:s,error:i}){return`video context error ${s} ${(i==null?void 0:i.name)||""} ${(i==null?void 0:i.message)||""}`},SERVER_ERROR({fnName:s,error:i}){return`'${s}' got server error: ${i==null?void 0:i.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:s,url:i}){return`You need to buy packages for ${s}. Refer to: ${i}`},ACCOUNT_NO_MONEY:({fnParams:s})=>`your TRTC account run out of credit, please recharge.${s.sdkAppId?` SDKAppId: ${s.sdkAppId}`:""}`,OPERATION_ABORT({fnName:s}){return`'${s}' abort`},UNKNOWN_ERROR({fnName:s,error:i}){return`'${s}' throw unknown exception${i?`, error: ${i.toString()}.`:"."}`}});function Vr(s){if(!s)return"camera";let i=s.toLowerCase();return i.includes("screen")?"screen share":i.includes("audio")?"microphone":"camera"}var $l=class s extends Error{constructor({code:e,extraCode:t,message:r="",messageParams:o,fnName:n="",originError:a}){var l;let c;r?c=r:c=Nm({code:e===$.SERVER_ERROR?e:t||e,params:v({fnName:n,error:a},o)});super(c);d(this,"name","RtcError");d(this,"code");d(this,"extraCode");d(this,"functionName");d(this,"message");d(this,"handler");d(this,"originError");this.name=Ut[e],this.code=e,this.extraCode=t,this.functionName=n,this.originError=a,this.message=c,this.extraCode===5302&&((l=this.originError)!=null&&l.message.includes("system"))&&(this.handler=()=>{let u={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},h={startLocalVideo:"webcam",startLocalAudio:"microphone"},f=document.createElement("a");Er?f.href=`ms-settings:privacy-${h[this.functionName]}`:kt&&(f.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${u[this.functionName]}`),f.href.length>0&&f.click()})}static convertFrom(e,t,r){let o=e;if(e instanceof y){let{stack:n}=e,a={code:$.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case S.INVALID_PARAMETER:a.code=$.INVALID_PARAMETER,a.message=e.message;break;case S.INVALID_OPERATION:a.code=$.INVALID_OPERATION;break;case S.NOT_SUPPORTED:case S.NOT_SUPPORTED_H264:a.code=$.ENV_NOT_SUPPORTED,e.getCode()===S.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(xe.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case S.JOIN_ROOM_FAILED:a.messageParams={fnParams:r};case S.SERVER_TIMEOUT:case S.SWITCH_ROLE_FAILED:a.code=$.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case S.API_CALL_ABORTED:a.code=$.OPERATION_ABORT;break;case S.DEVICE_NOT_FOUND:case S.DEVICE_AUTO_RECOVER_FAILED:case S.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=mT(e.name));break;case S.UNKNOWN:break;default:a.code=$.OPERATION_FAILED}o=new s(a),n&&(o.stack+=n.substr(n.indexOf(`
53
+ `)))}else{if(e instanceof s)return e;o=new s({code:$.UNKNOWN_ERROR,fnName:t,originError:e})}return o}};function mT(s){let i;switch(s){case"NotFoundError":i=5301;break;case"NotAllowedError":i=5302;break;case"NotReadableError":i=5303;break;case"OverconstrainedError":i=5304;break;case"InvalidStateError":i=5305;break;case"SecurityError":i=5306;break;case"AbortError":i=5307;break;default:i=5300}return i}var B=$l;var vm={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},Dm={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},Os={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(s,i,e){if(K(s)&&!document.getElementById(s))throw new B({code:$.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:i}})}},Om={name:"userId",required:!0,type:"string"},Mm={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[At.AUDIO_PROFILE_STANDARD,At.AUDIO_PROFILE_STANDARD_STEREO,At.AUDIO_PROFILE_HIGH,At.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function Jo(s,i){if(!s)throw new B({code:$.INVALID_OPERATION,extraCode:5101,fnName:i})}function km(s,i,e){if(!s)throw new B({code:$.INVALID_OPERATION,extraCode:5102,fnName:i,messageParams:{value:e}})}var nO={type:"number",notLessThanZero:!0},pT={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(s,i,e){if(this._room.isJoined)throw new B({code:$.INVALID_OPERATION,extraCode:5104,fnName:e});if(s.roomId){if(K(s.roomId))throw new B({code:$.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:i}});if(!(/^[1-9]\d*$/.test(String(s.roomId))&&s.roomId<4294967295))throw new B({code:$.INVALID_PARAMETER,extraCode:5013,fnName:e,messageParams:{key:i}})}else if(s.strRoomId){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(s.strRoomId))throw new B({code:$.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:i}})}else throw new B({code:$.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:Os,mute:{type:["boolean","string"]},publish:{type:"boolean"},option:vm},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.videoTrack)&&Di())throw new B({code:$.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:x(v({},Os),{required:!1}),publish:{type:"boolean"},mute:{type:["boolean","string"]},option:vm}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:Mm},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.audioTrack)&&Di())throw new B({code:$.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:Mm}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:Os,publish:{type:"boolean"},option:Dm},validate(s,i,e,t,r){var o;if(!((o=s==null?void 0:s.option)!=null&&o.videoTrack)){if(Di())throw new B({code:$.ENV_NOT_SUPPORTED,extraCode:5201});if(!Io())throw new B({code:$.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:Os,publish:{type:"boolean"},option:Dm}},muteRemoteAudio:[Om,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[Om,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:Os,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(s,i,e){Jo(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(km(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new B({code:$.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:x(v({},Os),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(s,i,e){Jo(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(km(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new B({code:$.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(s,i,e){if(s.userId!=="*"&&T(s.streamType))throw new B({code:$.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(s,i,e){Jo(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(s,i,e,t){if(!yo)throw new B({code:$.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new B({code:$.INVALID_OPERATION,fnName:e,extraCode:5108});if(s.byteLength>1e3)throw new B({code:$.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new B({code:$.INVALID_PARAMETER,extraCode:5017,messageParams:{key:i},fnName:e});Jo(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(s,i,e){if(!s&&!this._room.isMainStreamPublished||s&&!this._room.isAuxStreamPublished)throw new B({code:$.INVALID_OPERATION,extraCode:5109,messageParams:{key:i},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(s,i,e,t){if(s.byteLength>1e3)throw new B({code:$.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new B({code:$.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:i}})}}},validate(s,i,e){if(Jo(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new B({code:$.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:i}})}}},Ue={TRTC:pT};var qe=class extends Error{};function fT(s,i){let e=pr(s);for(let t=0;t<i.length;t++)Wt(e[t],i[t]);return e}function _T(s){this._resolve=Promise.resolve(s)}function gT(s){this._reject=Promise.reject(s)}var rr=class rr{constructor(i,e){this.instance=i;this.group=e;d(this,"started",!1);d(this,"ops",[]);d(this,"startSame",()=>!0);d(this,"mergeUpdate",fT);let t=rr.instances.get(i);t?t.set(e,this):rr.instances.set(i,new Map([[e,this]]))}static get(i,e){if(!e)return;let t=rr.instances.get(i);return t&&t.get(e)||new rr(i,e)}static gets(i,e){let t=rr.instances.get(i),r=[];return t&&t.forEach((o,n)=>{e.test(n)&&r.push(o)}),r}action(i,e,t){let r=a=>{var c;return i===0?this.started=!0:i===3&&(this.started=!1),this.ops.shift(),(c=this.currentOp)==null||c.action(),a},o=a=>{var c,l;throw this.ops.shift(),i===0&&((c=this.currentOp)==null?void 0:c.type)===2&&this.ops.shift().reject(new qe("start failed")),(l=this.currentOp)==null||l.action(),a},n={type:i,action:()=>e(...n.args).then(r,o),args:t,resolve:_T,reject:gT};try{switch(this.state){case 1:if(i===0)throw new qe("already started");break;case 4:if(i===2)throw new qe("not started");break;default:return this.cacheOp(n)}}catch(a){return Promise.reject(a)}return this.ops.push(n),n.promise=e(...n.args).then(r,o)}cacheOp(i){if(this.ops.length===1)switch(this.state){case 0:case 2:if(i.type===0)throw new qe("already start");break;case 3:switch(i.type){case 2:throw new qe("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new qe("unknown state")}else switch(i.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new qe("keep stop");if(this.ops.slice(1).forEach(r=>r.reject(t)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,i.args),this.lastOp.promise;case 3:throw new qe("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new qe("start not allowed after update");case 0:throw new qe("duplicate start");case 3:if(this.startSame(this.currentOp.args,i.args))throw this.ops.pop().reject(new qe("keep start")),new qe("already start")}}i.promise=new Promise((t,r)=>{i._resolve?i._resolve.then(t):i.resolve=t,i._reject?i._reject.catch(r):i.reject=r});let{action:e}=i;return i.action=()=>e().then(i.resolve,i.reject),this.ops.push(i),i.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};d(rr,"instances",new WeakMap);var Bi=rr;var ja=new WeakMap,qa=(s,i)=>{if(i instanceof qe){let{stack:e}=i;i=new B({code:$.OPERATION_ABORT,message:`${s} abort: ${i.message}`,fnName:s}),e&&(i.stack+=e.substr(e.indexOf(`
54
+ `)))}throw i};function sr(s,i){return Q((e,t)=>function(...r){let o=Bi.get(this,typeof s=="string"?s:s.call(this,...r));return o?(i&&(o.startSame=i.bind(this)),o.action(0,e.bind(this),r).catch(qa.bind(null,t))):e.apply(this,r)})}function Br(s,i){let{merge:e,debounce:t}=i||{};return Q((r,o)=>function(...n){let a=Bi.get(this,typeof s=="string"?s:s.call(this,...n));if(!a)return r.apply(this,n);if(e&&(a.mergeUpdate=e.bind(this)),t&&t.isNeedToDebounce.apply(this,n)){let{delay:c,getKey:l}=t;return new Promise((u,h)=>{var D,g;let f=(D=ja.get(this))==null?void 0:D.get(l(...n));if(f){let{timeoutId:A,resolve:M}=f;clearTimeout(A),M()}let _=setTimeout(()=>{if(a.state===3||a.state===4)return u();a.action(2,r.bind(this),n).catch(qa.bind(null,o)).then(u,h)},c);ja.has(this)?(g=ja.get(this))==null||g.set(l(...n),{timeoutId:_,resolve:u}):ja.set(this,new Map([[l(...n),{timeoutId:_,resolve:u}]]))})}return a.action(2,r.bind(this),n).catch(qa.bind(null,o))})}function or(s){return Q((i,e)=>function(...t){let r=typeof s=="function"?s.call(this,...t):s;if(r instanceof RegExp)return Promise.all(Bi.gets(this,r).map(n=>n.action(3,()=>Promise.resolve(),t))).then(()=>i.call(this,...t));let o=Bi.get(this,r);return o?o.action(3,i.bind(this),t).catch(qa.bind(null,e)):i.apply(this,t)})}var k={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame"},Lm=new Set([k.ERROR,k.AUTOPLAY_FAILED,k.KICKED_OUT,k.REMOTE_USER_ENTER,k.REMOTE_USER_EXIT,k.REMOTE_AUDIO_AVAILABLE,k.REMOTE_AUDIO_UNAVAILABLE,k.REMOTE_VIDEO_AVAILABLE,k.REMOTE_VIDEO_UNAVAILABLE,k.CONNECTION_STATE_CHANGED,k.PUBLISH_STATE_CHANGED,k.SCREEN_SHARE_STOPPED,k.DEVICE_CHANGED,k.FIRST_VIDEO_FRAME]);function nr(s){return s==="sub"?"auxiliary":s==="auxiliary"?"sub":"main"}function jo(s){return s===At.QOS_PREFERENCE_CLEAR?"detail":s===At.QOS_PREFERENCE_SMOOTH?"motion":""}var Gl={};fi(Gl,{bytes2ms:()=>Wu,convertObjectNumberToInt:()=>eo,copyProperties:()=>Gu,deepClone:()=>pr,deepMerge:()=>Wt,delay:()=>Ii,fibonacci:()=>_r,formatedTime:()=>Ku,getConstructorName:()=>Qr,getContainerFromElement:()=>Yu,getEnv:()=>$u,getInternalVersion:()=>zu,getLoggerUrl:()=>Ei,getMediaStreamTrackInfo:()=>Dn,getMuteStateFromFlag:()=>Si,getNetworkType:()=>Fc,getNumNetworkType:()=>fr,getReconnectionTimeout:()=>vt,getStringByteLength:()=>Zs,getTurnServer:()=>Qu,getUint32Version:()=>bn,getValueType:()=>Ee,getViewListFromView:()=>Zr,glog:()=>Gc,ipv4ToUint32:()=>Kr,isArray:()=>_e,isAudioWorkletSupported:()=>Xu,isBoolean:()=>ge,isConstructor:()=>gr,isEmpty:()=>Yr,isFunction:()=>oe,isLangChinese:()=>Nt,isMediaStreamTrack:()=>ju,isNumber:()=>j,isObject:()=>bt,isOverseaSdkAppId:()=>Ks,isPlainObject:()=>He,isPortrait:()=>yn,isPromise:()=>Xi,isRemoteTrack:()=>qu,isString:()=>K,isUndefined:()=>T,loadImage:()=>es,ms2bytes:()=>Ju,ms2samples:()=>Hc,normalizeUrl:()=>vn,performanceNow:()=>w,promiseAny:()=>Tr,samples2ms:()=>$c,setNetworkType:()=>Cn,stringify:()=>Tt,stringifyIncludeValue:()=>Rn,throttlePromise:()=>Nn});var jl={};fi(jl,{ScheduleRequestType:()=>xm,getAbilityConfig:()=>ET,getScheduleDomain:()=>wm,isNeedToSchedule:()=>Xa,scheduleProxy:()=>cr,sendScheduleRequest:()=>Jl,setIsNeedToSchedule:()=>Vt,setScheduleProxy:()=>za});var Wl=null,Xa=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(Ti).map(s=>`<link rel="dns-prefetch" href="https://${s}">`).join(`\r
55
+ `));function Vt(s){ge(s)&&s!==Xa&&(Xa=s,R.info(`setIsNeedToSchedule ${s}`))}E.on("28",()=>Vt(!0));E.on("63",()=>Vt(!0));E.on("84",()=>Vt(!0));E.on("201",s=>{s.state==="RECONNECTING"&&Vt(!0)});E.on("202",s=>{s.state==="RECONNECTING"&&Vt(!0)});function TT(s,i,e){let t={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let r=performance.getEntriesByType("resource"),o=ar(s,"config",m.MAIN),n=ar(s,"config",m.BACKUP);for(let a of r)if(a.startTime>=e&&(a.name===o||a.name===n)&&a.transferSize>0){let c=a.name===o?m.MAIN:m.BACKUP,l=Math.round(a.duration),u=Math.round(a.domainLookupStart-a.startTime),h=a.redirectStart>0?Math.round(a.redirectEnd-a.redirectStart):0,f=a.fetchStart>0?Math.round(a.domainLookupStart-a.fetchStart):0,_=Math.round(a.domainLookupEnd-a.domainLookupStart),D=Math.round(a.requestStart-a.secureConnectionStart),g=Math.round(a.secureConnectionStart-a.connectStart),A=Math.round(a.responseStart-a.requestStart),M=Math.round(a.responseEnd-a.responseStart),ie=[_,D,g,A,M];te.uploadEvent({log:`stat-schedule-net:${l}(${u}(${h}->${f})->${ie.join("->")}) ${c}`,userId:i}),t=x(v({},t),{totalCost:l,local:u,dns:_,tcp:g,tls:D,request:A,response:M});break}}catch(r){R.error("getScheduleDetailCost error",r)}return t}function Jl(l){return p(this,arguments,function*({userId:s,sdkAppId:i,useStringRoomId:e,roomId:t,userSig:r,version:o,frameWorkType:n,role:a,latencyLevel:c}){if(!Xa&&Wl)return{isCached:!0,result:Wl};let u={delta:0,count:[1,1],msg:[],detail:[]};try{let h=new FormData;h.append("userId",String(s)),h.append("sdkAppId",String(i)),h.append("isStrGroupId",String(e)),h.append("groupId",String(t)),h.append("sdkVersion",o),h.append("userSig",String(r)),a&&h.append("role",String(a)),c&&h.append("latencyLevel",String(c)),n&&h.append("frameWorkType",String(n));let f=w(),_=yield IT(h,u,i);_.config&&(_.config.loggerDomain&&dr(_.config.loggerDomain),ge(_.config.scheduleCache)&&Vt(!_.config.scheduleCache)),u.delta=w()-f;let D=TT(Number(i),s,f);return Wl=_,{isCached:!1,result:_,detailCost:D}}catch(h){let f=_e(h)?h[0]:h,_=j(f.code)?f.code:0,D=`schedule failed${f.message?`: ${f.message}`:""}`,g=new y({code:S.SCHEDULE_FAILED,extraCode:_,message:P({key:L.JOIN_ROOM_FAILED,data:{error:D,code:_}})});throw R.error(D,_),g}})}var cr={main:"",backup:""};function za(s){_e(s)?(cr.main=s[0],cr.backup=s[1]):cr.main=s}var xm=(t=>(t.CONFIG="config",t.TRTC_AUTO_CONF="trtcAutoConf",t.AUDIO_AI_AUTH="audioAiAuth",t))(xm||{});function ar(s,i,e=m.MAIN,t=!1){return`https://${cr[e]||wm(s,e,t)}/api/v1/${i}`}function ET(s,i,e){let t=ar(s,i),r=ar(s,i,m.BACKUP),o=new URLSearchParams(e).toString(),n=fetch(`${t}?${o}`).then(c=>c.json()),a=fetch(`${r}?${o}`).then(c=>c.json());return Tr([n,a])}function wm(s,i=m.MAIN,e=!1){let t;return Ks(s)?e?t=i===m.MAIN?Ti.MAIN_OVERSEA_BACKUP:Ti.BACKUP_OVERSEA:t=i===m.MAIN?Ti.MAIN_OVERSEA:Ti.BACKUP_OVERSEA:t=i===m.MAIN?Ti.MAIN:Ti.BACKUP,t}function ST(s,i,e){return new Promise((t,r)=>{Ai({url:s,body:i,timeout:e.timeout,priority:"high"}).then(o=>{o.data.code===0?t(o.data.data):r({code:o.data.code,message:o.data.msg})}).catch(r)})}var Pm=(s,i)=>jt({retryFunction:ST,settings:{retries:3,timeout:0},onError:i,onRetrying:s});function IT(s,i,e){return new Promise((t,r)=>{let o=null;Tr([Pm(n=>i.count[0]=n+1,({error:n,retry:a,retriedCount:c,retryFuncArgs:l})=>{i.msg[0]=n.message,o||(c>=1&&(l[0]=ar(e,"config",m.MAIN,!0)),a())})(ar(e,"config",m.MAIN),s,{get timeout(){return _r(2+i.count[0])*1e3}}),Pm(n=>i.count[1]=n+1,({error:n,retry:a,retriedCount:c,retryFuncArgs:l})=>{i.msg[1]=n.message,o||(c>=2&&(l[0]=ar(e,"config",m.BACKUP,!0)),a())})(ar(e,"config",m.BACKUP),s,{get timeout(){return _r(2+i.count[1])*1e3}})]).then(n=>{o=n,t(o)}).catch(r)})}var AT=s=>s.startsWith("data:application/octet-stream;base64,"),CT=s=>s.startsWith("file://"),qo=class{constructor(){d(this,"_log");this._log=R.createLogger({id:"fd"})}download(i,e){return p(this,null,function*(){let{type:t="blob"}=e||{};i=vn(i);try{let r=w(),o;if(oe(fetch)?o=yield this.downloadWithFetch(i,t):o=yield this.downloadWithXHR(i,t),!o||!o.data)throw new Error("data is empty");let n=w()-r;return this._log.info(`downloaded: ${i}, return type: ${t}, cost: ${n}ms`),b.addSuccessEvent({key:522700,cost:w()-r}),o.data}catch(r){throw this._log.error(`failed to download: ${i}, error: ${r}`),b.addFailedEvent({key:522700,error:r}),r}})}downloadWithFetch(i,e){return p(this,null,function*(){this._log.info(`download with fetch: ${i}, return type: ${e}`);try{let t=yield fetch(i);if(!t.ok)throw new Error("network response was not ok");let r;return e==="arraybuffer"?r=yield t.arrayBuffer():r=yield t.blob(),{data:r}}catch(t){throw t}})}downloadWithXHR(i,e){return this._log.info(`download with xhr: ${i}, return type: ${e}`),new Promise((t,r)=>{let o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType=e,o.onload=()=>{o.status===200||o.status===0&&o.response?t({data:o.response}):r(new Error("XHR failed"))},o.onerror=r,o.send(null)})}loadWasm(i,e){return p(this,null,function*(){this._log.info(`loadWasm ${i}, importObject: ${JSON.stringify(e)}`);let t=w(),r=null,o=null;if(oe(WebAssembly.instantiateStreaming)&&!AT(i)&&!CT(i)&&oe(fetch))try{let n=fetch(i);r=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){o=n}if(!r)try{let n=yield this.download(i,{type:"arraybuffer"});r=(yield WebAssembly.instantiate(n,e)).instance}catch(n){o=n}if(r){let n=w()-t;return this._log.info(`loadedWasm ${i}, cost: ${n}ms`),b.addSuccessEvent({key:522701,cost:n}),r}throw this._log.error(`failed to loadWasm ${i}, error: ${o}`),b.addFailedEvent({key:522701,error:o}),o})}loadScript(i){this._log.info(`loadScript ${i}`);let e=w();return new Promise((t,r)=>{let o=document.createElement("script");o.type="text/javascript",o.onload=()=>{this._log.info(`loadedScript ${i}, cost: ${w()-e}ms`),b.addSuccessEvent({key:522702,cost:w()-e,split:1e3}),t(o)},o.onerror=n=>{this._log.error(`failed to loadScript ${i}, error: ${n}`),b.addFailedEvent({key:522702}),r(n)},o.crossOrigin="anonymous",o.src=i,document.head.append?document.head.append(o):document.getElementsByTagName("head")[0].appendChild(o)})}};N([mt({settings:{timeout:0,retries:3},onRetrying(i){this._log.warn(`download retrying: ${i}`)}})],qo.prototype,"download",1),N([mt({settings:{timeout:3e3,retries:3},onRetrying(i){this._log.warn(`loadScript retrying: ${i}`)}})],qo.prototype,"loadScript",1);var Um=new qo;function Vm({TRTC:s,room:i,errorModule:e,assetsPath:t}){return{TRTC:s,room:i,assetsPath:t,fileDownloader:Um,innerEmitter:E,constants:Bc,environment:hs,utils:Gl,eventLogger:te,log:this.room.getLogger(),loggerManager:R,errorModule:e,kvStatManager:b,rtcDectection:ti,trtc:this,rx:Vl,enums:Ad,schedule:jl,clearStarted:(r,o)=>{let n=r.getAlias(),a=Bi.instances.get(this);if(a)if(o){let c=a.get(n+o);if(!c)return;c.started=!1}else a.forEach((c,l)=>{l.startsWith(n)&&(c.started=!1)})},startGetPCM:Uo,createAudioNode:Xd}}var Bm=(s,i)=>{let{emit:e}=s;return s.emit=(...t)=>{try{return e.apply(s,t)}catch(r){let o=P({key:L.CATCH_HANDLER_ERROR,data:{name:i,event:t[0]},addDocLink:!1});return R.warn(`${o}
57
56
 
58
- ${r.stack}`),!1}},s};var Do=new WeakMap;function If(s){let i=Do.get(s);i&&(i.forEach(e=>clearTimeout(e)),Do.delete(s))}function ia(s,i){return ve((e,t)=>function(...r){let o=Do.get(this);o||(o=new Map,Do.set(this,o));let n=i(...r),a=o.get(n);if(!a||a<=0){e.apply(this,r);let d=setTimeout(()=>{var c;(c=Do.get(this))==null||c.delete(n)},s);o.set(n,d)}else{clearTimeout(a);let d=window.setTimeout(()=>{var c;e.apply(this,r),(c=Do.get(this))==null||c.delete(n)},s);o.set(n,d)}})}var Af="5.10.2-beta.7";function Ot(...s){return ve((i,e)=>function(...t){try{uc.call(this,s,t,e,this._name)}catch(r){return Promise.reject(r)}return i.apply(this,t)})}function Eh(...s){return ve((i,e)=>function(...t){try{uc.call(this,s,t,e,this._name)}catch(r){throw r}return i.apply(this,t)})}function uc(s,i,e,t){if(tt(s))for(let r=0;r<s.length;r++)lc.call(this,{rule:s[r],value:i[r],key:s[r].name,fnName:e,className:t});else lc.call(this,{rule:s,value:i[0],key:s.name,fnName:e,className:t})}function lc({rule:s,value:i,key:e,fnName:t,className:r}){function o(d){return{code:me.INVALID_PARAMETER,extraCode:d,fnName:t,messageParams:{key:e,rule:s,value:i}}}if(L(i)){if(s.required)throw new ue(o(5001));if(L(s.defaultValue)){Fe(s.validate)&&s.validate.call(this,i,e,t,r,this);return}i=s.defaultValue}if(Array.isArray(s.type)){let d=!1;for(let c=0;c<s.type.length;c++)s.type[c]===null&&i===null&&(d=!0),Fe(s.type[c])&&i instanceof s.type[c]&&(d=!0),Oe(s.type[c])&&lt(i)===s.type[c].toLowerCase()&&(d=!0);if(!d)throw new ue({code:me.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:s.type.map(c=>Js(c)?an(c):Oe(c)?c:lt(c))},value:i}})}else if(!L(s.type)&&lt(i)!==s.type)throw new ue(o(5002));if(s.allowEmpty===!1){let d=De(i)&&(i===0||Number.isNaN(i)),c=Oe(i)&&i.trim()==="";if(d||c)throw new ue(o(5003))}if(s.notLessThanZero&&De(i)&&i<0)throw new ue(o(5006));if(!L(s.min)&&De(i)&&i<s.min)throw new ue(o(5007));if(!L(s.max)&&De(i)&&i>s.max)throw new ue(o(5008));if(Oe(s.instanceOf)){if(!i||i._name!==s.instanceOf)throw new ue(o(5004))}else if(Fe(s.instanceOf)&&!(i instanceof s.instanceOf))throw new ue(o(5004));if(Array.isArray(s.values)&&!s.values.includes(i))throw new ue(o(5005));let{properties:n}=s;Ht(n)&&xi(i)&&Object.keys(n).forEach(d=>{lc.call(this,{rule:n[d],value:i&&i[d],key:`${d}`,fnName:t,className:r})});let{arrayItem:a}=s;Ht(a)&&tt(i)&&i.forEach((d,c)=>{lc.call(this,{rule:a,value:d,key:`${e}[${c}]`,fnName:t,className:r})}),Fe(s.validate)&&s.validate.call(this,i,e,t,r,this)}function Xe(s={}){let{getRemoteId:i=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:r}=s;return ve((o,n)=>function(...a){var u;function d(m,p,g){if(g&&g.includes(m))return"hided";if(e){let f=e(...a);if(a[f.argIndex]===p)return f.value}if(p===a||m in a)return p;try{return p instanceof HTMLElement?`id: ${p.id} type:${lt(p)}`:p instanceof MediaStreamTrack?Fa(p):(JSON.stringify(p),p)}catch(f){return`type:${lt(p)}`}}let c=this._log||j;if(r!=null&&r(...a))return o.apply(this,a);a.length>0?c.info(`${n}() ${JSON.stringify(a,(m,p)=>d(m,p,["userSig","privateMapKey"]))}`):c.info(`${n}()`);let h=t?t(...a):fd[n];try{let m=o.apply(this,a),p=le();return Wr(m)?m.then(g=>(c.info(`${n}() success ${i.call(this,...a)}`),Y.addSuccessEvent({key:h,cost:le()-p}),g)).catch(g=>{var C;g=ue.convertFrom.call(this,g,n,a.length===1?a[0]:a);let f=g.extraCode||g.code,T=(C=g.message)!=null&&C.includes(f)?"":` code:${f}`;throw c.error(`${n}() failed ${i.call(this,...a)} ${g}${T} params: ${JSON.stringify(a,d)}`),Y.addFailedEvent({key:h,error:g}),g}):(Y.addSuccessEvent({key:h}),m)}catch(m){m=ue.convertFrom.call(this,m,n);let p=m.extraCode||m.code,g=(u=m.message)!=null&&u.includes(p)?"":` code:${p}`;throw c.error(`${n}() failed ${m}${g} params: ${JSON.stringify(a,d)}`),Y.addFailedEvent({key:h,error:m}),m}})}var hc=s=>ve((i,e)=>function(t,r){return I(this,null,function*(){let o=this._plugins.get(t);if(!o)throw this._log.error(`plugin ${String(t)} is not found`),new ue({code:me.OPERATION_ABORT,message:`plugin ${String(t)} is not found`,fnName:e});if(Fe(o.constructor.isSupported)&&!o.constructor.isSupported())throw this._log.error(`plugin ${String(t)} is not supported`),new ue({code:me.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return uc.call(this,o.getValidateRule(s),[r],e,"TRTC"),i.call(this,o,r)})});var mc=0,Th,wr=class wr{constructor(i){this.core=i;l(this,"log");l(this,"customAudioReferenceMap",new Map);l(this,"audioRefId",0);l(this,"audioContext",dt());l(this,"workletNode");l(this,"mixNode");l(this,"mixNodeConnector");l(this,"muteNode");l(this,"muteNodeConnector");mc=mc+1,this.log=i.log.createChild({id:`${this.getAlias()}${mc}`}),this.log.info(`created id=${this.getAlias()}${mc}`),i.assetsPath&&this.preload(`${i.assetsPath}/audioProcessor-wasm.js`)}static startValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,o){if(!i.room.audioManager.hasAudioTrack)throw new ue({code:me.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return Th||(Th=this.doPreload(i)),Th}doPreload(i){return I(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield Rr(this.audioContext,t)}catch(r){this.log.error(`preload audioProcessor failed. ${r}`)}finally{URL.revokeObjectURL(t)}})}getName(){return wr.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(i){switch(i){case"start":return wr.startValidateRule(this.core);case"update":return wr.updateValidateRule;case"stop":return wr.stopValidateRule}}start(i){return I(this,null,function*(){let{room:e}=this.core,{sdkAppId:t,userId:r,assetsPath:o,audioReference:n,processLevel:a,enableDump:d}=i;if(yield this.preload(`${o}/audioProcessor-wasm.js`),!this.workletNode){let c=String(Date.now()).slice(0,-3),{auth:h,sign:u,status:m,message:p}=yield pS(ne(K({},i),{timestamp:c}));if(!h)throw this.log.info(`audioProcessor: ${r} auth result: ${h}. Message: ${p}`),new ue({code:me.INVALID_PARAMETER,message:p});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(t),userId:r,timestamp:c,sign:u,status:m}}),this.workletNode.port.onmessage=g=>{var T;let{data:f}=g;switch(f.type){case"cost":let C=(f==null?void 0:f.value)>20?"warn":(f==null?void 0:f.value)>10?"info":"debug";this.log[C](`avg cost: ${f.value} max: ${f==null?void 0:f.max}(${Hs(new Date(f==null?void 0:f.maxCostTimestamp))}) hist: ${(T=f==null?void 0:f.hist)==null?void 0:T.join(" ")}`);return;case"log":this.log[f.logLevel](`${f.value}`);return;case"dump":x.emit("265",{room:e,data:f.value,type:"dump"});return}}}this.mixNode||(this.mixNode=this.audioContext.createGain(),this.mixNode.gain.value=1),this.muteNode||(this.muteNode=this.audioContext.createConstantSource(),this.muteNode.offset.setValueAtTime(0,this.audioContext.currentTime),this.muteNode.start()),this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addAudioProcessor(this.workletNode,this.mixNode,this.muteNode),L(n)||n.forEach(c=>{this.customAudioReferenceMap.set(c,`o-${this.audioRefId++}`),x.emit("266",{room:this.core.room,type:"add",audioReference:c,refId:`o-${this.audioRefId++}`})}),L(a)||this.workletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:a}}),L(d)||this.workletNode.port.postMessage({type:"dump",data:{enable:d}})})}update(i){return I(this,null,function*(){if(!this.workletNode)return;let{audioReference:e,enableDump:t,processLevel:r}=i;L(e)||(this.customAudioReferenceMap.forEach((o,n)=>{this.customAudioReferenceMap.delete(n),x.emit("266",{room:this.core.room,type:"remove",refId:o})}),e.forEach(o=>{this.customAudioReferenceMap.set(o,`o-${this.audioRefId++}`),x.emit("266",{room:this.core.room,type:"add",audioReference:o,refId:`o-${this.audioRefId++}`})})),L(r)||this.workletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:r}}),L(t)||this.workletNode.port.postMessage({type:"dump",data:{enable:t}})})}stop(){return I(this,null,function*(){if(!this.workletNode)return;let{room:i}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield i.audioManager.removeAudioProcessor(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};l(wr,"updateValidateRule",{type:"object"}),l(wr,"stopValidateRule",{type:"object"}),l(wr,"Name","AudioProcessor");var pc=wr;function mS(s,i=S.MAIN){return`https://${tr[i]||dc(s,i)}/api/v1/audioAiAuth`}function pS(r){return I(this,arguments,function*({sdkAppId:s,userId:i,userSig:e,timestamp:t}){let n=`${mS(s)}?sdkAppId=${s}&userId=${i}&userSig=${e}&timestamp=${t}`,a=yield fetch(n),{data:{errCode:d,errMsg:c,sign:h,status:u}}=yield a.json();if(u==="1")return{auth:!0,sign:h,status:u,message:c};let m="Init RTCAudioProcessor failed.",p="";switch(d){case 1:p="Please check your params.";break;case 2:p="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:p="Server is invalid. Please contact our engineer. ";break;case 4:p="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:p="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:p="Your version is not supported.";break}return{auth:!1,status:u,message:c?`${m} Reason: ${c}. ${p}`:`${m}, ${p}`}})}var fc=0,Sh=class{constructor(i,e){l(this,"player");l(this,"publisher");l(this,"mixInput");this.mixInput=new Eo(e),i.url?(this.player=new Audio(i.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(i.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(i.track),this.mixInput.connect()}updateSettings(i){this.player&&(L(i.volume)||(this.volume=i.volume),L(i.loop)||(this.loop=i.loop),L(i.playbackRate)||(this.playbackRate=i.playbackRate))}updateListener(i){if(this.player){if(i.onDurationChange){let{onDurationChange:e}=i;this.player.ondurationchange=t=>{e(t.target.duration)}}if(i.onTimeUpdate){let e=i.onTimeUpdate,{player:t}=this;t.ontimeupdate=()=>{e(t.currentTime,t.duration)}}i.onEnded&&(this.player.onended=i.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(i){this.player&&(i<0&&i>this.player.duration||(this.player.currentTime=i,this.publisher.currentTime=i))}play(){var i,e;return(i=this.publisher)==null||i.play(),(e=this.player)==null?void 0:e.play()}pause(){var i,e;(i=this.player)==null||i.pause(),(e=this.publisher)==null||e.pause()}stop(){var i;(i=this.player)==null||i.pause(),this.mixInput.disconnect()}setOperation(i){i==="pause"&&this.pause(),i==="resume"&&(this.pause(),this.play()),i==="stop"&&(this.pause(),this.seek(0))}set volume(i){!this.player||!this.publisher||(this.player.volume=i,this.publisher.volume=i)}set loop(i){!this.player||!this.publisher||(this.player.loop=i,this.publisher.loop=i)}set playbackRate(i){!this.player||!this.publisher||(this.player.playbackRate=i,this.publisher.playbackRate=i)}};function ko(s,i){if(i&&typeof i!="function")throw new ue({code:me.INVALID_PARAMETER,message:`start audioMixer plugin: param ${s} should be a function.`})}var ir=class ir{constructor(i){this.core=i;l(this,"log");l(this,"mixedMusicMap",new Map);l(this,"cacheMusicMap",new Map);fc=fc+1,this.log=i.log.createChild({id:`${this.getAlias()}${fc}`}),this.log.info(`created id=${this.getAlias()}${fc}`),this.core=i}getName(){return ir.Name}getAlias(){return"ax"}getGroup(i){return i==null?void 0:i.id}getValidateRule(i){switch(i){case"start":return ir.startValidateRule;case"update":return ir.updateValidateRule;case"stop":return ir.stopValidateRule}}start(i){return I(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${i.id} url: ${i.url}, track: ${i.track}`);let{id:t,url:r}=i;if(this.mixedMusicMap.has(t))return;let o=this.cacheMusicMap.get(t);o?i.url?o.reset():(o.mixInput.replaceSource(i.track),o.mixInput.connect()):(o=new Sh(i,e.audioManager),this.cacheMusicMap.set(t,o)),o.updateListener(i),o.updateSettings(i),yield o.play(),this.mixedMusicMap.set(t,o),o.mixInput.source.node&&x.emit("266",{room:this.core.room,type:"add",audioReference:o.mixInput.source.node,refId:`ax-${t}`}),this.log.info(`start mix audio track ${t} success.`),Y.addEnum({key:502700,value:3}),this.kvUpload(i)})}update(i){return I(this,null,function*(){let{id:e,operation:t,seekFrom:r,playbackRate:o}=i;this.log.info(`update music source, ${JSON.stringify(i)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(i),n.updateListener(i),L(t)||n.setOperation(t),L(r)||n.seek(r),this.kvUpload(i)})}stop(e){return I(this,arguments,function*({id:i}){if(this.mixedMusicMap.has(i)){this.log.info(`remove music source, music id: ${i}`);let t=this.mixedMusicMap.get(i);t!=null&&t.mixInput.source.node&&x.emit("266",{room:this.core.room,type:"remove",audioReference:t.mixInput.source.node,refId:`ax-${i}`}),t==null||t.stop(),this.mixedMusicMap.delete(i)}i==="*"&&this.destroyAllMusic()})}kvUpload(i){let{track:e,loop:t,volume:r,playbackRate:o,operation:n,seekFrom:a,onTimeUpdate:d,onDurationChange:c,onEnded:h}=i;e&&Y.addCount({key:502711}),t&&Y.addCount({key:502703}),r&&Y.addCount({key:502704}),o&&Y.addCount({key:502705}),n&&Y.addCount({key:502706}),a&&Y.addCount({key:502707}),typeof d!="function"&&Y.addCount({key:502709}),typeof h!="function"&&Y.addCount({key:502710}),typeof c!="function"&&Y.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((i,e)=>{i!=null&&i.mixInput.track&&x.emit("266",{room:this.core.room,type:"remove",audioReference:i.mixInput.track,refId:e}),this.stop({id:e})})}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};l(ir,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(i,e,t){if(i.url&&i.url!=="*"){let r=i.url.split("?")[0],o=["mp3","ogg","wav","flac"],n=r.split(".").pop(),a=o.indexOf(n)>=0,d=r.startsWith("blob"),c=r.startsWith("data");if(!(a||d||c))throw new ue({code:me.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:t})}if(!i.url&&!i.track)throw new ue({code:me.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});ko("onTimeUpdate",i.onTimeUpdate),ko("onEnded",i.onEnded),ko("onDurationChange",i.onDurationChange)}}),l(ir,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(i,e,t){ko("onTimeUpdate",i.onTimeUpdate),ko("onEnded",i.onEnded),ko("onDurationChange",i.onDurationChange)}}),l(ir,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),l(ir,"Name","AudioMixer");var _c=ir;var gc=0,Ih,Mr=class Mr{constructor(i){this.core=i;l(this,"log");l(this,"audioContext",dt("denoiser"));l(this,"workletNode");gc=gc+1,this.log=i.log.createChild({id:`${this.getAlias()}${gc}`}),this.log.info(`created id=${this.getAlias()}${gc}`),i.assetsPath&&this.preload(`${i.assetsPath}/denoiser-wasm.js`).catch(e=>{})}static startValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,o){if(!i.room.audioManager.hasAudioTrack)throw new ue({code:me.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return Ih||(Ih=this.doPreload(i)),Ih}doPreload(i){return I(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield Rr(this.audioContext,t)}catch(r){throw this.log.error("load worklet failed",r),r}finally{URL.revokeObjectURL(t)}})}getName(){return Mr.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(i){switch(i){case"start":return Mr.startValidateRule(this.core);case"update":return Mr.updateValidateRule;case"stop":return Mr.stopValidateRule}}start(i){return I(this,null,function*(){let{room:e,schedule:t}=this.core;if(yield this.preload(`${i.assetsPath}/denoiser-wasm.js`),!this.workletNode){let r=String(Date.now()).slice(0,-3),{auth:o,sign:n,status:a,message:d}=yield _S(t,ne(K({},i),{timestamp:r}));if(!o)throw this.log.info(`RTCAIDenoiser: ${i.userId} auth result: ${o}. Message: ${d}`),new ue({code:me.INVALID_PARAMETER,message:d});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(i.sdkAppId),userId:i.userId,timestamp:r,sign:n,status:a}}),this.workletNode.port.onmessage=c=>{var u;let{data:h}=c;if(h.type==="cost"){let m=(h==null?void 0:h.max)>20?"warn":(h==null?void 0:h.max)>10?"info":"debug";this.log[m](`avg cost: ${h.value} max: ${h==null?void 0:h.max}(${Hs(new Date(h==null?void 0:h.maxCostTimestamp))}) hist: ${(u=h==null?void 0:h.hist)==null?void 0:u.join(" ")}`)}else h.type==="log"&&this.log[h.logLevel](`${h.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return I(this,null,function*(){})}stop(){return I(this,null,function*(){if(!this.workletNode)return;let{room:i}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield i.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};l(Mr,"updateValidateRule",{type:"object"}),l(Mr,"stopValidateRule",{type:"object"}),l(Mr,"Name","AIDenoiser");var Ec=Mr;function _S(o,n){return I(this,arguments,function*(s,{sdkAppId:i,userId:e,userSig:t,timestamp:r}){try{let{data:{errCode:a,errMsg:d,sign:c,status:h}}=yield s.getAbilityConfig(i,s.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:i,userId:e,userSig:t,timestamp:r});if(h==="1")return{auth:!0,sign:c,status:h,message:d};let u="Init RTCAIDenoiser failed.",m="";switch(a){case 1:m="Please check your params.";break;case 2:m="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:m="Server is invalid. Please contact our engineer. ";break;case 4:m="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:m="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:m="Your version is not supported.";break}return{auth:!1,status:h,message:d?`${u} Reason: ${d}. ${m}`:`${u}, ${m}`}}catch(a){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${a}`}}})}var Cf=gt(Mt(),1);var Ah=class extends Cf.EventEmitter{constructor(){super();l(this,"observer");l(this,"state","nominal");this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return I(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!ze&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){Me.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let t=this.stateNum,r=e[e.length-1];this.state=r.state,(this.stateNum>3||t>3)&&j.info(`${r.source}: ${r.state}`),this.emit("state-changed",{type:r.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(t){Me.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:t})}}},gS=new Ah,Ch=gS;function Rh([s,i]){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,o=[];o.push(0,0,0,1,6,s);for(let a=0;a<t;a++)o.push(255);o.push(r);let n=new DataView(i);return o.push(...new Uint8Array(n.buffer)),o.push(128),new vr(new DataView(new Uint8Array(o).buffer),!0)}function yh(s){return s.type==="empty"||s.data.byteLength===0}function bh(s){return s.getInt32(0)===1&&s.getInt8(4)===6}function vh(s){let i=0,e=0,t=new DataView(s);for(let r=0;r<s.byteLength;r++)switch(t.getUint8(r)){case 0:i++;break;case 1:(i===2||i===3)&&e++,i=0;break;default:i=0;break}return e}function Nh({frame:s,seiMessageList:i}){if(!i||i.length===0||s.data.byteLength===0)return s;let t=9-vh(s.data);if(t<=0)return s;let r=i.splice(0,t).reverse().map(Rh),o=r.reduce((h,u)=>h+u.dataView.byteLength,0),n=new ArrayBuffer(o+s.data.byteLength),a=new DataView(n),d=new DataView(s.data),c=0;for(let h=0;h<r.length;h++)for(let u=0;u<r[h].dataView.byteLength;u++)a.setInt8(c++,r[h].dataView.getInt8(u));for(let h=0;h<s.data.byteLength;h++)a.setInt8(c++,d.getInt8(h));return s.data=n,s}function Dh({frame:s,onSEI:i}){try{let e=new DataView(s.data);if(yh(s)||!bh(e))return s;let t=[],r=0,o=-1,n=-1;for(let a=0;a<s.data.byteLength;a++){let d=e.getUint8(a);if(d===0)r++;else if(d===1){if(r===2||r===3){let c=a-r;if(o===-1?o=c:n===-1&&(n=c,t.push(new vr(new DataView(e.buffer.slice(o,n)))),o=c,n=-1),!(e.getUint8(a+1)===6)){s.data=e.buffer.slice(c);break}}r=0}else r=0}i==null||i(t.reverse())}catch(e){}return s}var kh=0,ra=class ra{constructor(i){this.core=i;l(this,"log");l(this,"_seiMessageList",[]);l(this,"_smallSeiMessageList",[]);l(this,"_subStreamSeiMessageList",[]);kh++,this.log=i.log.createChild({id:`${this.getAlias()}${kh}`}),this.log.info(`[sei] created id=${this.getAlias()}${kh}`),this.core=i,this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:i,mediaType:e}){try{let t=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return Nh({frame:i,seiMessageList:t})}catch(t){this.log.warn(t)}return i}decode({frame:i,track:e}){return Dh({frame:i,onSEI:t=>{t.forEach(r=>{this.core.trtc.emit(oe.SEI_MESSAGE,{seiPayloadType:r.seiPayloadType,data:r.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(i){switch(i){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:Ar?this.encode:Nh,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:Ar?this.decode:Dh,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:i,options:e}){var o;let t=[e.seiPayloadType,i],r=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(t):(this._seiMessageList.push(t),r&&this._smallSeiMessageList.push(t)),(o=this.core.room.scriptTransformWorker)==null||o.postMessage({type:"sei",data:t,isMain:!e.toSubStream,small:r})}getName(){return ra.Name}getAlias(){return"sei"}getGroup(){return"sei"}};l(ra,"autoStart",!0),l(ra,"Name","SEI");var Tc=ra;function Oh({frame:s,onDump:i}){return i==null||i(),s}function wh({frame:s,onDump:i}){return i==null||i(),s}var Rf=()=>{let s=window.navigator&&window.navigator.userAgent||"",i=/iPad/i.test(s)||/iPhone/i.test(s),e=/Android/i.test(s);return i||e},Re={LOG_BUTTON:"Log",NETWORK_BUTTON:"Network",DUMP_BUTTON:"Dump",DUMPING_BUTTON:"Dumping",END_BUTTON:"End",UPLOAD_BUTTON:"Upload Log",EXPORT_BUTTON:"Export Log",HIDE_BUTTON:"Hide",GO_BOTTOM:"goBottom",BACK_TOP:"backTop",CLEAR_LOG:"Clear Log",UPLINK:"Uplink",DOWNLINK:"Downlink",NO_DATA:"No Data",BASIC:"Basic",DURATION:"Duration",VIDEO:"Video",AUDIO:"Audio",SCREEN:"Screen"},yf=s=>s.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d").replace(">","&gt;").replace(">","&lt;"),ss={"play() error: NotAllowedError:":{tips:s=>s.includes("main <video>")||s.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:s=>s.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:s=>s.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
57
+ ${r.stack}`),!1}},s};var Ms=new WeakMap;function Fm(s){let i=Ms.get(s);i&&(i.forEach(e=>clearTimeout(e)),Ms.delete(s))}function $m(s,i){return Q((e,t)=>function(...r){let o=Ms.get(this);o||(o=new Map,Ms.set(this,o));let n=i(...r),a=o.get(n);if(!a||a<=0){e.apply(this,r);let c=setTimeout(()=>{var l;(l=Ms.get(this))==null||l.delete(n)},s);o.set(n,c)}else{clearTimeout(a);let c=window.setTimeout(()=>{var l;e.apply(this,r),(l=Ms.get(this))==null||l.delete(n)},s);o.set(n,c)}})}var Gm="trtc-sdk-v5",Wm="5.10.2-beta.9";function Xe(...s){return Q((i,e)=>function(...t){try{Ya.call(this,s,t,e,this._name)}catch(r){return Promise.reject(r)}return i.apply(this,t)})}function ql(...s){return Q((i,e)=>function(...t){try{Ya.call(this,s,t,e,this._name)}catch(r){throw r}return i.apply(this,t)})}function Ya(s,i,e,t){if(_e(s))for(let r=0;r<s.length;r++)Qa.call(this,{rule:s[r],value:i[r],key:s[r].name,fnName:e,className:t});else Qa.call(this,{rule:s,value:i[0],key:s.name,fnName:e,className:t})}function Qa({rule:s,value:i,key:e,fnName:t,className:r}){function o(c){return{code:$.INVALID_PARAMETER,extraCode:c,fnName:t,messageParams:{key:e,rule:s,value:i}}}if(T(i)){if(s.required)throw new B(o(5001));if(T(s.defaultValue)){oe(s.validate)&&s.validate.call(this,i,e,t,r,this);return}i=s.defaultValue}if(Array.isArray(s.type)){let c=!1;for(let l=0;l<s.type.length;l++)s.type[l]===null&&i===null&&(c=!0),oe(s.type[l])&&i instanceof s.type[l]&&(c=!0),K(s.type[l])&&Ee(i)===s.type[l].toLowerCase()&&(c=!0);if(!c)throw new B({code:$.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:s.type.map(l=>gr(l)?Qr(l):K(l)?l:Ee(l))},value:i}})}else if(!T(s.type)&&Ee(i)!==s.type)throw new B(o(5002));if(s.allowEmpty===!1){let c=j(i)&&(i===0||Number.isNaN(i)),l=K(i)&&i.trim()==="";if(c||l)throw new B(o(5003))}if(s.notLessThanZero&&j(i)&&i<0)throw new B(o(5006));if(!T(s.min)&&j(i)&&i<s.min)throw new B(o(5007));if(!T(s.max)&&j(i)&&i>s.max)throw new B(o(5008));if(K(s.instanceOf)){if(!i||i._name!==s.instanceOf)throw new B(o(5004))}else if(oe(s.instanceOf)&&!(i instanceof s.instanceOf))throw new B(o(5004));if(Array.isArray(s.values)&&!s.values.includes(i))throw new B(o(5005));let{properties:n}=s;He(n)&&bt(i)&&Object.keys(n).forEach(c=>{Qa.call(this,{rule:n[c],value:i&&i[c],key:`${c}`,fnName:t,className:r})});let{arrayItem:a}=s;He(a)&&_e(i)&&i.forEach((c,l)=>{Qa.call(this,{rule:a,value:c,key:`${e}[${l}]`,fnName:t,className:r})}),oe(s.validate)&&s.validate.call(this,i,e,t,r,this)}function fe(s={}){let{getRemoteId:i=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:r}=s;return Q((o,n)=>function(...a){var h;function c(f,_,D){if(D&&D.includes(f))return"hided";if(e){let g=e(...a);if(a[g.argIndex]===_)return g.value}if(_===a||f in a)return _;try{return _ instanceof HTMLElement?`id: ${_.id} type:${Ee(_)}`:_ instanceof MediaStreamTrack?Dn(_):(JSON.stringify(_),_)}catch(g){return`type:${Ee(_)}`}}let l=this._log||R;if(r!=null&&r(...a))return o.apply(this,a);a.length>0?l.info(`${n}() ${JSON.stringify(a,(f,_)=>c(f,_,["userSig","privateMapKey"]))}`):l.info(`${n}()`);let u=t?t(...a):ia[n];try{let f=o.apply(this,a),_=w();return Xi(f)?f.then(D=>(l.info(`${n}() success ${i.call(this,...a)}`),b.addSuccessEvent({key:u,cost:w()-_}),D)).catch(D=>{var M;D=B.convertFrom.call(this,D,n,a.length===1?a[0]:a);let g=D.extraCode||D.code,A=(M=D.message)!=null&&M.includes(g)?"":` code:${g}`;throw l.error(`${n}() failed ${i.call(this,...a)} ${D}${A} params: ${JSON.stringify(a,c)}`),b.addFailedEvent({key:u,error:D}),D}):(b.addSuccessEvent({key:u}),f)}catch(f){f=B.convertFrom.call(this,f,n);let _=f.extraCode||f.code,D=(h=f.message)!=null&&h.includes(_)?"":` code:${_}`;throw l.error(`${n}() failed ${f}${D} params: ${JSON.stringify(a,c)}`),b.addFailedEvent({key:u,error:f}),f}})}var Ka=s=>Q((i,e)=>function(t,r){return p(this,null,function*(){let o=this._plugins.get(t);if(!o)throw this._log.error(`plugin ${String(t)} is not found`),new B({code:$.OPERATION_ABORT,message:`plugin ${String(t)} is not found`,fnName:e});if(oe(o.constructor.isSupported)&&!o.constructor.isSupported())throw this._log.error(`plugin ${String(t)} is not supported`),new B({code:$.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return Ya.call(this,o.getValidateRule(s),[r],e,"TRTC"),i.call(this,o,r)})});var Za=0,Xl=class{constructor(i,e){d(this,"player");d(this,"publisher");d(this,"mixInput");this.mixInput=new Ss(e),i.url?(this.player=new Audio(i.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(i.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(i.track),this.mixInput.connect()}updateSettings(i){this.player&&(T(i.volume)||(this.volume=i.volume),T(i.loop)||(this.loop=i.loop),T(i.playbackRate)||(this.playbackRate=i.playbackRate))}updateListener(i){if(this.player){if(i.onDurationChange){let{onDurationChange:e}=i;this.player.ondurationchange=t=>{e(t.target.duration)}}if(i.onTimeUpdate){let e=i.onTimeUpdate,{player:t}=this;t.ontimeupdate=()=>{e(t.currentTime,t.duration)}}i.onEnded&&(this.player.onended=i.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(i){this.player&&(i<0&&i>this.player.duration||(this.player.currentTime=i,this.publisher.currentTime=i))}play(){var i,e;return(i=this.publisher)==null||i.play(),(e=this.player)==null?void 0:e.play()}pause(){var i,e;(i=this.player)==null||i.pause(),(e=this.publisher)==null||e.pause()}stop(){var i;(i=this.player)==null||i.pause(),this.mixInput.disconnect()}setOperation(i){i==="pause"&&this.pause(),i==="resume"&&(this.pause(),this.play()),i==="stop"&&(this.pause(),this.seek(0))}set volume(i){!this.player||!this.publisher||(this.player.volume=i,this.publisher.volume=i)}set loop(i){!this.player||!this.publisher||(this.player.loop=i,this.publisher.loop=i)}set playbackRate(i){!this.player||!this.publisher||(this.player.playbackRate=i,this.publisher.playbackRate=i)}};function ks(s,i){if(i&&typeof i!="function")throw new B({code:$.INVALID_PARAMETER,message:`start audioMixer plugin: param ${s} should be a function.`})}var hi=class hi{constructor(i){this.core=i;d(this,"log");d(this,"mixedMusicMap",new Map);d(this,"cacheMusicMap",new Map);Za=Za+1,this.log=i.log.createChild({id:`${this.getAlias()}${Za}`}),this.log.info(`[audioMixer] created id=${this.getAlias()}${Za}`),this.core=i}getName(){return hi.Name}getAlias(){return"ax"}getGroup(i){return i==null?void 0:i.id}getValidateRule(i){switch(i){case"start":return hi.startValidateRule;case"update":return hi.updateValidateRule;case"stop":return hi.stopValidateRule}}start(i){return p(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${i.id} url: ${i.url}, track: ${i.track}`);let{id:t,url:r}=i;if(this.mixedMusicMap.has(t))return;let o=this.cacheMusicMap.get(t);o?i.url?o.reset():(o.mixInput.replaceSource(i.track),o.mixInput.connect()):(o=new Xl(i,e.audioManager),this.cacheMusicMap.set(t,o)),o.updateListener(i),o.updateSettings(i),yield o.play(),this.mixedMusicMap.set(t,o),this.log.info(`start mix audio track ${t} success.`),b.addEnum({key:502700,value:3}),this.kvUpload(i)})}update(i){return p(this,null,function*(){let{id:e,operation:t,seekFrom:r,playbackRate:o}=i;this.log.info(`update music source, ${JSON.stringify(i)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(i),n.updateListener(i),T(t)||n.setOperation(t),T(r)||n.seek(r),this.kvUpload(i)})}stop(e){return p(this,arguments,function*({id:i}){var t;this.mixedMusicMap.has(i)&&(this.log.info(`remove music source, music id: ${i}`),(t=this.mixedMusicMap.get(i))==null||t.stop(),this.mixedMusicMap.delete(i)),i==="*"&&this.destroyAllMusic()})}kvUpload(i){let{track:e,loop:t,volume:r,playbackRate:o,operation:n,seekFrom:a,onTimeUpdate:c,onDurationChange:l,onEnded:u}=i;e&&b.addCount({key:502711}),t&&b.addCount({key:502703}),r&&b.addCount({key:502704}),o&&b.addCount({key:502705}),n&&b.addCount({key:502706}),a&&b.addCount({key:502707}),typeof c!="function"&&b.addCount({key:502709}),typeof u!="function"&&b.addCount({key:502710}),typeof l!="function"&&b.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((i,e)=>this.stop({id:e}))}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};d(hi,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(i,e,t){if(i.url&&i.url!=="*"){let r=i.url.split("?")[0],o=["mp3","ogg","wav","flac"],n=r.split(".").pop(),a=o.indexOf(n)>=0,c=r.startsWith("blob"),l=r.startsWith("data");if(!(a||c||l))throw new B({code:$.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:t})}if(!i.url&&!i.track)throw new B({code:$.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});ks("onTimeUpdate",i.onTimeUpdate),ks("onEnded",i.onEnded),ks("onDurationChange",i.onDurationChange)}}),d(hi,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(i,e,t){ks("onTimeUpdate",i.onTimeUpdate),ks("onEnded",i.onEnded),ks("onDurationChange",i.onDurationChange)}}),d(hi,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),d(hi,"Name","AudioMixer");var ec=hi;var tc=0,zl,Fi=class Fi{constructor(i){this.core=i;d(this,"log");d(this,"audioContext",Ce("denoiser"));d(this,"workletNode");tc=tc+1,this.log=i.log.createChild({id:`${this.getAlias()}${tc}`}),this.log.info(`[audioDenoiser] created id=${this.getAlias()}${tc}`),i.assetsPath&&this.preload(`${i.assetsPath}/denoiser-wasm.js`).catch(e=>{})}static startValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,o){if(!i.room.audioManager.hasAudioTrack)throw new B({code:$.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return zl||(zl=this.doPreload(i)),zl}doPreload(i){return p(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield Nr(this.audioContext,t)}catch(r){throw this.log.error("load worklet failed",r),r}finally{URL.revokeObjectURL(t)}})}getName(){return Fi.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(i){switch(i){case"start":return Fi.startValidateRule(this.core);case"update":return Fi.updateValidateRule;case"stop":return Fi.stopValidateRule}}start(i){return p(this,null,function*(){let{room:e,schedule:t}=this.core;if(yield this.preload(`${i.assetsPath}/denoiser-wasm.js`),!this.workletNode){let r=String(Date.now()).slice(0,-3),{auth:o,sign:n,status:a,message:c}=yield RT(t,x(v({},i),{timestamp:r}));if(!o)throw this.log.info(`RTCAIDenoiser: ${i.userId} auth result: ${o}. Message: ${c}`),new B({code:$.INVALID_PARAMETER,message:c});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(i.sdkAppId),userId:i.userId,timestamp:r,sign:n,status:a}}),this.workletNode.port.onmessage=l=>{var h;let{data:u}=l;if(u.type==="cost"){let f=(u==null?void 0:u.max)>20?"warn":(u==null?void 0:u.max)>10?"info":"debug";this.log[f](`avg cost: ${u.value} max: ${u==null?void 0:u.max}(${hn(new Date(u==null?void 0:u.maxCostTimestamp))}) hist: ${(h=u==null?void 0:u.hist)==null?void 0:h.join(" ")}`)}else u.type==="log"&&this.log[u.logLevel](`${u.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return p(this,null,function*(){})}stop(){return p(this,null,function*(){if(!this.workletNode)return;let{room:i}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield i.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};d(Fi,"updateValidateRule",{type:"object"}),d(Fi,"stopValidateRule",{type:"object"}),d(Fi,"Name","AIDenoiser");var ic=Fi;function RT(o,n){return p(this,arguments,function*(s,{sdkAppId:i,userId:e,userSig:t,timestamp:r}){try{let{data:{errCode:a,errMsg:c,sign:l,status:u}}=yield s.getAbilityConfig(i,s.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:i,userId:e,userSig:t,timestamp:r});if(u==="1")return{auth:!0,sign:l,status:u,message:c};let h="Init RTCAIDenoiser failed.",f="";switch(a){case 1:f="Please check your params.";break;case 2:f="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:f="Server is invalid. Please contact our engineer. ";break;case 4:f="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:f="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:f="Your version is not supported.";break}return{auth:!1,status:u,message:c?`${h} Reason: ${c}. ${f}`:`${h}, ${f}`}}catch(a){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${a}`}}})}var Jm=Be(Qe(),1);var Ql=class extends Jm.EventEmitter{constructor(){super();d(this,"observer");d(this,"state","nominal");this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return p(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!he&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){te.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let t=this.stateNum,r=e[e.length-1];this.state=r.state,(this.stateNum>3||t>3)&&R.info(`${r.source}: ${r.state}`),this.emit("state-changed",{type:r.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(t){te.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:t})}}},yT=new Ql,Yl=yT;function Kl([s,i]){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,o=[];o.push(0,0,0,1,6,s);for(let a=0;a<t;a++)o.push(255);o.push(r);let n=new DataView(i);return o.push(...new Uint8Array(n.buffer)),o.push(128),new Pi(new DataView(new Uint8Array(o).buffer),!0)}function Zl(s){return s.type==="empty"||s.data.byteLength===0}function eu(s){return s.getInt32(0)===1&&s.getInt8(4)===6}function tu(s){let i=0,e=0,t=new DataView(s);for(let r=0;r<s.byteLength;r++)switch(t.getUint8(r)){case 0:i++;break;case 1:(i===2||i===3)&&e++,i=0;break;default:i=0;break}return e}function iu({frame:s,seiMessageList:i}){if(!i||i.length===0||s.data.byteLength===0)return s;let t=9-tu(s.data);if(t<=0)return s;let r=i.splice(0,t).reverse().map(Kl),o=r.reduce((u,h)=>u+h.dataView.byteLength,0),n=new ArrayBuffer(o+s.data.byteLength),a=new DataView(n),c=new DataView(s.data),l=0;for(let u=0;u<r.length;u++)for(let h=0;h<r[u].dataView.byteLength;h++)a.setInt8(l++,r[u].dataView.getInt8(h));for(let u=0;u<s.data.byteLength;u++)a.setInt8(l++,c.getInt8(u));return s.data=n,s}function ru({frame:s,onSEI:i}){try{let e=new DataView(s.data);if(Zl(s)||!eu(e))return s;let t=[],r=0,o=-1,n=-1;for(let a=0;a<s.data.byteLength;a++){let c=e.getUint8(a);if(c===0)r++;else if(c===1){if(r===2||r===3){let l=a-r;if(o===-1?o=l:n===-1&&(n=l,t.push(new Pi(new DataView(e.buffer.slice(o,n)))),o=l,n=-1),!(e.getUint8(a+1)===6)){s.data=e.buffer.slice(l);break}}r=0}else r=0}i==null||i(t.reverse())}catch(e){}return s}var su=0,Xo=class Xo{constructor(i){this.core=i;d(this,"log");d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(this,"_subStreamSeiMessageList",[]);su++,this.log=i.log.createChild({id:`${this.getAlias()}${su}`}),this.log.info(`[sei] created id=${this.getAlias()}${su}`),this.core=i,this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:i,mediaType:e}){try{let t=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return iu({frame:i,seiMessageList:t})}catch(t){this.log.warn(t)}return i}decode({frame:i,track:e}){return ru({frame:i,onSEI:t=>{t.forEach(r=>{this.core.trtc.emit(k.SEI_MESSAGE,{seiPayloadType:r.seiPayloadType,data:r.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(i){switch(i){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:Oi?this.encode:iu,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:Oi?this.decode:ru,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:i,options:e}){var o;let t=[e.seiPayloadType,i],r=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(t):(this._seiMessageList.push(t),r&&this._smallSeiMessageList.push(t)),(o=this.core.room.scriptTransformWorker)==null||o.postMessage({type:"sei",data:t,isMain:!e.toSubStream,small:r})}getName(){return Xo.Name}getAlias(){return"sei"}getGroup(){return"sei"}};d(Xo,"autoStart",!0),d(Xo,"Name","SEI");var rc=Xo;function ou({frame:s,onDump:i}){return i==null||i(),s}function nu({frame:s,onDump:i}){return i==null||i(),s}var jm={"play() error: NotAllowedError:":{tips:s=>s.includes("main <video>")||s.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:s=>s.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:s=>s.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
59
58
  1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
60
59
  2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},"main stream - video player is paused":{tips:`The remote stream video playback is paused, which usually has two possibilities:
61
60
  1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
62
- 2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(s=>{ss[`${s}()`]={tips:`Call trtc.${s}`,color:"blue",class:"blue",textColor:"#fff"}});var bf=Object.keys(ss);var xf=gt(Nf());var je="trtc_debug_dialog",os=`${je}_activated`,Sc=`${je}_switch`,Lh=`${je}_mask`,Ic=`${je}_panel`,Ph=`${je}_tabber`,Oo=`${je}_tab`,Uh=`${je}_topbar`,xs=`${je}_toptab`,Lr=`${je}_content`,Nc=`${je}_has_topbar`,$h=`${Lr}_log`,Ls=`${Lr}_network`,Ur=`${je}_dump`,sa=`${Ls}_title`,da=`${Ls}_basic`,Ac=`${Ls}_local`,Cc=`${Ls}_remote`,xh=`${Ur}_title`,wo=`${Ur}_local`,rr=`${Ur}_remote`,Df=`${rr}_hook`,Dc=`${je}_banner`,Lf=`${Dc}_item`,kf=`${je}_toolbar`,oa=`${je}_tool`,Pr=`${je}_item`,Pf=`${Pr}_debug`,Uf=`${Pr}_info`,Vf=`${Pr}_warn`,Bf=`${Pr}_error`,Of=`${je}_back_top`,wf=`${je}_go_bottom`,Rc=`${Ur}_local_audio`,yc=`${Ur}_local_video_main`,bc=`${Ur}_local_video_aux`,na=`${je}_tooltip`,$f=`${da}_network_info`,Ff=`${da}_room_info`,vc=`${$h}_controller`,xr="success",Mf="warning",Mo="failed",Vh=0,Bh=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.addStyle(),this.addDialog()}addDialog(){var e;let i=document.createElement("template");i.innerHTML=`<div id="${je}" class="${je}"><div class="${Sc}">Debug#${++Vh}</div><div class="${Lh}"></div><div class="${Ic}"><div class="${Ph}"><a class="${Oo} ${os}" data-tab="log">${Re.LOG_BUTTON}</a><a class="${Oo}" data-tab="network">${Re.NETWORK_BUTTON}</a><a class="${Oo}" data-tab="dump">${Re.DUMP_BUTTON}</a></div><div class="${vc}"><div data-type="back_top">${Re.BACK_TOP}</div><div data-type="go_bottom">${Re.GO_BOTTOM}</div><div data-type="clear_log">${Re.CLEAR_LOG}</div></div><div class="${Uh}"><a class="${xs} ${os}" data-type="all">All</a><a class="${xs}" data-type="debug">Debug</a><a class="${xs}" data-type="info">Info</a><a class="${xs}" data-type="warn">Warn</a><a class="${xs}" data-type="error">Error</a></div><div class="${Lr} ${Nc}"><div class="${$h}"></div><div class="${Ls}"><div class="${sa}">${Re.BASIC}</div><div class="${da}"><div class="${Ff}"></div><div class="${$f}">${Re.NO_DATA}</div></div><div class="${sa}">${Re.UPLINK}</div><div class="${Ac}">${Re.NO_DATA}</div><div class="${sa}">${Re.DOWNLINK}</div><div class="${Cc}">${Re.NO_DATA}</div></div><div class="${Ur}"><div class="${xh}">${Re.UPLINK}</div><div class="${wo}"><div id="${Rc}"><span>${Re.AUDIO} - ${Re.DURATION}(s):</span><input type="number" min=0 value=0></input><button class="dump">${Re.DUMP_BUTTON}</button><button class="end-dump" disabled>${Re.END_BUTTON}</button></div><div id="${yc}"><span>${Re.VIDEO} - ${Re.DURATION}(s):</span><input type="number" min=0 value=10></input><button class="dump">${Re.DUMP_BUTTON}</button><button class="end-dump" disabled>${Re.END_BUTTON}</button></div><div id="${bc}"><span>${Re.SCREEN} - ${Re.DURATION}(s):</span><input type="number" min=0 value=10></input><button class="dump">${Re.DUMP_BUTTON}</button><button class="end-dump" disabled>${Re.END_BUTTON}</button></div></div><div class="${xh}">${Re.DOWNLINK}</div><div class="${rr}"><div class="${Df}">userId:<input id="dump-remote-video-hook-userid" value='*' />duration:<input id="dump-remote-video-hook-duration" min='1' value='10' type='number' />mediaType:<select id="dump-remote-video-hook-mediaType" value='main' ><option value='main' checked>Video</option><option value='sub'>Screen</option></select><button id="dump-remote-video-hook-button">dump if video is available</button></div></div></div></div><div class="${Dc}"></div><div class="${kf}"><a id="trtc_upload" class="${oa}">${Re.UPLOAD_BUTTON}</a><a id="trtc_export" class="${oa}">${Re.EXPORT_BUTTON}</a><a id="trtc_hide" class="${oa}">${Re.HIDE_BUTTON}</a></div></div></div>`,(e=this.shadowRoot)==null||e.appendChild(i.content.firstChild)}addStyle(){var e;let i=document.createElement("style");i.textContent=`#${je}{--DD-BG-0:#ededed;--DD-BG-1:#f7f7f7;--DD-BG-2:#fff;--DD-BORDER:rgba(0,0,0,0.1);--DD-ERROR:red;--DD-WARN:#fa9d3b;--DD-INFO:#000;--DD-DEBUG:#10aeff;--DD-WARN-BG:#fff3cc;--DD-ERROR-BG:#ffe6e6;}#${je} a,.${Sc}{cursor:pointer;}.${je}{color:black;}.${Sc}{display:block;position:fixed;right:50px;bottom:${150+Vh*50}px;border-radius:5px;background-color:#07c160;color:#fff;padding:5px 10px;z-index:10000;}.${Lh}{display:none;position:fixed;left:0;top:0;right:0;bottom:0;z-index:10001;background-color:rgb(0,0,0,0.6);}.${Ic}{background-color:#ededed;display:none;position:fixed;min-height:85%;left:60%;right:0;bottom:0;z-index:10002;border:1px solid var(--DD-BG-0);}@media (max-width:768px) {.${Ic}{left:0;}}.${Ph}{display:flex;height:2rem;border-bottom:1px solid var(--DD-BORDER);}.${Oo}{padding:0 20px;border-right:1px solid rgba(0,0,0,0.1);line-height:2rem;color:black;}.${Oo}.${os}{background-color:var(--DD-BG-2);}.${Oo}.disabled{cursor:not-allowed;background-color:#ededed;color:#999;}.${Uh}{height:2rem;display:flex;flex-direction:row;}.${xs}{width:20%;text-align:center;line-height:2rem;border-right:1px solid var(--DD-BORDER);border-bottom:1px solid var(--DD-BORDER);color:black;}.${xs}.${os}{border-bottom:1px solid #1485ee;background-color:var(--DD-BG-2);}.${Lr}{background-color:#fff;position:absolute;left:0;right:0;top:2rem;bottom:8rem;overflow-y:scroll;overflow-x:hidden;}.${Lr}.${Nc}{top:4rem;bottom:10rem}.${Ls}{display:none;}.${Ur}{display:none;}.${sa},.${xh}{line-height:2rem;text-align:center;background-color:var(--DD-BG-0);border-bottom:1px solid var(--DD-BORDER);}.${da},.${Ac},.${Cc}{text-align:center;border-bottom:1px solid var(--DD-BORDER);}.${wo},.${rr}{display:flex;flex-direction:column;padding:0.5rem 0;justify-content:center;align-items:center;}.${wo} div input{margin:0 10px;height:1.5rem;width:4rem;}.${wo} div {padding:10px 0;border-radius:5px;}.${wo} div button,.${rr} div button {cursor:pointer;height:1.8rem;border-radius:5px;margin-right:5px;}.${wo} div button[disabled],.${rr} div button[disabled]{cursor:not-allowed;}.${rr} select {height:1.8rem;margin:0 10px;}.${rr} div input{margin:0 10px;height:1.5rem;width:4rem;}.${Df} {line-height:3rem;padding:0.5rem;}.${sa}{text-align:center;background-color:var(--DD-BG-0);border-bottom:1px solid var(--DD-BORDER);}.${da},.${Ac},.${Cc}{text-align:center;border-bottom:1px solid var(--DD-BORDER);}.${Pr}{border-bottom:1px solid var(--DD-BG-0);padding:5px 10px;overflow-wrap: break-word;}.${Bf}{color:var(--DD-ERROR);background-color:var(--DD-ERROR-BG);}.${Vf}{color:var(--DD-WARN);background-color:var(--DD-WARN-BG);}div .${Uf}{color:var(--DD-INFO);}.${Pf}{color:var(--DD-DEBUG);}.${Dc}{position:absolute;left:0;right:0;bottom:2rem;height:6rem;border-bottom:1px solid var(--DD-BORDER);display:flex;flex-direction:column;overflow-y:scroll;background-color:var(--DD-BG-1);}.${Lf}{border-bottom:1px solid var(--DD-BORDER);padding:5px 10px;overflow-wrap: break-word;}.${kf}{position:absolute;line-height:2rem;display:flex;flex-direction:row;left:0;right:0;bottom:0;}.${oa}{flex:1;color:black;text-align:center;background-color:#ededed;border-right:1px solid var(--DD-BORDER);}#${je} .${Of},#${je} .${wf}{position:absolute;height:2rem;width:6rem;right:2rem;border-radius:5px;background-color:rgba(30,136,229,0.8);z-index:10003;cursor:pointer;padding:0 5px;line-height:2rem;color:white;text-align:center;}.${wf}{bottom:9rem;}.${Of}{bottom:11.5rem;}#${je} .${oa}.disable{cursor:not-allowed;background-color:#ededed;color:#999;}.${na} {position:relative;display:inline-block;}.${na} .tooltiptext{visibility:hidden;width:180px;background-color:black;color:#fff;text-align:center;padding:5px 0;border-radius:6px;position:absolute;}.${na} .tooltip-top {bottom:125%;left:50%;margin-left:-90px;}.${na}:hover .tooltiptext{visibility:visible;}.${vc}{position:absolute;left:0;right:0;bottom:8rem;height:2rem;display:flex;align-items:center;}.${vc} div{flex:1;cursor:pointer;border-right:1px solid var(--DD-BORDER);text-align: center;}`,(e=this.shadowRoot)==null||e.appendChild(i)}};customElements.define("trtc-basic-debug-dialog",Bh);var aa=class{constructor(i,e,t,r){l(this,"_dialogNode",null);l(this,"_switchNode",null);l(this,"_maskNode",null);l(this,"_panelNode",null);l(this,"_logContentNode",null);l(this,"_networkContentNode",null);l(this,"_dumpContentNode",null);l(this,"_tabNodes",[]);l(this,"_toptabNodes",[]);l(this,"_hasMove",!1);l(this,"_showDialog",!1);l(this,"_isMobile",!1);l(this,"_showLogType","all");l(this,"prevBytesSent",0);l(this,"prevBytesReceived",0);l(this,"_core");l(this,"_log");l(this,"_logList",[]);l(this,"isUploading",!1);l(this,"publishMap",new Map);l(this,"dumpLocalVideoMap");l(this,"dumpRemoteVideoMap");l(this,"eventMap",new Map);l(this,"switchPos",{x:0,y:0,startX:0,startY:0,endX:0,endY:0,isTouchEnd:!1});l(this,"handleLeaveSuccess",({room:i})=>{var t,r;if(!this.hitTest(i))return;let e=(r=(t=this._dialogNode)==null?void 0:t.shadowRoot)==null?void 0:r.querySelector(`.${rr}`);for(let o of this.publishMap.values())e==null||e.removeChild(o);this.publishMap.clear()});l(this,"handleJoinSuccess",({room:i})=>{var t,r;if(!this.hitTest(i))return;let e=(r=(t=this._dialogNode)==null?void 0:t.shadowRoot)==null?void 0:r.querySelector(`.${Ff}`);e.innerHTML=`sdkAppId: ${i.sdkAppId}<br/>roomId: ${i.roomId}<br/>userId: ${i.userId}<br/>`});l(this,"handleRemoteVideoAvailable",i=>{let e=i.streamType==="sub"?"auxiliary":"main";this.renderDumpTab(i.userId,"remote",e,"publish")});l(this,"handleRemoteVideoUnavailable",i=>{let e=i.streamType==="sub"?"auxiliary":"main";this.renderDumpTab(i.userId,"remote",e,"unpublish")});l(this,"handleRemoteAudioAvailable",i=>{this.renderDumpTab(i.userId,"remote","audio","publish")});l(this,"handleRemoteAudioUnavailable",i=>{this.renderDumpTab(i.userId,"remote","audio","unpublish")});l(this,"renderDumpTab",(i,e,t,r)=>{var a,d,c;let o={main:"video",auxiliary:"screen",audio:"audio"},n=(h,u)=>{var C,b,v;let m=document.createElement("div");m.innerText=`${h} - ${o[u]} - ${Re.DURATION}(s):`;let p=document.createElement("input");p.type="number",p.min="0",p.value="10",p.id=`dump_remote_${u}_${h}`;let g=document.createElement("button");g.innerText=Re.END_BUTTON,g.disabled=!0;let f=document.createElement("button");f.innerText=Re.DUMP_BUTTON,f.onclick=()=>{let $,N,X=Number(p.value);if(u==="audio")({download:$,onDumpEnd:N}=this.dumpAudio("remote",X,h));else{if(!this.isSupportDumpVideo())return;({download:$,onDumpEnd:N}=this.dumpVideo(u,"remote",X,h))}$&&(this.inactiveButton(f,Re.DUMPING_BUTTON),X>0?setTimeout(()=>{$==null||$(),this.activeButton(f,Re.DUMP_BUTTON)},X*1e3):(this.activeButton(g),g.onclick=()=>{g.onclick=null,$==null||$(),N==null||N(),this.activeButton(f,Re.DUMP_BUTTON),this.inactiveButton(g)}))},m.appendChild(p),m.appendChild(f),m.appendChild(g),m.style.cssText="padding:10px;";let T=document.createElement("div");return T.style.cssText="width:100%;display:flex;justify-content:center;border-top: 1px solid var(--DD-BORDER);",T.appendChild(m),(v=(b=(C=this._dialogNode)==null?void 0:C.shadowRoot)==null?void 0:b.querySelector(`.${rr}`))==null||v.appendChild(T),T};if(e==="remote")if(r==="publish"){let h=n(i,t);this.publishMap.set(`${i}-${e}-${t}`,h)}else{let h=this.publishMap.get(`${i}-${e}-${t}`);if(!h)return;(c=(d=(a=this._dialogNode)==null?void 0:a.shadowRoot)==null?void 0:d.querySelector(`.${rr}`))==null||c.removeChild(h),this.publishMap.delete(`${i}-${e}-${t}`)}});l(this,"handleStatistics",i=>{var c,h,u,m,p,g;let e=(i.bytesSent-this.prevBytesSent)/2,t=(i.bytesReceived-this.prevBytesReceived)/2;this.prevBytesSent=i.bytesSent,this.prevBytesReceived=i.bytesReceived;let r=(h=(c=this._dialogNode)==null?void 0:c.shadowRoot)==null?void 0:h.querySelector(`.${$f}`);r.innerHTML=`rtt: ${i.rtt} ms upLoss: ${i.upLoss}% downLoss: ${i.downLoss}% <br>
63
- \u2191 ${e/1e3} KB/s (${8*e/1e3} Kb/s) <br>
64
- \u2193 ${t/1e3} KB/s (${8*t/1e3} Kb/s) <br>
65
- `;let o=(m=(u=this._dialogNode)==null?void 0:u.shadowRoot)==null?void 0:m.querySelector(`.${Ac}`),n="";i.localStatistics.audio.bitrate&&(n=`<li>local audio: ${i.localStatistics.audio.bitrate} Kb/s audioLevel: ${i.localStatistics.audio.audioLevel.toFixed(5)}</li>`),i.localStatistics.video.length>0&&(n+=`${i.localStatistics.video.map(f=>`<li>local ${f.videoType} video: ${f.bitrate} Kb/s ${f.width}*${f.height} ${f.frameRate}fps</li>`).join("")}`),o.innerHTML=n===""?`${Re.NO_DATA}`:n;let a=(g=(p=this._dialogNode)==null?void 0:p.shadowRoot)==null?void 0:g.querySelector(`.${Cc}`),d="";i.remoteStatistics.length>0&&i.remoteStatistics.forEach(f=>{let T=`remote ${f.userId}:`;f.audio.bitrate>0&&(T+=`<li>audio: ${f.audio.bitrate} Kb/s audioLevel: ${f.audio.audioLevel.toFixed(5)}</li>`),f.video.length>0&&f.video.forEach(C=>{T+=`<li>${C.videoType} video: ${C.bitrate} Kb/s ${C.width}*${C.height} ${C.frameRate}fps</li>`}),d+=T}),a.innerHTML=d===""?`${Re.NO_DATA}`:d});l(this,"pad",i=>i<10?`0${i}`:`${i}`);this._core=i,this._log=e,this.dumpLocalVideoMap=t,this.dumpRemoteVideoMap=r,this.initCustomElements(),this.synchronizeLog(),this.installEvents()}initCustomElements(){this._isMobile=Rf();let i=document.createElement("trtc-basic-debug-dialog");document.body.appendChild(i);let e=i.shadowRoot;if(this._dialogNode=i,!e)return;this._switchNode=e.querySelector(`.${Sc}`),this._addEventListener(this._switchNode,"click",this.onSwitchClick.bind(this));let t=getComputedStyle(this._switchNode);this.switchPos.x=parseInt(t.right,10)||50,this.switchPos.y=parseInt(t.bottom,10)||100+Vh*50,this._isMobile?(this._switchNode.ontouchstart=this.onTouchStart.bind(this),this._switchNode.ontouchend=this.onTouchEnd.bind(this),this._switchNode.ontouchmove=this.onTouchMove.bind(this)):this._switchNode.onmousedown=this.onMouseDown.bind(this),this._maskNode=e.querySelector(`.${Lh}`),this._addEventListener(this._maskNode,"click",this.onMaskClick.bind(this)),this._panelNode=e.querySelector(`.${Ic}`),e.querySelector(`.${vc}`).childNodes.forEach(v=>{switch(v.getAttribute("data-type")){case"go_bottom":this._addEventListener(v,"click",this.onGoBottomClick.bind(this));break;case"back_top":this._addEventListener(v,"click",this.onBackTopClick.bind(this));break;case"clear_log":this._addEventListener(v,"click",this.onClearLogClick.bind(this));break}}),this._logContentNode=e.querySelector(`.${$h}`),this._networkContentNode=e.querySelector(`.${Ls}`),this._dumpContentNode=e.querySelector(`.${Ur}`),this._tabNodes=Array.from(e.querySelector(`.${Ph}`).children),this._tabNodes.forEach(v=>{this._addEventListener(v,"click",this.onTabClick.bind(this))}),this._toptabNodes=Array.from(e.querySelector(`.${Uh}`).children),this._toptabNodes.forEach(v=>{this._addEventListener(v,"click",this.onToptabClick.bind(this))});let o=e.querySelector("#trtc_upload");this._addEventListener(o,"click",this.onUploadClick.bind(this));let n=e.querySelector("#trtc_export");this._addEventListener(n,"click",this.onExportClick.bind(this));let a=e.querySelector("#trtc_hide");this._addEventListener(a,"click",this.onHideClick.bind(this));let d=e.querySelector(`#${yc} .dump`),c=e.querySelector(`#${yc} .end-dump`),h=Number(e.querySelector(`#${yc} input`).value);this._addEventListener(d,"click",this.getDumpButtonClickHandler.bind(this,d,c,h,"main","local"));let u=e.querySelector(`#${bc} .dump`),m=e.querySelector(`#${bc} .end-dump`),p=Number(e.querySelector(`#${bc} input`).value);this._addEventListener(u,"click",this.getDumpButtonClickHandler.bind(this,u,m,p,"auxiliary","local"));let g=e.querySelector(`#${Rc} button`);this._addEventListener(g,"click",()=>{let v=Number(e.querySelector(`#${Rc} input`).value),{download:$,onDumpEnd:N}=this.dumpAudio("local",v);if(!$){this.addInfoToBanner(Mo,"Failed to dump, please check if the current user has started the audio");return}if(this.inactiveButton(g,Re.DUMPING_BUTTON),v>0)setTimeout(()=>{$(),this.activeButton(g,Re.DUMP_BUTTON)},v*1e3);else{let X=e.querySelector(`#${Rc} .end-dump`);this.activeButton(X),X.onclick=()=>{X.onclick=null,$(),N==null||N(),this.activeButton(g,Re.DUMP_BUTTON),this.inactiveButton(X)}}});let f=e.querySelector("#dump-remote-video-hook-userid"),T=e.querySelector("#dump-remote-video-hook-duration"),C=e.querySelector("#dump-remote-video-hook-mediaType"),b=e.querySelector("#dump-remote-video-hook-button");b.onclick=()=>{let v=Number(T.value);if(v<1){this.addInfoToBanner(Mo,"duration at least 1s");return}let $=f.value;if(!$){this.addInfoToBanner(Mo,"please input user id");return}$==="*"&&this.inactiveButton(b);let N=C.value,X=`remote_${$}_${N==="sub"?"auxiliary":N}`,w,W,ce=y=>{if((y.userId===$||$==="*")&&y.streamType===N){if(this.addInfoToBanner(xr,`[${y.userId}_${N}] starting to dump video, duration: ${v}s`),{download:w,onDumpEnd:W}=this.dumpVideo(y.streamType==="sub"?"auxiliary":y.streamType,"remote",v,y.userId),!w)return;setTimeout(()=>{w==null||w(),W==null||W(),$!=="*"&&this._core.trtc.off(this._core.TRTC.EVENT.REMOTE_VIDEO_AVAILABLE,ce)},v*1e3)}};this._core.trtc.on(this._core.TRTC.EVENT.REMOTE_VIDEO_AVAILABLE,ce),this.addInfoToBanner(xr,`[${X}] waiting to dump video from ${$==="*"?"all remote users":`user ${$}`}, duration: ${v}s`)}}synchronizeLog(){this._core.loggerManager.getQueue().forEach(e=>{this.updateLog(e)})}isSupportDumpVideo(){return!this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED&&!this._core.rtcDectection.IS_SCRIPT_TRANSFORM_SUPPORTED?(this.addInfoToBanner(Mo,"Current browser does not support dumping video"),!1):!0}_addEventListener(i,e,t,r){i&&(i.addEventListener(e,t,r),this.eventMap.set(i,{type:e,listener:t}))}_removeEventListener(){this.eventMap.forEach(({type:i,listener:e},t)=>{t&&t.removeEventListener(i,e)}),this.eventMap.clear(),this._switchNode&&(this._switchNode.onmousedown=null,this._switchNode.ontouchmove=null,this._switchNode.ontouchstart=null,this._switchNode.ontouchend=null)}closeDialog(){this.uninstallEvents(),this._removeEventListener(),this._dialogNode&&(document.body.removeChild(this._dialogNode),this._dialogNode=null)}updateLog(i){var t;this._logList.push(i);let e=document.createElement("div");switch(e.classList.add(Pr),i.level){case 4:e.classList.add(Bf);break;case 2:e.classList.add(Uf);break;case 3:e.classList.add(Vf);break;case 1:e.classList.add(Pf);break;default:break}e.textContent=i.log,this._showLogType!=="all"&&!e.classList.contains(`${Pr}_${this._showLogType}`)&&(e.style.display="none"),(t=this._logContentNode)==null||t.appendChild(e),this.addHelper(e)}getDumpButtonClickHandler(i,e,t,r,o){if(!this.isSupportDumpVideo())return;let{download:n,onDumpEnd:a}=this.dumpVideo(r,o,t);if(n){this.addInfoToBanner(xr,`[${o}_${r}] starting to dump...`),this.inactiveButton(i,Re.DUMPING_BUTTON),t>0?setTimeout(()=>{n(),this.activeButton(i,Re.DUMP_BUTTON)},t*1e3):(this.activeButton(e),e.onclick=()=>{e.onclick=null,a==null||a(),n(),this.activeButton(i,Re.DUMP_BUTTON),this.inactiveButton(e)});return}this.addInfoToBanner(xr,`[${o}_${r}] waiting to dump...`);let d=({track:c})=>{if(c.room===this._core.room&&c.streamType===r){this.addInfoToBanner(xr,`[${o}_${r}] starting to dump`),o==="local"&&this._core.innerEmitter.off("104",d);let{download:h,onDumpEnd:u}=this.dumpVideo(r,o,t);if(!h)return;t>0?setTimeout(()=>{h(),this.activeButton(i,Re.DUMP_BUTTON)},t*1e3):(this.activeButton(e),e.onclick=()=>{e.onclick=null,u==null||u(),h(),this.activeButton(i,Re.DUMP_BUTTON),this.inactiveButton(e)})}};d.bind(this),o==="local"&&this._core.innerEmitter.on("104",d),this.inactiveButton(i,Re.DUMPING_BUTTON)}onSwitchClick(){if(this._hasMove){this._hasMove=!1;return}this._showDialog?this.hideDialog():(this._isMobile&&(this._maskNode.style.display="block"),this._panelNode.style.display="block",this._switchNode.style.display="none",this._showDialog=!0,this.logContentGoBottom())}onTabClick(i){var r,o,n,a,d,c,h;let e=i.target;(r=this._tabNodes)==null||r.forEach(u=>{u.classList.remove(os)}),e.classList.add(os);let t=e.getAttribute("data-tab");t==="log"?((a=(n=(o=this._dialogNode)==null?void 0:o.shadowRoot)==null?void 0:n.querySelector(`.${Lr}`))==null||a.classList.add(Nc),this._logContentNode.style.display="block",this._networkContentNode.style.display="none",this._dumpContentNode.style.display="none",this.logContentGoBottom()):((h=(c=(d=this._dialogNode)==null?void 0:d.shadowRoot)==null?void 0:c.querySelector(`.${Lr}`))==null||h.classList.remove(Nc),t==="network"?(this._networkContentNode.style.display="block",this._logContentNode.style.display="none",this._dumpContentNode.style.display="none"):t==="dump"&&(this._dumpContentNode.style.display="block",this._networkContentNode.style.display="none",this._logContentNode.style.display="none"))}onToptabClick(i){var o,n;let e=i.target;(o=this._toptabNodes)==null||o.forEach(a=>{a.classList.remove(os)}),e.classList.add(os),this._showLogType=e.getAttribute("data-type");let t=(n=this._logContentNode)==null?void 0:n.querySelectorAll(`.${Pr}`),r=`${Pr}_${this._showLogType}`;t.forEach(a=>{a.classList.contains(r)||this._showLogType==="all"?a.style.display="block":a.style.display="none"}),this.logContentGoBottom()}onExportClick(){let i=this._logList.reduce((n,a)=>`${n+a.log}
66
- `,""),e=new Blob([i],{type:"text/plain"}),t=document.createElement("a"),r=URL.createObjectURL(e);t.href=r;let o=`trtc_${this._core.room.sdkAppId===void 0?"EmptySdkAppId":this._core.room.sdkAppId}_${this._core.room.userId===void 0?"EmptyUserId":this._core.room.userId}_${this.formatStartDumpTime(+new Date)}.log`;t.download=o,t.style.display="none",document.body.appendChild(t),t.click(),URL.revokeObjectURL(r),document.body.removeChild(t),this.addInfoToBanner(xr,`Export success: The log file name is ${o}`),this._core.kvStatManager.addSuccessEvent({key:592703})}addInfoToBanner(i,e){var n,a;let t=(a=(n=this._dialogNode)==null?void 0:n.shadowRoot)==null?void 0:a.querySelector(`.${Dc}`),r=document.createElement("div");r.classList.add(Lf);let o=i===xr?"\u{1F7E9}":i===Mf?"\u{1F7E7}":"\u{1F7E5}";r.innerText=`${o} [${this.getCurrentTime()}] ${e}`,t.appendChild(r),t.scrollTop=t.scrollHeight}onUploadClick(){return I(this,null,function*(){var a,d;if(this.isUploading)return;this.isUploading=!0;let i=(d=(a=this._dialogNode)==null?void 0:a.shadowRoot)==null?void 0:d.querySelector("#trtc_upload");i.innerText="Uploading...",i==null||i.classList.add(".disable");let e=this._logList.reduce((c,h)=>`${c+h.log}
67
- `,""),t=new Blob([e],{type:"text/plain"}),r=new FormData;r.append("file",t,"trtc.log"),r.append("sdkAppId",`${this._core.room.sdkAppId||"EmptySdkAppId"}`),r.append("userId",`${this._core.room.userId||"EmptyUserId"}`),fetch("https://service.trtc.qcloud.com/api/uploadLogFile",{method:"POST",body:r}).then(c=>c.json()).then(c=>{this.addInfoToBanner(c.type,c.message_en||"Upload Failed: Please use local export"),this.isUploading=!1,this._log.info(c.message_en),this._core.kvStatManager.addSuccessEvent({key:592704})}).catch(()=>{this.addInfoToBanner(Mo,"Upload Failed: Please use local export"),this._log.info("Upload Failed: Please use local export"),this._core.kvStatManager.addFailedEvent({key:592704})}).finally(()=>{i.innerText=Re.UPLOAD_BUTTON,i==null||i.classList.remove(".disable"),this.isUploading=!1})})}onHideClick(){this.hideDialog()}onMaskClick(){this.hideDialog()}hideDialog(){this._isMobile&&(this._maskNode.style.display="none"),this._panelNode.style.display="none",this._switchNode.style.display="block",this._showDialog=!1}onBackTopClick(){var i,e,t;(t=(e=(i=this._dialogNode)==null?void 0:i.shadowRoot)==null?void 0:e.querySelector(`.${Lr}`))==null||t.scrollTo(0,0)}onGoBottomClick(){this.logContentGoBottom()}onClearLogClick(){this._logList=[],this._logContentNode&&(this._logContentNode.innerHTML="")}logContentGoBottom(){var e,t;let i=(t=(e=this._dialogNode)==null?void 0:e.shadowRoot)==null?void 0:t.querySelector(`.${Lr}`);i==null||i.scrollTo(0,i==null?void 0:i.scrollHeight)}onMouseDown(i){i.preventDefault(),this.switchPos.startX=i.pageX,this.switchPos.startY=i.pageY,document.onmousemove=this.onMouseMove.bind(this),document.onmouseup=this.onMouseUp.bind(this)}onMouseMove(i){i.cancelable&&i.preventDefault(),this._hasMove=!0;let e=this.switchPos.x-(i.pageX-this.switchPos.startX),t=this.switchPos.y-(i.pageY-this.switchPos.startY);[e,t]=this.getSafeAreaXY(e,t),this._switchNode.style.right=`${e}px`,this._switchNode.style.bottom=`${t}px`,this.switchPos.endX=e,this.switchPos.endY=t}onMouseUp(){this.switchPos.startX=0,this.switchPos.startY=0,this.switchPos.x=this.switchPos.endX,this.switchPos.y=this.switchPos.endY,document.onmousemove=null,document.onmouseup=null}onTouchStart(i){this.switchPos.startX=i.touches[0].pageX,this.switchPos.startY=i.touches[0].pageY,this.switchPos.isTouchEnd=!1}onTouchEnd(){this.switchPos.isTouchEnd&&(this.switchPos.startX=0,this.switchPos.startY=0,this.switchPos.isTouchEnd=!1,this.switchPos.x=this.switchPos.endX,this.switchPos.y=this.switchPos.endY)}onTouchMove(i){if(i.touches.length<=0)return;let e=i.touches[0].pageX-this.switchPos.startX,t=i.touches[0].pageY-this.switchPos.startY,r=Math.floor(this.switchPos.x-e),o=Math.floor(this.switchPos.y-t);[r,o]=this.getSafeAreaXY(r,o),this._switchNode.style.right=`${r}px`,this._switchNode.style.bottom=`${o}px`,this.switchPos.endX=r,this.switchPos.endY=o,this.switchPos.isTouchEnd=!0,i.cancelable&&i.preventDefault()}getSafeAreaXY(i,e){let t=Math.max(document.documentElement.offsetWidth,window.innerWidth),r=Math.max(document.documentElement.offsetHeight,window.innerHeight);return i+this._switchNode.offsetWidth>t&&(i=t-this._switchNode.offsetWidth),e+this._switchNode.offsetHeight>r&&(e=r-this._switchNode.offsetHeight),i<0&&(i=0),e<20&&(e=20),[i,e]}hitTest(i){return i===this._core.room}installEvents(){this._core.innerEmitter.on("264",this.handleLog,this),this._core.innerEmitter.on("53",this.handleLeaveSuccess,this),this._core.innerEmitter.on("27",this.handleJoinSuccess,this),this._core.trtc.on(this._core.TRTC.EVENT.STATISTICS,this.handleStatistics,this),this._core.trtc.on(this._core.TRTC.EVENT.REMOTE_AUDIO_AVAILABLE,this.handleRemoteAudioAvailable),this._core.trtc.on(this._core.TRTC.EVENT.REMOTE_AUDIO_UNAVAILABLE,this.handleRemoteAudioUnavailable),this._core.trtc.on(this._core.TRTC.EVENT.REMOTE_VIDEO_AVAILABLE,this.handleRemoteVideoAvailable),this._core.trtc.on(this._core.TRTC.EVENT.REMOTE_VIDEO_UNAVAILABLE,this.handleRemoteVideoUnavailable),this._core.room.on("dump",this.handleDumpFromScriptTransform,this)}uninstallEvents(){this._core.innerEmitter.off("264",this.handleLog,this),this._core.innerEmitter.off("53",this.handleLeaveSuccess,this),this._core.innerEmitter.off("27",this.handleJoinSuccess,this),this._core.trtc.off(this._core.TRTC.EVENT.STATISTICS,this.handleStatistics,this),this._core.trtc.off(this._core.TRTC.EVENT.REMOTE_AUDIO_AVAILABLE,this.handleRemoteAudioAvailable),this._core.trtc.off(this._core.TRTC.EVENT.REMOTE_AUDIO_UNAVAILABLE,this.handleRemoteAudioUnavailable),this._core.trtc.off(this._core.TRTC.EVENT.REMOTE_VIDEO_AVAILABLE,this.handleRemoteVideoAvailable),this._core.trtc.off(this._core.TRTC.EVENT.REMOTE_VIDEO_UNAVAILABLE,this.handleRemoteVideoUnavailable),this._core.room.off("dump",this.handleDumpFromScriptTransform,this)}handleDumpFromScriptTransform(i){if(!i.isAudio)if(i.userId){let e=this.dumpRemoteVideoMap[`${i.userId}-${i.streamType}`];e&&(e.data.push(i.data),e.duration>0&&Date.now()-e.startTimestamp>e.duration*1e3&&e.onDumpEnd())}else{let e=i.streamType==="main"?"main":"sub",t=this.dumpLocalVideoMap[e];t&&(t.data.push(i.data),t.duration>0&&Date.now()-t.startTimestamp>t.duration*1e3&&t.onDumpEnd())}}inactiveButton(i,e){i.disabled=!0,e&&(i.innerText=e)}activeButton(i,e){i.disabled=!1,e&&(i.innerText=e)}handleLog(i){this.updateLog(i.log)}addHelper(i){let e=/((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}/g,t=bf,r=i.innerText;r=r.split(`
68
- `).map(o=>{if(o=o.replace(/</g,"&lt;").replace(/>/g,"&gt;"),o.includes("failed"))return o.includes("on autoplay-failed")?o:`<span class='red' style="background:red; color:#fff;">${o}</span>`;if(o.includes("clientIp:")){let n=o.match(e);return n==null||n.forEach(a=>{o=o.replace(a,`<a href="javascript:void(0);" target=""><span class='ip' style="background:#e1dfdf">${a}</span></a>`)}),o}return o.includes("URL of current page")&&(o=o.replace(/URL of current page: (.+)/,'URL of current page: <a href="$1">$1</a>')),o}).join(`
69
- `),t.forEach(o=>{if(i.innerText.includes(o)){let n="";n=typeof ss[o].tips=="function"?ss[o].tips(i.innerText):ss[o].tips,r=r.replace(new RegExp(`${yf(o)}`,"gi"),`<span class="${na}" style="background:${ss[o].color||"#e1dfdf"}; color: ${ss[o].textColor||"#000"}">${o}
70
- <span class="tooltiptext tooltip-top">${n}</span>
71
- </span>`)}}),i.innerHTML=r}getCurrentTime(){let i=new Date,e=this.pad(i.getHours()),t=this.pad(i.getMinutes()),r=this.pad(i.getSeconds());return`${e}:${t}:${r}`}dumpVideo(i,e,t,r){let o=Date.now(),n=this.formatStartDumpTime(o),a=[],d=`${e}_${r}_${i}`,c=()=>{if(a.length===0){this.addInfoToBanner(Mo,`[${d}] dump failed. Reason: data is empty`);return}let u;i==="main"?u="video":i==="auxiliary"&&(u="screen");let m=URL.createObjectURL(new Blob(a)),p=document.createElement("a"),g=e==="local"?`local_${u}_${n}.h264`:`remote-${r}_${u}_${n}.h264`;p.href=m,p.download=g,p.style.display="none",document.body.appendChild(p),p.click(),URL.revokeObjectURL(m),p.remove(),this.addInfoToBanner(xr,`[${d}] dump success. File name is: ${g}`)},h;if(e==="local"){if(!this.hasLocalTrack(i,"video"))return{};h=()=>{delete this.dumpLocalVideoMap[i==="auxiliary"?"sub":"main"]},this.dumpLocalVideoMap[i==="auxiliary"?"sub":"main"]={startTimestamp:o,data:a,duration:t,onDumpEnd:h}}if(e==="remote"&&r){if(h=()=>{delete this.dumpRemoteVideoMap[`${r}-${i}`]},this.dumpRemoteVideoMap[`${r}-${i}`])return this.addInfoToBanner(Mf,`[${d}] dump already exists.`),{};this.dumpRemoteVideoMap[`${r}-${i}`]={startTimestamp:o,data:a,duration:t,onDumpEnd:h}}return{download:c,onDumpEnd:h}}hasLocalTrack(i,e){for(let t of this._core.room.localTracks)if(t.streamType===i&&t.kind===e)return!0;return!1}dumpAudio(i,e,t){var $,N,X;let r=null,o=[],n=[],a=[],d=[],c=[],h=[],u=new AbortController,m=Date.now(),p=this.formatStartDumpTime(m),g=this._core.room.audioManager._localAudioPipline,f,T,C=({data:w})=>{a[0]=a[0]?a[0].concat(w):[w]},b=({room:w,data:W,type:ce})=>{if(this.hitTest(w)&&ce==="dump"){if(d[0]=d[0]?d[0].concat(W.captureInput):W.captureInput,d[1]=d[1]?d[1].concat(W.playInput):W.playInput,!f)f=W.startTime,T=W.startTime;else{let G=W.startTime-f,E=W.endTime-W.startTime;if(G>30||E>30){let k=function(ye){if(typeof ye!="number"||ye<0)return"0\u6BEB\u79D2";let te=[],Ce=Math.floor(ye/6e4),B=ye%6e4;Ce>0&&te.push(`${Ce}\u5206`);let U=Math.floor(B/1e3);return B%=1e3,(U>0||te.length)&&te.push(`${U}\u79D2`),(B>0||!te.length)&&te.push(`${B}\u6BEB\u79D2`),te.join("")};var y=k;let J=W.startTime-T,_e=f-T;h.push(`${W.startTime} ${k(J)}~${k(_e)} ${G} ${E}`)}f=W.startTime}c.push(W.startTime)}};if(i==="local"){let{sampleRate:w}=this._core.room.audioManager.audioContext;if(!this._core.room.audioManager.hasAudioTrack)return{};if(g!=null&&g.source.node){this._core.trtc.on(oe.AUDIO_FRAME,C);let{channelCount:W}=g.source.node;n.push(`local_audio_raw_capture-${(($=this._core.room)==null?void 0:$.audioFrameSampleRate)||w}-${W}`)}if((N=g==null?void 0:g.audioProcessor)!=null&&N.node){this._core.trtc.updatePlugin("AudioProcessor",{enableDump:!0}),this._core.innerEmitter.on("265",b),o.push(g.audioProcessor.node);let{channelCount:W}=g.audioProcessor.node;n.push(`local_audio_audioProcessor_processed-${w}-${W}`)}if(g!=null&&g.denoiser.node){o.push(g.denoiser.node);let{channelCount:W}=g.denoiser.node;n.push(`local_audio_denoiser_processed-${w}-${W}`)}if(this._core.room.audioManager.mixWeight>1){let W=this._core.room.audioManager.audioContext.createMediaStreamSource(g.stream);W.channelCount=1,o.push(W);let{channelCount:ce}=W;n.push(`local_audio_destination-${w}-${ce}`)}}else if(i==="remote"&&t!==void 0){let w=(X=this._core.room.remotePublishedUserMap.get(t))==null?void 0:X.remoteAudioTrack;if(!(w!=null&&w.mediaTrack))return{};let W=this._core.createAudioNode(w.mediaTrack);o.push(W),n.push(`remote_${t}`)}let v=()=>I(this,null,function*(){var G,E,J;let w=new xf.default;for(let _e=0;_e<n.length;_e++)w.file(`${n[_e]}.pcm`,new Blob(a[_e]));if((G=d==null?void 0:d[0])!=null&&G.length&&w.file("audioProcessor_input_capture.pcm",new Blob(d[0])),(E=d==null?void 0:d[1])!=null&&E.length&&w.file("audioProcessor_input_playback.pcm",new Blob(d[1])),c!=null&&c.length){let _e=c.reduce((k,ye)=>`${k}
72
- ${ye}`);w.file("audioProcessor_handle_timestamp.txt",new Blob([_e]))}if(h!=null&&h.length){let _e=h.reduce((k,ye)=>`${k}
73
- ${ye}`);w.file("audioProcessor_big_gap_data.txt",new Blob([_e]))}let W=yield w.generateAsync({type:"blob"}),ce=URL.createObjectURL(W),y=document.createElement("a");y.href=ce,y.download=`${i}-audio-${p}.zip`,y.style.display="none",document.body.appendChild(y),y.click(),URL.revokeObjectURL(ce),y.remove(),this.addInfoToBanner(xr,`Dump success, file name is: ${i}-${p}.zip`),this._core.trtc.off(oe.AUDIO_FRAME,C),this._core.innerEmitter.off("265",b),(J=g==null?void 0:g.audioProcessor)!=null&&J.node&&this._core.trtc.updatePlugin("AudioProcessor",{enableDump:!1}),r&&clearTimeout(r),u.abort("download")});return e>0&&(r=Number(setTimeout(()=>{u.abort("timeout")},e*1e3))),o.length>0&&this._core.startGetPCM(o).then(w=>w.pipeTo(new WritableStream({write(W){W.forEach((ce,y)=>{y=i==="local"?y+1:y,a[y]=a[y]?a[y].concat(ce[0]):[ce[0]]})}}),u).catch(()=>v)),{download:v,onDumpEnd:()=>{u.abort("timeout")}}}formatStartDumpTime(i){let e=new Date(i),t=e.getFullYear(),r=this.pad(e.getMonth()+1),o=this.pad(e.getDate()),n=this.pad(e.getHours()),a=this.pad(e.getMinutes()),d=this.pad(e.getSeconds()),c=-e.getTimezoneOffset(),h=Math.floor(Math.abs(c)/60),u=Math.abs(c)%60,m=c>=0?"+":"-";return`${t}-${r}-${o}T${n}-${a}-${d}${m}${this.pad(h)}-${this.pad(u)}`}};q([ia(300,()=>"export")],aa.prototype,"onExportClick",1),q([ia(300,()=>"upload")],aa.prototype,"onUploadClick",1);var Hf=aa;var ES=0;var xo=class xo{constructor(i){this.core=i;l(this,"_core");l(this,"log");l(this,"dumpLocalVideoMap",{});l(this,"dumpRemoteVideoMap",{});l(this,"dialog");this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${++ES}`}),this.log.info("created")}getName(){return xo.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(i){switch(i){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return I(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(){}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return I(this,null,function*(){try{this.dialog=new Hf(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(i){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(i))}})}closeDebugDiaLog(){var i;(i=this.dialog)==null||i.closeDialog(),this.dialog=null}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):Oh,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):wh,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:i,mediaType:e}){return Oh({frame:i,onDump:()=>{if(!e)return;let t=e===2?"sub":"main",r=this.dumpLocalVideoMap[t];r&&(r.data.push(i.data.slice(0)),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}decodeVideo({frame:i,track:e}){return wh({frame:i,onDump:()=>{if(!e)return;let t=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];t&&(t.data.push(i.data.slice(0)),t.duration>0&&Date.now()-t.startTimestamp>t.duration*1e3&&t.onDumpEnd())}})}loadScript(i){return new Promise((e,t)=>{this.log.info(`loading debug dialog from ${i}`);let r=document.createElement("script");r.type="text/javascript",r.onload=e,r.onerror=t,r.crossOrigin="anonymous",r.src=i,document.head.append?document.head.append(r):document.getElementsByTagName("head")[0].appendChild(r)})}};l(xo,"Name","Debug"),l(xo,"autoStart",!0),q([Gt({settings:{timeout:3e3,retries:3},onError(i,e,t){var r;(r=i==null?void 0:i.message)!=null&&r.includes("timeout")?e():t(i)}})],xo.prototype,"loadScript",1);var kc=xo;var Gf=s=>{switch(s){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},Oc=class{constructor(i,e,t){l(this,"trackDoneOB");l(this,"startOB");l(this,"stopOB");l(this,"inputFrameCount",0);l(this,"decodedFrameCount",0);l(this,"type","auto");l(this,"config");l(this,"decoder");l(this,"_decodeSink");let{kvStatManager:r,trtc:o}=i;this.config=t.config,this.trackDoneOB=We(e,fe.INIT),this.stopOB=Vt(),this.startOB=Vt(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let n=Vt(),a=d=>{let c=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),He(c,St(this.stopOB),it(()=>{},h=>{e.log.error(h),r.addFailedEvent({key:Gf(this.type),error:h}),d>4?this.startOB.error(h):this.startOB.next(d+1)})),He(c,Dr(1),oh(Qn))};He(this.startOB,qn(0),Ao(a),St(this.stopOB),it(()=>{e.player.setOutput(),n.next("STARTED")},d=>{n.next("FAILED")},()=>{r.addSuccessEvent({key:Gf(this.type)}),r.addSuccessEvent({key:504702})}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.startOB.next(0)}close(i){this.stopOB.next(i)}pipe(i){return Nr()(e=>I(this,null,function*(){this._decodeSink=e,e.defer(()=>{var r;(r=this.decoder)==null||r.close()});let{type:t}=this;try{switch(t){case"webCodecs":this.decoder=new AudioDecoder({error:r=>{i.log.error(r),e.error(4)},output:r=>{this.decodedFrameCount++,e.next(r),i.player.write(r)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(r){i.log.error(r),e.error(t==="webCodecs"?2:6)}}))}decodeFrame(i){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:i.data,timestamp:i.timestamp,type:"key"}))}},TS={type:"object"},ca=class ca{constructor(i){this.core=i;l(this,"log");l(this,"contextMap",new Map);l(this,"decodeProcessorMap",new WeakMap);this.log=i.log.createChild({id:`${this.getAlias()}`})}getAlias(){return ca.Name}getGroup(i){return i.track.userId+i.track.streamType}getName(){return ca.Name}getValidateRule(i){return TS}start(i){let{track:e}=i;this.decodeProcessorMap.set(e,this.decode(i)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:t,track:r})=>this.decodeProcessorMap.has(r)?this.decodeProcessorMap.get(r)({frame:t,track:r}):t,type:3})}decode(i){return({frame:e,track:t})=>{if(t!==i.track)return e;if(this.contextMap.has(t))return this.contextMap.get(t).decodeFrame(e);let r=new Oc(this.core,t,i);return He(r.trackDoneOB,Dr(1),it(()=>{this.core.clearStarted(this,this.getGroup(i)),this.stop({track:t})})),this.contextMap.set(t,r),r.decodeFrame(e)}}stop({track:i}){let e=this.contextMap.get(i);e&&(e.close("stop"),this.contextMap.delete(i),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(i){let e=this.contextMap.get(i.track);if(e){if(i.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(i.track,new Oc(this.core,i.track,i))}}};l(ca,"Name","TRTCAudioDecoder");var la=ca;var Wf=0,ua=new Set,At=null;Zc(Af);uo.checkStorage();au();var SS={RtcError:ue,ErrorCode:me,ErrorCodeDictionary:li},Se=class Se extends zf.EventEmitter{constructor(e,t){super();l(this,"_room");l(this,"_eventListened",new Set);l(this,"_localVideoTrack",null);l(this,"_localAudioTrack",null);l(this,"_localScreenTrack",null);l(this,"_localScreenAudioTrack",null);l(this,"_localVideoConfig",null);l(this,"_localScreenConfig",null);l(this,"_localAudioConfig",null);l(this,"_remoteVideoConfigMap",new Map);l(this,"_remoteAudioConfigMap",new Map);l(this,"_remoteAudioVolumeMap",new Map);l(this,"_remoteAudioMuteMap",new Map);l(this,"_mediaTrackMap",new WeakMap);l(this,"_log",j.createLogger({id:`t${++Wf}`}));l(this,"_plugins",new Map);l(this,"_networkQuality",null);l(this,"_speakerId");l(this,"_getPCMAbortCtrl");this._room=new e(K({logger:this._log,frameWorkType:Se.frameWorkType},t)),this._room.videoDecodeFallbackType=t.videoDecodeFallback,this._log.info(`create() ${JSON.stringify(t,(r,o)=>r==="plugins"?o.map(n=>n.Name):o)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(r){return this._room.audioManager.dump(r)}}}),t.plugins&&t.plugins.forEach(r=>{this._use(r,t.assetsPath)}),this._use(_c,t.assetsPath),this._use(pc,t.assetsPath),this._use(Ec,t.assetsPath),this._use(la,t.assetsPath||ya),this._use(kc),t.enableSEI&&Mn&&this._use(Tc),this._room.on("audio-volume",r=>{!r.find(o=>o.userId==="")&&this._localAudioTrack&&r.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100)}),t.volumeType===1&&r.forEach(o=>{var a;let n=o.userId===""?this._localAudioTrack:(a=this.room.remotePublishedUserMap.get(o.userId))==null?void 0:a.remoteAudioTrack;n&&(o.volume=n.dbVolume)}),this.emit(oe.AUDIO_VOLUME,{result:r.sort((o,n)=>n.volume-o.volume)})}),this._room.videoManager.on("error",r=>{this._log.error(new ue({code:me.OPERATION_FAILED,extraCode:5504,message:r.message,originError:r}))}),this._listenEvents(),this._initActiveSpeaker(),Sf(this,"trtc")}static create(e){}static _create(e,t){af();let r=new Se(e,t||{});return ua.add(r),r}get room(){return this._room}_listenEvents(){vt(this,this._room).add("peer-join",e=>{let{userId:t}=e;this.emit(oe.REMOTE_USER_ENTER,{userId:t})}).add("peer-leave",e=>{this.emit(oe.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(oe.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(oe.ERROR,ue.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(oe.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=ne(K({},e),{uplinkRTT:Math.min(e.uplinkRTT,sn),downlinkRTT:Math.min(e.downlinkRTT,sn)});this.emit(oe.NETWORK_QUALITY,t)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{vt(r,r).add("player-state-changed",o=>{let n=ne(K({},o),{userId:e.userId});r.kind===S.VIDEO&&(n.streamType=is(r.streamType)),this.emit(r.kind===S.AUDIO?oe.AUDIO_PLAY_STATE_CHANGED:oe.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",o=>{o.getCode()===H.PLAY_NOT_ALLOWED&&this.emit(oe.AUTOPLAY_FAILED,{userId:r.userId,resume:()=>r.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{at(r)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:t})=>{let{userId:r}=t,o=e.audioAvailable,n=e.videoAvailable,{audioAvailable:a,videoAvailable:d}=t;a||this._remoteAudioConfigMap.delete(r),d||this._removeRemoteVideoConfig(r,"main"),t.hasAuxiliary||this._removeRemoteVideoConfig(r,"sub"),n!==d&&(d?this._onVideoAvailable({userId:r,streamType:"main"}):this._onVideoUnavailable({userId:r,streamType:"main"}),this.emit(d?oe.REMOTE_VIDEO_AVAILABLE:oe.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"main"})),o!==a&&(a?this._onAudioAvailable({userId:r}):this._onAudioUnavailable({userId:r,muteState:t}),this.emit(a?oe.REMOTE_AUDIO_AVAILABLE:oe.REMOTE_AUDIO_UNAVAILABLE,{userId:r})),e.hasAuxiliary!==t.hasAuxiliary&&(t.hasAuxiliary?this._onVideoAvailable({userId:r,streamType:"sub"}):this._onVideoUnavailable({userId:r,streamType:"sub"}),this.emit(t.hasAuxiliary?oe.REMOTE_VIDEO_AVAILABLE:oe.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"sub"}))}).add("sei-message",e=>{this.emit(oe.SEI_MESSAGE,ne(K({},e),{streamType:is(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(oe.ERROR,new ue({code:me.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var o,n,a,d,c,h,u;let t={2:"big",3:"small",7:"sub"},r={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((o=e.msg_down_stream_info[0])==null?void 0:o.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((a=this._networkQuality)==null?void 0:a.downlinkRTT)||0,sn),upLoss:((d=this._networkQuality)==null?void 0:d.uplinkLoss)||0,downLoss:((c=this._networkQuality)==null?void 0:c.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((h=e.msg_up_stream_info.msg_audio_status)==null?void 0:h.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((u=e.msg_up_stream_info.msg_audio_status)==null?void 0:u.uint32_audio_level)||0)/ai},video:e.msg_up_stream_info.msg_video_status.filter(m=>t[m.uint32_video_stream_type]).map(m=>({bitrate:(m.uint32_video_codec_bitrate||0)/1e3,width:m.uint32_video_width,height:m.uint32_video_height,frameRate:m.uint32_video_enc_fps,videoType:t[m.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(m=>({userId:m.msg_user_info.str_identifier,audio:{bitrate:(m.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(m.msg_audio_status.uint32_audio_level||0)/ai},video:m.msg_video_status.map(p=>({bitrate:(p.uint32_video_codec_bitrate||0)/1e3,width:p.uint32_video_width,height:p.uint32_video_height,frameRate:p.uint32_video_dec_fps,videoType:t[p.uint32_video_stream_type]}))}))};this.emit(oe.STATISTICS,r)}).add("custom-message",e=>{this.emit(oe.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(oe.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(oe.FIRST_VIDEO_FRAME,ne(K({},e),{streamType:is(e.streamType)}))}),vt(this,ft).add("audioInputAdded",e=>{this.emit(oe.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(oe.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(oe.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(oe.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>I(this,null,function*(){if(this.emit(oe.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),At&&At.deviceId===rn){let t=(yield Yr()).find(r=>r.deviceId===rn);t&&At.groupId!==t.groupId&&(At=t,this.emit(oe.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>I(this,null,function*(){this.emit(oe.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield Yr())[0];if(!t||!At||At.groupId===t.groupId)return;let r=At.deviceId===e.deviceId,o=At.deviceId===rn&&At.deviceId===t.deviceId;(r||o)&&(At=t,this.emit(oe.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}))}use(e){let t,r;"plugin"in e?(t=e.plugin,r=e.assetsPath):t=e,this._use(t,r||ya)}_use(e,t){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let o=new e(Tf.call(this,{TRTC:Se,room:this._room,errorModule:SS,assetsPath:t}));this._plugins.set(e.Name,o),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return I(this,null,function*(){var d,c;let{scene:t="rtc",enableAutoPlayDialog:r=!0,autoReceiveAudio:o=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!Oe(e.proxy)&&e.proxy.turnServer&&((c=(d=this._room).setTurnServer)==null||c.call(d,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=r,this._room.autoReceiveAudio=o,this._room.autoReceiveVideo=n,Qe(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let a={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,t,Se.frameWorkType),this._checkTrackToPublish(),Ch.start()})}exitRoom(){return I(this,null,function*(){return yield this._exitRoom()})}switchRole(e,t){return I(this,null,function*(){t!=null&&t.privateMapKey&&(this._room.privateMapKey=t.privateMapKey),t!=null&&t.latencyLevel&&(this._room.latencyLevel=t.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){at(this),this.removeAllListeners(),this._room.destroy(),ua.delete(this),ua.size===0&&Ch.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var t;return(t=e.destroy)==null?void 0:t.call(e)}),this._plugins.clear(),x.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return I(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:t=!0,mute:r,option:o}=e,n=new ti(this._room.audioManager),a={},d={muted:!0};o&&(L(o.microphoneId)?L(o.audioTrack)||(a.customSource=o.audioTrack):a.deviceId=o.microphoneId,o&&De(o.captureVolume)&&n.setCaptureVolume(o.captureVolume),L(o.profile)||(Oe(o.profile)?Na[o.profile]&&n.setProfile(Na[o.profile]):n.setProfile(o.profile)),De(o.earMonitorVolume)&&(d.muted=!(o.earMonitorVolume>0),d.volume=o.earMonitorVolume),L(o.echoCancellation)||(n.profile.echoCancellation=o.echoCancellation),L(o.noiseSuppression)||(n.profile.noiseSuppression=o.noiseSuppression),L(o.autoGainControl)||(n.profile.autoGainControl=o.autoGainControl)),n.on("5",c=>{this.emit(oe.ERROR,new ue({code:me.DEVICE_ERROR,extraCode:5309,messageParams:{error:c}}))}),n.on("2",c=>{this.emit(oe.DEVICE_CHANGED,{type:"microphone",action:"active",device:c})}),n.on("4",c=>{let h;c.error&&(h=ue.convertFrom(c.error)),this.emit(oe.PUBLISH_STATE_CHANGED,ne(K({},c),{error:h}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),L(r)||n.setMute(r),vt(n,n).add("player-state-changed",c=>{this.emit(oe.AUDIO_PLAY_STATE_CHANGED,ne(K({},c),{userId:""}))}),this.listeners(oe.AUDIO_FRAME).length>0&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(c=>{this.emit(Se.EVENT.AUDIO_FRAME,{data:c})})),this._getPCMAbortCtrl&&n.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(c=>{this.emit(Se.EVENT.AUDIO_FRAME,{data:c})}))}),t&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=ne(K({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:d,track:n})})}updateLocalAudio(e){return I(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:t,mute:r,option:o}=e,n={};o&&(o.microphoneId?yield this._localAudioTrack.switchDevice(o.microphoneId):L(o.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(o.audioTrack)),L(o.captureVolume)||this._localAudioTrack.setCaptureVolume(o.captureVolume),L(o.earMonitorVolume)||(n.muted=!(o.earMonitorVolume>0),n.volume=o.earMonitorVolume),yield this._localAudioTrack.update3A(o)),this._room.isJoined&&!L(t)&&(t&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!t&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),L(r)||this._localAudioTrack.setMute(r),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),Li(this._localAudioConfig,e)})}stopLocalAudio(){return I(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),at(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("stopLocalAudio"),delete this._getPCMAbortCtrl))})}startLocalVideo(){return I(this,arguments,function*(e={publish:!0,view:null}){if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:t,publish:r=!0,mute:o,option:n}=e,a=new Nt(this._room.videoManager),d={},c={};Qe(n==null?void 0:n.avoidCropping)&&(a.avoidCropping=n.avoidCropping),n&&(n.cameraId?d.deviceId=n.cameraId:L(n.useFrontCamera)?L(n.videoTrack)||(d.customSource=n.videoTrack):d.facingMode=n.useFrontCamera?S.FACING_MODE_USER:S.FACING_MODE_ENVIRONMENT,n.qosPreference&&(d.contentHint=ta(n.qosPreference)),L(n.profile)||(Oe(n.profile)?si[n.profile]&&a.setProfile(si[n.profile]):a.setProfile(n.profile)),L(n.fillMode)||(c.objectFit=n.fillMode),L(n.mirror)||(c.mirror=n.mirror),L(n.small)||(kn()?Oe(n.small)?a.small=si[n.small]:n.small===!0?a.small=si["120p"]:a.small=n.small:this._log.warn("small stream is not supported"))),a.once("first-video-frame",h=>{this.emit(oe.FIRST_VIDEO_FRAME,ne(K({},h),{streamType:is(h.streamType)}))}),a.on("5",h=>{this.emit(oe.ERROR,new ue({code:me.DEVICE_ERROR,extraCode:5308,messageParams:{error:h}}))}),a.on("2",h=>{this.emit(oe.DEVICE_CHANGED,{type:"camera",action:"active",device:h})}),a.on("4",h=>{let u;h.error&&(u=ue.convertFrom(h.error)),this.emit(oe.PUBLISH_STATE_CHANGED,ne(K({},h),{error:u}))}),this._listenOutputTrackChanged(a),yield a.capture(d),L(o)||(yield a.setMute(o)),vt(a,a).add("player-state-changed",h=>{this.emit(oe.VIDEO_PLAY_STATE_CHANGED,ne(K({},h),{userId:"",streamType:"main"}))}),r&&this._room.isJoined&&this._room.publish(a).catch(()=>{}),this._localVideoTrack=a,this._localVideoConfig=ne(K({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:c,track:a})})}updateLocalVideo(e){return I(this,null,function*(){if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:t,publish:r,mute:o,option:n}=e,a={};if(n)if(L(n.profile)||(Oe(n.profile)?si[n.profile]&&this._localVideoTrack.setProfile(si[n.profile]):this._localVideoTrack.setProfile(n.profile),(!n.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(n.cameraId))&&L(n.useFrontCamera)&&this._localVideoTrack.applyProfile()),n.cameraId?yield this._localVideoTrack.switchDevice(n.cameraId):L(n.useFrontCamera)?L(n.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(n.videoTrack)):yield this._localVideoTrack.switchDevice(n.useFrontCamera?S.FACING_MODE_USER:S.FACING_MODE_ENVIRONMENT),L(n.fillMode)||(a.objectFit=n.fillMode),L(n.mirror)||(a.mirror=n.mirror),n.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(ta(n.qosPreference)),n.small){let d=!this._localVideoTrack.small;kn()?(n.small===!0?this._localVideoTrack.small=si["120p"]:Oe(n.small)?this._localVideoTrack.small=si[n.small]:this._localVideoTrack.small=n.small,this._room.videoManager.update(),d&&this._room.enableSmall(!0)):this._log.warn("small stream is not supported")}else n.small===!1&&this._localVideoTrack.small&&(delete this._localVideoTrack.small,this._room.videoManager.update(),this._room.enableSmall(!1));this._room.isJoined&&!L(r)&&(r&&!this._localVideoConfig.publish&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._localVideoConfig.publish&&!r&&this._room.unpublish(this._localVideoTrack).catch(()=>{})),L(o)||(yield this._localVideoTrack.setMute(o)),yield this._updateVideoPlayOption({view:t,playOption:a,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),Li(this._localVideoConfig,e)})}stopLocalVideo(){return I(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),at(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return I(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:t=null,publish:r=!0,option:o}=e,n=new jt(this._room.videoManager);n.on("4",u=>{let m;u.error&&(m=ue.convertFrom(u.error)),this.emit(oe.PUBLISH_STATE_CHANGED,ne(K({},u),{error:m}))}),n.once("first-video-frame",u=>{this.emit(oe.FIRST_VIDEO_FRAME,ne(K({},u),{streamType:is(u.streamType)}))}),this._listenOutputTrackChanged(n),e.streamType==="main"&&(n.mediaType=4);let a=null,d={},c={};o&&(L(o.profile)||(Oe(o.profile)?Da[o.profile]&&n.setProfile(Da[o.profile]):n.setProfile(o.profile)),o.systemAudio&&(d.systemAudio=!0,d.echoCancellation=o.echoCancellation,d.noiseSuppression=o.noiseSuppression,d.autoGainControl=o.autoGainControl),L(o.fillMode)||(c.objectFit=o.fillMode),o.videoTrack&&(d.videoTrack=o.videoTrack),o.audioTrack&&(d.audioTrack=o.audioTrack),o.captureElement&&(d.captureElement=o.captureElement),o.preferDisplaySurface&&(d.preferDisplaySurface=o.preferDisplaySurface),o.qosPreference&&(d.contentHint=ta(o.qosPreference)));let h=yield n.capture(d);if(n.mediaTrack.addEventListener(S.ENDED,()=>{this._stopScreenShare(),this.emit(oe.SCREEN_SHARE_STOPPED)}),h.getAudioTracks()[0]&&(a=new Yi(this._room.audioManager),yield a.setInputMediaStreamTrack(h.getAudioTracks()[0]),this._speakerId&&a.setAudioOutput(this._speakerId)),vt(n,n).add("player-state-changed",u=>{this.emit(oe.VIDEO_PLAY_STATE_CHANGED,ne(K({},u),{userId:"",streamType:"sub"}))}),r&&this._room.isJoined){let u=[n];a&&u.push(a),this._room.publish(...u).catch(()=>{})}this._localScreenTrack=n,this._localScreenAudioTrack=a,this._localScreenConfig=ne(K({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:c,track:n})})}updateScreenShare(e){return I(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:t,publish:r,option:o}=e,n={};if(o&&(L(o.fillMode)||(n.objectFit=o.fillMode),o.qosPreference)){let a=ta(o.qosPreference);this._localScreenTrack.setContentHint(a)}this._room.isJoined&&!L(r)&&(r&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!r&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),yield this._updateVideoPlayOption({view:t,playOption:n,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),Li(this._localScreenConfig,e)})}stopScreenShare(){return I(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return I(this,null,function*(){let{view:t,userId:r,streamType:o,option:n}=e,a=`${r}_${o}`;if(this._remoteVideoConfigMap.has(a)){this._log.warn(`remote video has already started. userId:${r}, streamType:${o}`);return}let d=this._room.remotePublishedUserMap.get(r);if(!d)return;let c={},h=o==="main"?d.remoteVideoTrack:d.remoteAuxiliaryTrack;this._listenOutputTrackChanged(h),n&&(L(n.fillMode)||(c.objectFit=n.fillMode),L(n.mirror)||(c.mirror=n.mirror),L(n.poster)||(c.poster=n.poster),c.canvasRender=n.canvasRender,o==="main"&&!L(n.small)&&(!d.remoteVideoTrack.isSubscribing&&!d.remoteVideoTrack.isSubscribed&&d.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,h.user))),yield this._room.subscribe(h),yield this._enableVideoDecodeFallback(h,o),yield this._updateVideoPlayOption({view:t,playOption:c,track:h}),this._emitTrackEvent(h),this._remoteVideoConfigMap.set(a,{config:e}),n&&!L(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:h,view:t,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return I(this,null,function*(){var T,C;let{view:t,userId:r,streamType:o,option:n}=e,a=`${r}_${o}`,d=this._remoteVideoConfigMap.get(a);if(!d||!this._room.remotePublishedUserMap.has(r))return;let c={};n&&(L(n.fillMode)||(c.objectFit=n.fillMode),L(n.mirror)||(c.mirror=n.mirror));let h=null,u=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(u!=null&&u.muteState.hasVideo)&&(h=u.remoteVideoTrack),o==="sub"&&(u!=null&&u.muteState.hasAuxiliary)&&(h=u.remoteAuxiliaryTrack),!h)return;let{config:m}=d;o==="main"&&n&&!L(n.small)&&this._room.changeType(n.small,h.user),yield this._updateVideoPlayOption({view:t,playOption:c,track:h,prevConfig:m}),Li(m,e);let p=L(n==null?void 0:n.receiveWhenViewVisible)?(T=m.option)==null?void 0:T.receiveWhenViewVisible:n.receiveWhenViewVisible,g=L(t)?m.view:t,f=L(n==null?void 0:n.viewRoot)?(C=m.option)==null?void 0:C.viewRoot:n.viewRoot;this._observeView({remoteTrack:h,view:g,receiveWhenViewVisible:p,viewRoot:f})})}stopRemoteVideo(e){return I(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return I(this,null,function*(){let r=[],o=this._room.remotePublishedUserMap.get(e.userId);if(o){let{muteState:n,remoteVideoTrack:a,remoteAuxiliaryTrack:d}=o;e.streamType==="main"&&(a.stop(),n.hasVideo&&r.push(a)),e.streamType==="sub"&&(d.stop(),n.hasAuxiliary&&r.push(d))}for(let n of r)t&&(yield this._room.unsubscribe(n),this._mediaTrackMap.delete(n.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,t){let r=`${e}_${t}`,o=this._remoteVideoConfigMap.get(r);o&&o.observer&&o.observer.disconnect(),this._remoteVideoConfigMap.delete(r)}muteRemoteAudio(e,t){return I(this,null,function*(){this._remoteAudioMuteMap.set(e,t);try{if(e==="*")if(t)yield this._stopRemoteAudio({userId:e});else{let r=[...this._room.remotePublishedUserMap.values()];for(let o of r)o.muteState.hasAudio&&!this._remoteAudioConfigMap.has(o.userId)&&(yield this._startRemoteAudio({userId:o.userId}))}else t?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(r){throw this._remoteAudioMuteMap.delete(e),r}})}setRemoteAudioVolume(e,t){if(e==="*"){let r=[...this._room.remotePublishedUserMap.values()];for(let o of r)this._remoteAudioVolumeMap.set(o.userId,t),o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:o.remoteAudioTrack})}else if(e){let r=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,t),r&&r.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:r.remoteAudioTrack})}}startPlugin(e,t){return I(this,null,function*(){return e.start(t)})}updatePlugin(e,t){return I(this,null,function*(){return e.update(t)})}stopPlugin(e,t){return I(this,null,function*(){return e.stop(t)})}enableAudioVolumeEvaluation(e=2e3,t=!1){this._room.enableAudioVolumeEvaluation(e,t)}on(e,t,r){return this.listeners(e).includes(t)?this:(this._log.debug("on",e),super.on(e,t,r),this._eventListened.add(e),e===Se.EVENT.AUDIO_FRAME&&!this._getPCMAbortCtrl&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(o=>{this.emit(Se.EVENT.AUDIO_FRAME,{data:o})}),this._localAudioTrack&&this._localAudioTrack.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(o=>{this.emit(Se.EVENT.AUDIO_FRAME,{data:o})}))})),this)}emit(e,...t){try{ff.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(t)}`)}catch(r){}return super.emit(e,...t)}off(e,t,r){var o,n;return this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners(),(o=this._getPCMAbortCtrl)==null||o.abort("off"),delete this._getPCMAbortCtrl):(super.off(e,t,r),e===Se.EVENT.AUDIO_FRAME&&((n=this._getPCMAbortCtrl)==null||n.abort("off"),delete this._getPCMAbortCtrl)),this}getAudioTrack(e={userId:"",streamType:"main"}){let t,r=null,o="main",n=!1;if(Oe(e)?t=e:(t=e.userId,n=e.processed===!0,e.streamType&&(o=e.streamType)),t){let a=this._room.remotePublishedUserMap.get(t);a&&(r=a.remoteAudioTrack)}else r=o==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return r?n&&r.outMediaTrack&&r.outMediaTrack!==r.mediaTrack?r.outMediaTrack.clone():r.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:t="",streamType:r="main",processed:o=!1}=e,n=null;if(t==="")r==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),r==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let a=this._room.remotePublishedUserMap.get(t);a&&(n=r==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack)}return n?o&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:t,streamType:r="main"}=e;if(t){let o=this._room.remotePublishedUserMap.get(t);if(r==="main"&&(o!=null&&o.muteState.hasVideo))return o.remoteVideoTrack.getVideoFrame();if(r==="sub"&&(o!=null&&o.muteState.hasAuxiliary))return o.remoteAuxiliaryTrack.getVideoFrame()}else{if(r==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(r==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var t,r;this._speakerId=e,(t=this._localAudioTrack)==null||t.setAudioOutput(e),(r=this._localScreenAudioTrack)==null||r.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(o=>o.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return I(this,null,function*(){(yield Yr()).forEach(r=>{r.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(oe.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}),At=r)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return I(this,null,function*(){let{userId:t}=e;if(this._remoteAudioConfigMap.has(t)){this._log.warn(`remote audio has already started. userId:${t}`);return}let r=this._room.remotePublishedUserMap.get(t);if(!r)return;let o={},n=r.remoteAudioTrack;this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let a=this._remoteAudioVolumeMap.get(t),d=De(a)?a:100;o.volume=d,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(n),He(We(n,"decode-failed"),St(We(n,fe.INIT)),it(()=>{this.startPlugin(la.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:o,track:n}),n.outMediaTrack&&x.emit("266",{room:this.room,type:"add",audioReference:n.outMediaTrack,refId:`ra-${t}`})}catch(a){throw this._remoteAudioConfigMap.delete(t),a}this._emitTrackEvent(n)})}_stopRemoteAudio(e,t=!0){return I(this,null,function*(){let r=this._room.remotePublishedUserMap.get(e.userId);r&&(r.remoteAudioTrack.stop(),r.muteState.hasAudio&&t&&(yield this._room.unsubscribe(r.remoteAudioTrack)),this._mediaTrackMap.delete(r.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`),x.emit("266",{room:this.room,type:"remove",refId:`ra-${e.userId}`})})}_enableVideoDecodeFallback(e,t){let r=this._room.videoDecodeFallbackType;if(!r||!this._plugins.has("TRTCVideoDecoder"))return;e.log.debug("remote video will fall back when decode failed",e.id);let o;He(We(e,"decode-failed"),St(We(e,fe.INIT)),dh(()=>{this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:r})}),Ds(We(e,"decode-downgrade-state-changed")),it(n=>{o=n.state,this.emit(oe.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,ne(K({},n),{streamType:t,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{o==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return I(this,arguments,function*({view:e,playOption:t,track:r,prevConfig:o}){if(r.setMirror(t.mirror),L(e)&&o&&o.view&&!qs(t)){let a=Qs(o.view);a.length>0&&(yield r.play(a,t))}if(!L(e)){let a=Qs(e);a.length>0?yield r.play(a,t):r.stop()}})}_updateAudioPlayOption(o){return I(this,arguments,function*({playOption:e={},track:t,prevConfig:r}){if(!t.isPlayCalled)try{yield t.play(null,e)}catch(n){}if(L(e.muted)||t.setPlayerMute(e.muted),L(e.volume)||t.setAudioVolume(e.volume/100),t instanceof ti&&t.mediaTrack){let n=e.muted===!1&&!L(e.volume)&&e.volume>0?"add":"remove";x.emit("266",{room:this.room,type:n,audioReference:t.mediaTrack,refId:"em"})}else if(t instanceof Ri){let n=e.muted?0:e.volume;if(L(n))return;x.emit("266",{room:this.room,type:"update_volume",refId:`ra-${t.userId}`,volume:e.volume})}})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,t=!0){let r=e.isRemote?e.userId:"";e.outMediaTrack&&(t&&this._mediaTrackMap.get(e.outMediaTrack)===r||(this._mediaTrackMap.set(e.outMediaTrack,r),this.emit(oe.TRACK,{userId:r,streamType:is(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var t,r,o;let e=[];if((t=this._localAudioConfig)!=null&&t.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(r=this._localVideoConfig)!=null&&r.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(o=this._localScreenConfig)!=null&&o.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:t,receiveWhenViewVisible:r=!1,viewRoot:o}){if(L(t))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${is(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(t===null||tt(t)&&t.length===0||!r){a==null||a.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let c=n.visibleViewMap||new Map,h=-1;(!a||a.root!==o)&&(a==null||a.disconnect(),c.clear(),a=new IntersectionObserver(m=>{m.forEach(p=>{c.set(p.target,p.isIntersecting),e.log.info(`view ${p.target.id} is${p.isIntersecting?"":" not"} visible`)}),clearTimeout(h),h=window.setTimeout(()=>{[...c.values()].find(g=>g)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:o}));let u=new Set(Qs(t));c.forEach((m,p)=>{u.has(p)||(a.unobserve(p),c.delete(p))}),u.forEach(m=>{c.set(m,!0),a.observe(m)}),a.takeRecords().forEach(m=>{c.set(m.target,m.isIntersecting)}),n.visibleViewMap=c,n.observer=a}_exitRoom(){return I(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let t=e.includes("main")?"main":"sub",r=e.split(`_${t}`)[0];r&&this._stopRemoteVideo({userId:r,streamType:t}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),If(this),this._room.remotePublishedUserMap.forEach(e=>{at(e.remoteAudioTrack),at(e.remoteVideoTrack),at(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return I(this,null,function*(){var e;if(this._localScreenTrack){if(this._room.isJoined){let t=[this._localScreenTrack];this._localScreenAudioTrack&&t.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...t).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),at(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!At||To(At))&&(this._initActiveSpeaker(),x.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return I(this,null,function*(){if(At&&!To(At))this.emit(oe.DEVICE_CHANGED,{type:"speaker",action:"active",device:At});else{let e=yield Yr();e[0]&&!To(e[0])?(At=e[0],this.emit(oe.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):x.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let t=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(t===!1||this._room.autoReceiveAudio&&!t)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:t}){if(!this._room.autoReceiveVideo)return;let r=this._room.remotePublishedUserMap.get(e);if(r){let o=t==="main"?r.remoteVideoTrack:r.remoteAuxiliaryTrack,n=[o];this._room.autoReceiveAudio&&r.remoteAudioTrack.isAvailable&&n.push(r.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(o)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:t}){t.hasAudio&&t.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:t}){this._stopRemoteVideo({userId:e,streamType:t},!1).catch(()=>{})}sendSEIMessage(e,t){var o;let r=this._plugins.get("SEI");r&&(r.update({buffer:e,options:ne(K({seiPayloadType:243},t),{small:!!((o=this._localVideoTrack)!=null&&o.small)})}),Y.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var t,r;(r=(t=this._room).sendCustomMessage)==null||r.call(t,e),Y.addCount({key:500001,useUV:!0})}static setLogLevel(e,t){j.setLogLevel(e),L(t)||(t?j.enableUploadLog():j.disableUploadLog())}static isSupported(){return Td()}static getCameraList(e=!0){return ei(e)}static getMicrophoneList(e=!0){return Wt(e)}static getSpeakerList(e=!0){return Yr(e)}static setCurrentSpeaker(e){return I(this,null,function*(){if(ze&&(e===ci.SPEAKER||e===ci.HEADSET)){let r=yield Se.getMicrophoneList(),o="";if(r.forEach(n=>{n.label===e&&(o=n.deviceId)}),!o)return;ua.forEach(n=>I(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:o}}))}));return}(yield Yr()).forEach(r=>{r.deviceId===e&&(ua.forEach(o=>{o._setCurrentSpeaker(e),o.emit(oe.DEVICE_CHANGED,{type:"speaker",action:"active",device:r})}),At=r)})})}static _addKVStat({type:e,key:t,value:r,base:o,useUV:n,version:a}){switch(a&&(Ts.version=a),e){case"count":Ts.addCount({key:t,useUV:n});break;case"enum":Ts.addEnum({key:t,value:r,useUV:n});break;case"number":Ts.addNumber({key:t,value:r,split:o});break}}};l(Se,"_loggerManager",j),l(Se,"EVENT",oe),l(Se,"ERROR_CODE",me),l(Se,"TYPE",ci),l(Se,"frameWorkType",30),q([Xe({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],Se.prototype,"use",1),q([Ot(It.TRTC.enterRoom),es("room",([e],[t])=>(e.roomId||e.strRoomId)===(t.roomId||t.strRoomId)&&e.userId===t.userId&&e.sdkAppId===t.sdkAppId),ve(e=>function(t){return this._log.setUserId(t.userId),this._log.setSdkAppId(t.sdkAppId),e.call(this,t)}),Xe()],Se.prototype,"enterRoom",1),q([Xe()],Se.prototype,"exitRoom",1),q([Ot(It.TRTC.switchRole),Ms("room",{merge:(e,t)=>t}),Xe()],Se.prototype,"switchRole",1),q([Xe()],Se.prototype,"destroy",1),q([Ot(It.TRTC.startLocalAudio),es("audio",([e],[t])=>{var r,o;return((r=e==null?void 0:e.option)==null?void 0:r.microphoneId)===((o=t==null?void 0:t.option)==null?void 0:o.microphoneId)}),Xe()],Se.prototype,"startLocalAudio",1),q([Ot(It.TRTC.updateLocalAudio),Ms("audio",{debounce:{delay:200,getKey:()=>`${Wf}-localAudio`,isNeedToDebounce:e=>{var t;return!L((t=e.option)==null?void 0:t.captureVolume)}}}),Xe()],Se.prototype,"updateLocalAudio",1),q([ts("audio"),Xe()],Se.prototype,"stopLocalAudio",1),q([Ot(It.TRTC.startLocalVideo),es("video",([e],[t])=>{var r,o;return((r=e==null?void 0:e.option)==null?void 0:r.cameraId)===((o=t==null?void 0:t.option)==null?void 0:o.cameraId)}),Xe()],Se.prototype,"startLocalVideo",1),q([Ot(It.TRTC.updateLocalVideo),Ms("video"),Xe()],Se.prototype,"updateLocalVideo",1),q([ts("video"),Xe()],Se.prototype,"stopLocalVideo",1),q([Ot(It.TRTC.startScreenShare),es("screen",()=>!0),Xe()],Se.prototype,"startScreenShare",1),q([Ot(It.TRTC.updateScreenShare),Ms("screen"),Xe()],Se.prototype,"updateScreenShare",1),q([Xe()],Se.prototype,"stopScreenShare",1),q([Ot(It.TRTC.startRemoteVideo),es(e=>`v${e.userId}${e.streamType}`,()=>!0),Xe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Se.prototype,"startRemoteVideo",1),q([Ot(It.TRTC.updateRemoteVideo),Ms(e=>`v${e.userId}${e.streamType}`),Xe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Se.prototype,"updateRemoteVideo",1),q([Ot(It.TRTC.stopRemoteVideo),ve(e=>function(t){return I(this,null,function*(){if(t.userId==="*"){let r=[];return this._room.remotePublishedUserMap.forEach(o=>{this._remoteVideoConfigMap.has(`${o.userId}_main`)&&r.push(this.stopRemoteVideo({streamType:"main",userId:o.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${o.userId}_sub`)&&r.push(this.stopRemoteVideo({streamType:"sub",userId:o.userId}).catch(()=>{}))}),Promise.all(r)}return e.call(this,t)})}),Xe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Se.prototype,"stopRemoteVideo",1),q([ts(e=>`v${e.userId}${e.streamType}`)],Se.prototype,"_stopRemoteVideo",1),q([Ot(...It.TRTC.muteRemoteAudio),Xe({getRemoteId:e=>e})],Se.prototype,"muteRemoteAudio",1),q([Eh(...It.TRTC.setRemoteAudioVolume),ia(200,e=>e),Xe({getRemoteId:e=>e})],Se.prototype,"setRemoteAudioVolume",1),q([hc("start"),Ut(e=>{var t;return(t=e.afterStart)==null?void 0:t.call(e)}),es((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),Xe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Ql[e.getName()],ignoreLog:e=>e.getName()==="Debug"})],Se.prototype,"startPlugin",1),q([hc("update"),Ms((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),Xe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Yl[e.getName()]})],Se.prototype,"updatePlugin",1),q([hc("stop"),ts((e,t)=>{if(e.disableRandomCall)return null;let r=e.getGroup(t),o=e.getAlias();return r==="*"?new RegExp(`${o}.*`):o+r}),Xe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Zl[e.getName()]})],Se.prototype,"stopPlugin",1),q([Eh(...It.TRTC.enableAudioVolumeEvaluation)],Se.prototype,"enableAudioVolumeEvaluation",1),q([Xe()],Se.prototype,"getVideoSnapshot",1),q([Xe()],Se.prototype,"_setCurrentSpeaker",1),q([es(e=>`a${e.userId}`,()=>!0)],Se.prototype,"_startRemoteAudio",1),q([ve(e=>function(t){return I(this,null,function*(){return t.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(r=>this._stopRemoteAudio(ne(K({},t),{userId:r.userId})).catch(()=>{}))):e.call(this,t)})}),ts(e=>`a${e.userId}`)],Se.prototype,"_stopRemoteAudio",1),q([ts("room")],Se.prototype,"_exitRoom",1),q([ts("screen")],Se.prototype,"_stopScreenShare",1),q([Ot(...It.TRTC.sendSEIMessage),uh({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],Se.prototype,"sendSEIMessage",1),q([Ot(It.TRTC.sendCustomMessage),uh({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],Se.prototype,"sendCustomMessage",1),q([Ot(It.TRTC.create)],Se,"_create",1);var Fh=Se,ha=Fh;var Hh=class{constructor(){l(this,"_set",new Set);x.on(V.LEAVE_SUCCESS,this.delete,this)}add({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,e||i.roomId,i.sdkAppId,i.useStringRoomId);this._set.add(t)}delete({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,i.roomId||e,i.sdkAppId,i.useStringRoomId);this._set.delete(t)}getKey(i,e,t,r){return`${t}_${e}_${i}_${r}`}isJoined({userId:i,roomId:e,sdkAppId:t,room:r}){return r.scene==="rtc"?!1:this._set.has(this.getKey(i,e,t,r.useStringRoomId))}};function IS(){return I(this,null,function*(){let s,i;try{let u=yield Wt();s=u&&u.length}catch(u){}try{let u=yield ei();i=u&&u.length}catch(u){}let e={microphone:s,camera:i},{isH264EncodeSupported:t,isVp8EncodeSupported:r,isH264DecodeSupported:o,isVp8DecodeSupported:n}=this.checkSystemResult.detail,a=Wi.basis(),d={webRTC:a.isWebRTCSupported,getUserMedia:a.isGetUserMediaSupported,webSocket:a.isWebSocketsSupported,screenShare:a.isScreenShareSupported,webAudio:a.isWebAudioSupported,h264Encode:t,h264Decode:o,vp8Encode:r,vp8Decode:n},c={browser:a.browser,os:a.os,trtc:d,devices:e},h={isWebCodecSupported:a.isWebCodecSupported,isMediaSessionSupported:a.isMediaSessionSupported,isWebTransportSupported:a.isWebTransportSupported};Me.uploadEvent({log:`trtcstats-${JSON.stringify(c)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(c)}`),Me.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(h)}`,userId:this.userId})})}function jf(){return ve(s=>{let i=new Hh;return function(e,t,r){return I(this,null,function*(){let o=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=t,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new Q({code:H.INVALID_OPERATION,message:pe({key:he.INVALID_JOIN})});if(this.checkDestroy(),i.isJoined({userId:this.userId,roomId:o,sdkAppId:this.sdkAppId,room:this}))throw new Q({code:H.INVALID_OPERATION,message:pe({key:he.REPEAT_JOIN,data:this.userId})});i.add({room:this,roomId:o}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${o} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),x.emit(V.JOIN_START,{room:this,roomId:o,params:e});let n=Jt.getEnv();n||(n=ar.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(ka.OLD_CLOUD_LADDER)?n=ar.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(ka.WEBRTC)&&(n=ar.WEBRTC))),Me.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:o}),Wi.checkSystemRequirementsInternal().then(a=>{this.checkSystemResult=a,IS.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Jt.getEnv()&&(yield this.schedule(e,r));let a=yield s.call(this,e,t,r);return this.roomId=o,this._joinedTimestamp=Jt.performanceNow(),x.emit(V.JOIN_SUCCESS,{room:this}),r===30&&!e.component&&Me.uploadEvent({log:`stat-conv-${Number(Si)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw i.delete({room:this,roomId:o}),x.emit(V.JOIN_FAILED,{room:this,error:a}),a}})}})}var Jf=()=>ve(s=>function(...i){return I(this,null,function*(){x.emit(V.LEAVE_START,{room:this}),yield s.call(this,...i),x.emit(V.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function qf(){return ve(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var Qf=gt(Mt());var rt={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6"};var bi={CLIENT_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,PUBLISH_STATE_CHANGE_RESULT:4112,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,START_PUBLISH_CDN_STREAM_RES:8196,UPDATE_PUBLISH_CDN_STREAM_RES:8198,STOP_PUBLISH_CDN_STREAM_RES:8200,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110,UPDATE_CONSTRAINT_CONFIG_RES:772,REBUILD_PEER_CONNECTION_RES:4150,SPC_PUBLISH_RESULT:4146,SPC_SUBSCRIBE_RESULT:4156,ABILITY_STATUS_REPORT_RESULT:4158,SERVER_FIRST_PACKAGE_RECEIVED:5e3,RECEIVE_CUSTOM_MSG:4140},Xf=[bi.UPDATE_REMOTE_MUTE_STAT,bi.UPLINK_NETWORK_STATS,bi.USER_LIST_RES,bi.MUTE_RESULT,bi.SERVER_FIRST_PACKAGE_RECEIVED,bi.RECEIVE_CUSTOM_MSG],ge={CLIENT_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",PUBLISH_STATE_CHANGE_RESULT:"publish-state-change-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",START_PUBLISH_CDN_STREAM_RES:"start-publish-cdn-stream-res",UPDATE_PUBLISH_CDN_STREAM_RES:"update-publish-cdn-stream-res",STOP_PUBLISH_CDN_STREAM_RES:"stop-publish-cdn-stream-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result",UPDATE_CONSTRAINT_CONFIG_RES:"update-contraint-config-res",REBUILD_PEER_CONNECTION_RES:"rebuild-pc-res",SPC_PUBLISH_RESULT:"spc-publish-result",SPC_SUBSCRIBE_RESULT:"spc-subscribe-result",ABILITY_STATUS_REPORT_RESULT:"ability-status-report",SERVER_FIRST_PACKAGE_RECEIVED:"first-pkg-received",RECEIVE_CUSTOM_MSG:"receive-custom-msg"},Ne={PUBLISH_CHANGE:"publish_change",JOIN_ROOM:"join",LEAVE_ROOM:"leave",ON_QUALITY_REPORT:"quality_report",UPDATE_MUTE_STAT:"mute_uplink",PUBLISH:"publish",PUBLISH_STATE_CHANGE:"publish_state_change",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",RECEIVE_DATA_USER_LIST:"receive_data_userlist",UNSUBSCRIBE:"unsubscribe",SUBSCRIBE_CHANGE:"subscribe_change",START_PUBLISH_TENCENT_CDN:"start_publishing",STOP_PUBLISH_TENCENT_CDN:"stop_publishing",START_PUBLISH_GIVEN_CDN:"start_push_user_cdn",STOP_PUBLISH_GIVEN_CDN:"stop_push_user_cdn",START_MIX_TRANSCODE:"start_mcu_mix",STOP_MIX_TRANSCODE:"stop_mcu_mix",START_PUBLISH_CDN_STREAM:"start_publish_cdn_stream",UPDATE_PUBLISH_CDN_STREAM:"update_publish_cdn_stream",STOP_PUBLISH_CDN_STREAM:"stop_publish_cdn_stream",GET_USER_LIST:"get_user_list",SWITCH_ROLE:"change_role",UPDATE_CONSTRAINT_CONFIG:"update_constraint_config",REBUILD_PEER_CONNECTION:"rebuild_pc",READY_TO_RECEIVE_DATA:"ready_to_receive",SPC_JOIN_ROOM:"join/v2",SPC_PUBLISH:"publish/v2",SPC_SUBSCRIBE:"subscribe/v3",ABILITY_STATUS_REPORT:"ability_status_report",RECONNECT_WS:"reconnect",SEND_CUSTOM_MSG:"channel_msg"};var wc=new Set;function Yf(s){let i=[...wc.values()].find(e=>e.room.userId===s&&!e.room.isJoined);return i||null}var Lo=class extends Qf.default{constructor(e){var r,o,n;super();l(this,"room");l(this,"sdkAppId");l(this,"userId");l(this,"userSig");l(this,"url");l(this,"backupUrl");l(this,"destroyed",!1);l(this,"_socketInUse");l(this,"_socket");l(this,"_backupSocket");l(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,bakRelayIps:[]});l(this,"_currentState","DISCONNECTED");l(this,"_isReconnecting",!1);l(this,"_seq",0);l(this,"_log");l(this,"_lastMessageTime",-1);l(this,"_connectStartTime",-1);l(this,"_stopConnectRetry");l(this,"bytesSent",0);l(this,"bytesReceived",0);l(this,"keepAlive",!1);l(this,"signalDomainWhenUnifiedProxy");l(this,"stopKeepAliveTimeout");l(this,"rtt",0);this.room=e.room,this.sdkAppId=e.sdkAppId,this.userId=e.userId,this.userSig=e.userSig,this.signalDomainWhenUnifiedProxy=e.signalDomainWhenUnifiedProxy;let t=((o=(r=this.room.scheduleResult)==null?void 0:r.config)==null?void 0:o.keepAliveClient)||0;(n=this.room.joinParams)!=null&&n.keepAlive&&!t&&(t=1),t-wc.size>0&&this.room.enableSPC&&(this.keepAlive=!0,wc.add(this)),this.url=e.url,this.backupUrl=e.backupUrl,this._seq=0,this._log=j.createLogger({id:"ws",userId:this.userId,sdkAppId:this.sdkAppId}),this.onmessage=this.onmessage.bind(this),this.onerror=this.onerror.bind(this),this.onclose=this.onclose.bind(this)}get race(){return this.room.enableSPC&&!this.room.proxy_ws}get urlParam(){let e=`?sdkAppId=${encodeURIComponent(this.sdkAppId)}&userId=${encodeURIComponent(this.userId)}&userSig=${encodeURIComponent(this.userSig)}&keepAlive=${encodeURIComponent(Number(this.keepAlive))}`;this.signalDomainWhenUnifiedProxy&&(e+=`&signalDomain=${encodeURIComponent(this.signalDomainWhenUnifiedProxy)}`);let t=new URLSearchParams(location.search).get("clientIp");return t&&(e+=`&clientIp=${t}`),this.race?`${e}&race=1`:e}get _urlWithParam(){return`${this.url}${this.race?"/v2/ws":""}${this.urlParam}`}get _backupUrlWithParam(){return`${this.backupUrl}${this.race?"/v2/ws":""}${this.urlParam}`}get isConnected(){return this._currentState==="CONNECTED"}get isConnecting(){return this._currentState==="CONNECTING"}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12*1e3}connect(){return I(this,arguments,function*(e=10*1e3){if(this.isConnected)return Promise.resolve();this._log.info(`connect to [${this.url}, ${this.backupUrl}] ${this.race?"race":""}${e?` timeout: ${e}`:""} keepAlive: ${Number(this.keepAlive)}`),this.emitConnectionStateChanged("CONNECTING"),this._connectStartTime=le();let t=[this.connectWS({url:this._urlWithParam,isMain:!0,timeout:e})];this.race&&this._backupUrlWithParam!==this._urlWithParam&&t.push(this.connectWS({url:this._backupUrlWithParam,isMain:!1,timeout:e})),this._socketInUse=yield ms(t),this.unbindAndCloseSocket(this._socketInUse===this._socket?S.BACKUP:S.MAIN),this.emitConnectionStateChanged("CONNECTED")})}connectWS({url:e,timeout:t,isMain:r}){let o=new WebSocket(e);this.bindSocket(o),r?this._socket=o:this._backupSocket=o;let n=-1;return new Promise((a,d)=>{o.onclose=d,o.onerror=d,o.onopen=()=>a(o),t&&(n=setTimeout(()=>{this.unbindAndCloseSocket(r?S.MAIN:S.BACKUP),d(new Q({code:H.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},t))}).finally(()=>{o.onclose=null,o.onerror=null,o.onopen=null,clearTimeout(n)})}bindSocket(e){e.addEventListener("close",this.onclose),e.addEventListener("error",this.onerror),e.addEventListener("message",this.onmessage)}unbindSocket(e){e.removeEventListener("close",this.onclose),e.removeEventListener("error",this.onerror),e.removeEventListener("message",this.onmessage)}unbindAndCloseSocket(e){if(e===S.MAIN){if(this._socket){this.unbindSocket(this._socket);try{this._socket.close(1e3)}catch(t){}this._socket=null}}else if(this._backupSocket){this.unbindSocket(this._backupSocket);try{this._backupSocket.close(1e3)}catch(t){}this._backupSocket=null}}onclose(e){e.target===this._socketInUse&&(this._log.warn(`${e.target===this._socket?"main":"backup"} is closed code:${e.code} ${e.reason}`),this.emitConnectionStateChanged("DISCONNECTED"),(!e.wasClean||e.code!==1e3)&&this.startReconnection(),this.room.isJoining&&this.emit(rt.SETUP_FAILED,new Q({code:H.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onclose"})))}onerror(e){this._log.error(`${e.target===this._socket?"main":"backup"} error observed`),this.emitConnectionStateChanged("DISCONNECTED"),e.target===this._socketInUse&&(this.unbindAndCloseSocket(S.MAIN),this.unbindAndCloseSocket(S.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(rt.SETUP_FAILED,new Q({code:H.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(e){if(!this.isConnected)return;this._lastMessageTime=Date.now(),this.bytesReceived+=dn(e.data);let t=JSON.parse(e.data),{cmd:r,data:o}=t,n=Object.values(bi),d=Object.keys(bi)[n.indexOf(r)],c=ge[d]||r;switch(Xf.includes(r)||(this._log.debug(`received ${r} msg: ${e.data}`),c&&this._log.info(`Received event: [ ${c} ]`)),r){case bi.CHANNEL_SETUP_RESULT:{if(t.code===0)this._signalInfo.clientIp=o.clientIp,this._signalInfo.signalIp=o.signalInnerIp,o.svrTime&&Em(o.svrTime),this._log.info(`ChannelSetup Success ${le()-this._connectStartTime}`),Y.addSuccessEvent({key:521701,cost:le()-this._connectStartTime}),this._connectStartTime=-1,this.emit(rt.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let h=new Q({code:H.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:pe({key:he.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:t.code,errorMsg:t.message}})});this._log.error(`${t.code}, ${t.message}`),this.close(),Y.addFailedEvent({key:521701,error:h}),this.emit(rt.SETUP_FAILED,h)}break}case bi.JOIN_ROOM_RESULT:{t.code===0&&(this._signalInfo.relayIp=o.relayOuterIp,this._signalInfo.relayInnerIp=o.relayInnerIp,this._signalInfo.bakRelayIps=o.bakRelayIps,this._signalInfo.relayPort=o.relayPort,this._signalInfo.tinyId=t.tinyId,this._signalInfo.endReportExtend=o.endReportExtend,this._log.info(`signalIp:${this._signalInfo.signalIp} clientIp:${this._signalInfo.clientIp} relayIp: ${this._signalInfo.relayIp}`)),this.emit(c,{data:t});break}default:this.emit(String(c),{data:t});break}}reGetSignalChannelUrl(){return I(this,null,function*(){try{if(!this.room.joinParams)return;yi(!0),yield this.room.schedule(this.room.joinParams);let{mainUrl:e,backupUrl:t}=this.room.getSignalChannelUrl();this.url=e,this.backupUrl=t}catch(e){}})}startReconnection(){if(!this._socketInUse)return;this._socketInUse.onclose=null,this._socketInUse.close(4011);let e=this._socketInUse===this._socket;this.unbindAndCloseSocket(e?S.MAIN:S.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return I(this,null,function*(){if(!this._isReconnecting){if(!this.room.isJoined&&this.keepAlive){this.close();return}this._isReconnecting=!0;try{this._log.warn("reconnect"),yield this.connect();let{roomId:e,useStringRoomId:t}=this.room,{relayIp:r,relayInnerIp:o,relayPort:n}=this._signalInfo,{data:a}=yield this.sendWaitForResponse({command:Ne.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:o,relayOuterIp:r,relayPort:n},responseCommand:ge.CHANNEL_RECONNECT_RESULT});a.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),Y.addSuccessEvent({key:521702,cost:le()-this._connectStartTime}),this._connectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(Y.addFailedEvent({key:521702,error:a.code}),this._log.warn(`reconnect failed, ${a.code} ${a.message}`),this.room.reJoin())}catch(e){this._log.error(e),this.room.reJoin()}}})}send(e,t={}){if(this.isConnected&&!this.room.isLeft){let r={cmd:e,data:t,userId:this.userId,tinyId:this._signalInfo.tinyId,seq:++this._seq},o=JSON.stringify(r);return this._socketInUse.send(o),this.bytesSent+=dn(o),r.seq}}sendWaitForResponse({command:e,data:t,timeout:r=5e3,responseCommand:o,commandDesc:n,enableLog:a=!0,addReceiveTime:d=!1}){return new Promise((c,h)=>{let u=setTimeout(()=>{this.off(o,p);let f=new Q({code:H.API_CALL_TIMEOUT,message:pe({key:he.API_CALL_TIMEOUT,data:{commandDesc:n,command:e}})});a&&this._log.warn(f),h(f)},r),m=Date.now(),p=f=>{f.data.seq===g&&(clearTimeout(u),this.off(o,p),d&&(f.data.receiveTime=Date.now()),c(f))};this.on(o,p);let g=this.send(e,t)})}sendWaitForResponseWithRetry(e){let{commandDesc:t,command:r,retries:o=0,retryTimeout:n=0}=e;return Ui({retryFunction:this.sendWaitForResponse,onError:({retry:a})=>{this.isOnline?a():(this._log.warn(`retry ${r} when connected`),this.once(rt.CONNECTED,a))},onRetrying:a=>{this._log.warn(`${t||r} timeout observed, retrying [${a}/${o}]`)},settings:{retries:o,timeout:n},context:this})(e)}getCurrentState(){return this._currentState}getSignalInfo(){return this._signalInfo}stopReconnection(){this._isReconnecting=!1,this._stopConnectRetry&&this._stopConnectRetry()}close(){this._log.info("closed"),clearTimeout(this.stopKeepAliveTimeout),wc.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,bakRelayIps:[],endReportExtend:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(S.MAIN),this.unbindAndCloseSocket(S.BACKUP),this.emitConnectionStateChanged("DISCONNECTED")}destroy(){this.close(),this.destroyed=!0}getBackupRelayIpPair(){var t;let e=(t=this._signalInfo.bakRelayIps)==null?void 0:t.shift();return e&&(e.relayPort=e.relayPort||this._signalInfo.relayPort),e}clearBakRelayIps(){this._signalInfo.bakRelayIps=[]}stopKeepAliveIn(e=3600){if(this.keepAlive){this._log.info(`stopKeepAlive in ${e}s`),this.stopKeepAliveTimeout=setTimeout(()=>{this.keepAlive=!1,this._log.info(`close due to not used ${e}s`),this.close(),this.off(ge.JOIN_ROOM_RESULT,t)},e*1e3);let t=r=>{r.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(ge.JOIN_ROOM_RESULT,t))};this.on(ge.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){e!==this._currentState&&(this._log.info(`${this._currentState} -> ${e}`),this.emit(rt.CONNECTION_STATE_CHANGED,{prevState:this._currentState,state:e}),this._currentState=e,e==="CONNECTED"?this.emit(rt.CONNECTED):e==="DISCONNECTED"&&this.emit(rt.DISCONNECTED))}};q([Gt({settings:{retries:1/0,timeout:2e3},onError(e,t){!this.room.isDestroyed&&!this.destroyed&&t()},onRetrying(e,t){this._log.warn(`retrying to connect ${e}`),e>=3&&e%3===0&&this.reGetSignalChannelUrl(),t&&(this._stopConnectRetry=t,(this.room.isDestroyed||this.destroyed)&&t())}})],Lo.prototype,"connect",1);var Zf=gt(Mt());var Gh=0,Wh=!1,Mc=new Set,CS=s=>Gh>2&&!Wh&&Mc.size===0&&s,zh=!1,$t=class{constructor(i){l(this,"userId");l(this,"tinyId");l(this,"_sdpSemantics");l(this,"_isUplink");l(this,"_room");l(this,"_log");l(this,"_signalChannel");l(this,"_isErrorObserved",!1);l(this,"_waitForPeerConnectionConnectedPromise");l(this,"_waitForPeerConnectionConnectedPromiseReject",null);l(this,"_peerConnection",null);l(this,"_emitter",new Zf.default);l(this,"_currentState","DISCONNECTED");l(this,"_isReconnecting",!1);l(this,"_reconnectionCount",0);l(this,"_reconnectionTimer",-1);l(this,"_isFirstConnection",!0);l(this,"_prevTime",-1);l(this,"_localAddress");l(this,"_remoteAddress");this.userId=i.userId,this.tinyId=i.tinyId,this._room=i.room,this._sdpSemantics=i.room.sdpSemantics,this._isUplink=i.isUplink,this._log=j.createLogger({id:"n-mpc",userId:this._room.userId,remoteUserId:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink}),this._signalChannel=i.signalChannel}beforeConnect(){this._prevTime<0&&(this._prevTime=le())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,Y.addSuccessEvent({key:521705,cost:Math.min(le()-this._prevTime,30*1e3)})):this._isReconnecting&&Y.addSuccessEvent({key:521706,cost:le()-this._prevTime}),this._prevTime=-1}catch(i){throw this._isFirstConnection?(this._isFirstConnection=!1,Y.addFailedEvent({key:521705,error:i})):this._isReconnecting&&this._reconnectionCount>=3&&Y.addFailedEvent({key:521706,error:i}),i}}initialize(){let i={iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this._peerConnection=new RTCPeerConnection(i),this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this)}close(i){this._log.info("close connection"),this._emitter.emit("closed",i),this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),Mc.delete(this)}closePeerConnection(i=!1){this._peerConnection&&(this._log.info("close pc"),this._peerConnection.onconnectionstatechange=null,this._peerConnection.close(),this._peerConnection=null,i&&this.emitConnectionStateChangedEvent("DISCONNECTED")),this._waitForPeerConnectionConnectedPromiseReject&&this._waitForPeerConnectionConnectedPromiseReject(new Q({code:H.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return mi;let i=null;if(this._isUplink){if(!Qr()||this._peerConnection.getSenders().length===0)return mi;i=this._peerConnection.getSenders()[0].transport}else{if(!Ss()||this._peerConnection.getReceivers().length===0)return mi;i=this._peerConnection.getReceivers()[0].transport}return i?i.state:mi}onConnectionStateChange(i){let e=this._peerConnection.iceConnectionState,t=this.getDTLSTransportState();if(this._log.info(`connectionState: ${i.target.connectionState}, ICE: ${e}, DTLS: ${t}`),i.target.connectionState===Je.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),i.target.connectionState===Je.FAILED||i.target.connectionState===Je.CLOSED){let r=`connection ${i.target.connectionState}. ICE Transport state: ${e}, DTLS Transport state: ${t}`,o=new Q({message:r,code:H.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",o)}(i.target.connectionState===Je.CONNECTED||i.target.connectionState===Je.COMPLETED)&&(this.logSelectedCandidate(),Me.logSuccessEvent({userId:this._room.userId,eventType:Ft.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(i){return i===this._currentState?!1:(i==="CONNECTED"?(Gh=0,Wh=!1,zh=!0,Mc.add(this)):Mc.delete(this),x.emit(V.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:i,remoteUserId:this._isUplink?void 0:this.userId}),this._emitter.emit("connection-state-changed",{prevState:this._currentState,state:i}),this._currentState=i,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}logSelectedCandidate(){return I(this,null,function*(){if(!this._peerConnection)return;let i=yield this._peerConnection.getStats();for(let[,e]of i)if(Xr(e)){let t=i.get(e.localCandidateId),r=i.get(e.remoteCandidateId);t&&(this._log.info(`local candidate: ${t.candidateType} ${t.protocol}:${t.ip||t.address}:${t.port} ${t.networkType||""} ${t.candidateType==="relay"?`relayProtocol:${t.relayProtocol}`:""}`),this._localAddress=`${t.ip||t.address}:${t.port}`),r&&(this._log.info(`remote candidate: ${r.candidateType} ${r.protocol}:${r.ip||r.address}:${r.port}`),this._remoteAddress=`${r.protocol}:${r.ip||r.address}`);break}})}getCurrentState(){return this._currentState}waitForPeerConnectionConnected(){return this._waitForPeerConnectionConnectedPromise?this._waitForPeerConnectionConnectedPromise:(this._waitForPeerConnectionConnectedPromise=new Promise((i,e)=>{if(this._currentState==="CONNECTED")return i();this._waitForPeerConnectionConnectedPromiseReject=e;let t=a=>{a.state==="CONNECTED"&&(clearTimeout(n),o(),i())},r=({room:a})=>{a===this._room&&(clearTimeout(n),o(),e(new Q({code:H.API_CALL_ABORTED,message:pe({key:he.CONNECTION_ABORTED,data:"leave room"})})))},o=()=>{x.off(V.LEAVE_SUCCESS,r,this),this._emitter.off("connection-state-changed",t,this)},n=setTimeout(()=>{o();let a=new Q({code:H.API_CALL_TIMEOUT,message:"connection timeout"});Gh+=1,CS(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),Wh=!0,this._emitter.emit("firewall-restriction")),e(a)},tn);x.on(V.LEAVE_SUCCESS,r,this),this._emitter.on("connection-state-changed",t,this)}),this._waitForPeerConnectionConnectedPromise=this._waitForPeerConnectionConnectedPromise.finally(()=>{this._waitForPeerConnectionConnectedPromise=null,this._waitForPeerConnectionConnectedPromiseReject=null}),this._waitForPeerConnectionConnectedPromise)}getReconnectionCount(){return this._reconnectionCount}startReconnection(){this._isReconnecting=!0,this.reconnect()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}stopReconnection(){this._log.info("stop reconnection"),this._isReconnecting=!1,this._reconnectionCount=0,this.clearReconnectionTimer(),this._signalChannel.off(rt.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=dr()){this._log.warn(`SDK has tried reconnect for ${this._reconnectionCount} times, but all failed, please check your network`),this.stopReconnection();let i=new Q({code:this._isUplink?H.UPLINK_RECONNECTION_FAILED:H.DOWNLINK_RECONNECTION_FAILED,message:pe({key:this._isUplink?he.UPLINK_RECONNECTION_FAILED:he.DOWNLINK_RECONNECTION_FAILED})});return this.emitConnectionStateChangedEvent("DISCONNECTED"),this._emitter.emit("error",i),-1}return this._signalChannel.isConnected?(this._reconnectionCount+=1,this._log.warn(`reconnect() trying [${this._reconnectionCount}]`),1):(this._log.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this._signalChannel.once(rt.CONNECTED,this.reconnect,this),-1)}on(i,e,t){this._emitter.on(i,e,t)}off(i,e,t){this._emitter.off(i,e,t)}getIsReconnecting(){return this._isReconnecting}get isH264(){var i,e;return!!((e=(i=this._peerConnection)==null?void 0:i.remoteDescription)!=null&&e.sdp.includes("H264"))}setOffer(i){var e;return(e=this._peerConnection)==null?void 0:e.setLocalDescription(i)}setAnswer(i){var e;return(e=this._peerConnection)==null?void 0:e.setRemoteDescription(i)}};q([zt(521712,!1)],$t.prototype,"setOffer",1),q([zt(521713,!1)],$t.prototype,"setAnswer",1);var Xh=gt(qh());var et=function(s){return Xh.default.parse(s)},ui=function(s){return Xh.default.write(s)},n_=function(s){let i=et(s);return i.media.forEach(e=>{e.type===S.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),ui(i)};function a_(s){let i=et(s);return i.media.forEach(e=>{var t,r;if(e.type===S.VIDEO){let o=new Set;e.rtp.forEach(({payload:a,codec:d})=>d==="H264"&&o.add(a)),e.fmtp.forEach(({payload:a,config:d})=>{let c=d.match(/apt=(\d+)/);c&&c[1]&&o.has(Number(c[1]))&&o.add(a)});let n=({payload:a})=>!o.has(a);e.rtp=e.rtp.filter(n),e.rtcpFb=(t=e.rtcpFb)==null?void 0:t.filter(n),e.fmtp=e.fmtp.filter(n),e.payloads=(r=e.payloads)==null?void 0:r.split(" ").filter(a=>!o.has(Number(a))).join(" ")}}),ui(i)}function xc(s){return Object.keys(s).filter(i=>s[i])}var Uo=class Uo extends $t{constructor(e){super(ne(K({},e),{isUplink:!1}));l(this,"_flag",0);l(this,"isRobot",!1);l(this,"role","anchor");l(this,"remoteAudioTrack");l(this,"remoteVideoTrack");l(this,"remoteAuxiliaryTrack");l(this,"ssrc",{audio:0,video:0,auxiliary:0});l(this,"_isSDPExchanging",!1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new Ri(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new er(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new bo(this._room,this)}get videoCodec(){var t,r;let e=(r=(t=this._peerConnection)==null?void 0:t.remoteDescription)==null?void 0:r.sdp;return e?e.includes("H264")?"h264":"vp8":"h264"}get subscribeState(){let e={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?e.smallVideo=!0:e.video=!0),this.remoteAudioTrack.isSubscribed&&(e.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(e.auxiliary=!0),e}get muteState(){return ur(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===S.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){super.initialize(),this.installEvents(),this._peerConnection.ontrack=this.onTrack.bind(this)}close(e){super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var o,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){let t=e.streams[0],{track:r}=e,o=t.id===en?S.MAIN:S.AUXILIARY;this._log.debug(`ontrack ${o} ${r.kind}`);let n=S.AUDIO;r.kind===S.VIDEO&&(n=o===S.MAIN?S.VIDEO:S.AUXILIARY);let a=this.remoteAudioTrack;n===S.VIDEO?a=this.remoteVideoTrack:n===S.AUXILIARY&&(a=this.remoteAuxiliaryTrack),a.setInputMediaStreamTrack(r)}addRRTRLine(e){let t=e.split(`\r
74
- `),r=new Map;t.forEach((n,a)=>{/^a=rtcp-fb:/.test(n)&&t[a+1]&&!/^a=rtcp-fb:/.test(t[a+1])&&r.set(a+1,`${n.match(/^a=rtcp-fb:\d+/)[0]} rrtr`)});let o=[...r];for(let n=0;n<o.length;n++){let[a,d]=o[n];t.splice(a+n,0,d)}return t.join(`\r
75
- `)}addSPSDescription(e){let t=et(e);return t.media.forEach(r=>{r.type===S.VIDEO&&r.fmtp.forEach(o=>{o.config+=";sps-pps-idr-in-keyframe=1"})}),ui(t)}removeSDESDescription(e){let t=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],r=et(e);return r.media.forEach(o=>{o.ext&&(o.ext=o.ext.filter(n=>!t.includes(n.uri)))}),ui(r)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return I(this,null,function*(){var r,o;try{if((((r=this._peerConnection)==null?void 0:r.connectionState)===Je.NEW||((o=this._peerConnection)==null?void 0:o.connectionState)===Je.CONNECTING)&&(yield this.waitForPeerConnectionConnected()),this.isSubscriptionStateNotChanged(e)){this._peerConnection||(this.initialize(),yield this.connect(e));return}if(this._log.info(`subscribe ${t} ${JSON.stringify(e)}`),this._peerConnection||this._isSDPExchanging){let n="subscribe_change";Object.values(e).find(a=>a===!0)||(n="unsubscribe"),yield this.sendSubscription(n,e)}else this.initialize(),yield this.connect(e)}catch(n){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${n.message} ${JSON.stringify(this.muteState)}`),new Q({code:H.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}unsubscribe(r){return I(this,arguments,function*({remoteTracks:e,streamType:t}){if(this._currentState==="CONNECTED"&&(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed)){this._log.info(`${t} stream already unsubscribed`);return}let o=K({},this.subscribeState);e.forEach(a=>{switch(a.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(o).find(a=>a===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${xc(o)}]`),yield this.sendSubscription(n,o),n==="unsubscribe"&&(this.closePeerConnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"))})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},o=Ne.UNSUBSCRIBE,n=ge.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=Ne.SUBSCRIBE_CHANGE,n=ge.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:o,data:r,responseCommand:n,timeout:1e4}).then(({data:a})=>{if(a.code!==0){let d=new Q({code:a.code,message:pe({key:he.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(d),d}})}connect(){return I(this,arguments,function*(e=this.subscribeState){try{yield this.exchangeSDP(e),yield this.waitForPeerConnectionConnected()}catch(t){throw this.closePeerConnection(!0),t}})}exchangeSDP(e){return I(this,null,function*(){try{this._isSDPExchanging=!0,yield this.createOffer(),this._log.info("createOffer success, sending offer");let{type:t,sdp:r}=this._peerConnection.localDescription,o={type:t,sdp:r,srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo},n=yield this._signalChannel.sendWaitForResponse({command:Ne.SUBSCRIBE,commandDesc:"exchange sdp",data:o,responseCommand:ge.SUBSCRIBE_RESULT,timeout:dl});if(!this._peerConnection){let a=new Q({code:H.INVALID_OPERATION,message:pe({key:he.CONNECTION_CLOSED})});throw this._log.warn(a),a}yield this.onSubscribeResult(n),this._isSDPExchanging=!1}catch(t){throw this._isSDPExchanging=!1,t}})}createOffer(){return I(this,null,function*(){let e={voiceActivityDetection:!1};Yt()&&this._sdpSemantics===Gr?(this._peerConnection.addTransceiver(S.AUDIO,{direction:ke.RECVONLY}),this._peerConnection.addTransceiver(S.VIDEO,{direction:ke.RECVONLY}),this._peerConnection.addTransceiver(S.VIDEO,{direction:ke.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:r}=yield Ed();r||(this._log.warn("remove h264 desc from sdp"),t.sdp=a_(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=n_(t.sdp),this._sdpSemantics===Gr&&(t.sdp=this.removeSDESDescription(t.sdp))}yield this.setOffer(t)})}onSubscribeResult(e){return I(this,null,function*(){let{code:t,message:r=""}=e&&e.data||{},{type:o,sdp:n}=e&&e.data&&e.data.data||{};if(t===ds)throw new Q({code:H.NOT_SUPPORTED_H264,message:pe({key:he.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new Q({code:t,message:pe({key:he.EXCHANGE_SDP_FAILED,data:{errMsg:r}})});this._log.debug(`accept remote answer: ${n}`),yield this.setAnswer({type:o,sdp:n}),this.updateSSRC(n)}catch(a){throw this._log.error(a),a}})}updateSSRC(e){try{et(e).media.forEach(r=>{if(r.ssrcs)if(r.type===S.AUDIO){let o=r.ssrcs.find(n=>{var a;return(a=n.value)==null?void 0:a.includes(en)});o&&(this.ssrc.audio=Number(o.id))}else{let o=r.ssrcs.find(a=>{var d;return(d=a.value)==null?void 0:d.includes(en)}),n=r.ssrcs.find(a=>{var d;return(d=a.value)==null?void 0:d.includes(rl)});o&&(this.ssrc.video=Number(o.id)),n&&(this.ssrc.auxiliary=Number(n.id))}})}catch(t){}}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}reconnect(){return I(this,null,function*(){if(!(Ct(Uo.prototype,this,"beforeReconnect").call(this)<0))try{this.closePeerConnection(),this.initialize(),yield this.connect(),this.stopReconnection(),this._log.warn("reconnect() success")}catch(t){let r=fi(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}getIsReconnecting(){return this._isReconnecting}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}getCurrentState(){return this._currentState}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}get audioReceiver(){var e;return((e=this._peerConnection)==null?void 0:e.getReceivers()[0])||null}};q([ve(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new Q({code:H.API_CALL_ABORTED,message:pe({key:he.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],Uo.prototype,"subscribe",1),q([zt(521717,!1)],Uo.prototype,"unsubscribe",1),q([Ut($t.prototype.afterConnect),xd($t.prototype.beforeConnect)],Uo.prototype,"connect",1);var Qh=Uo,Yh=Qh;var c_={voiceActivityDetection:!1},Vo=class Vo extends $t{constructor(e){super(ne(K({},e),{isUplink:!0}));l(this,"localMainAudioTrack",null);l(this,"localMainVideoTrack",null);l(this,"localAuxAudioTrack",null);l(this,"localAuxVideoTrack",null);l(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0});l(this,"_isPublishingAux",!1);l(this,"_publishingLocalAudioTrack");l(this,"_publishingLocalVideoTrack");l(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});l(this,"flag",0)}get videoCodec(){return this._mediaSettings.videoCodec.toLowerCase()||"h264"}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,o,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(Hi()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((o=a[2])!=null&&o.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(d=>{d.track&&(d.track.kind===S.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}initialize(){super.initialize(),this.installEvents()}reset(){this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),this.uninstallEvents()}close(e){super.close(e),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this._emitter.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this._emitter.on("connection-state-changed",this.handleConnectionStateChange,this)}uninstallEvents(){this._emitter.off("connection-state-changed",this.handleConnectionStateChange,this)}emitConnectionStateChangedEvent(e,t){var n,a,d;let r=this._currentState,o=super.emitConnectionStateChangedEvent(e);return o&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(d=this._publishingLocalVideoTrack)==null||d.emit("connection-state-changed",{prevState:r,state:e}))),o}publish(o){return I(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){this._peerConnection||this.initialize(),e&&(this._publishingLocalAudioTrack=e),t&&(this._publishingLocalVideoTrack=t),this._isPublishingAux=r;let n;t&&!r&&t.small&&(n=this._room.videoManager.smallTrack),this.sendMediaSettings(),Yt()?yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:n,isAuxiliary:r}):yield this.publishByAddTrack({localAudioTrack:e,localVideoTrack:t,smallTrack:n}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,r?(t&&(this.localAuxVideoTrack=t),e&&(this.localAuxAudioTrack=e)):(t&&(this.localMainVideoTrack=t),e&&(this.localMainAudioTrack=e)),this.installTrackMuteEvents(e,t),this.sendMutedFlag()})}publishByTransceiver(n){return I(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:o}){this._log.info("publish by transceiver");let a=new MediaStream,d=t==null?void 0:t.outMediaTrack,c=e==null?void 0:e.outMediaTrack;c&&a.addTrack(c),d&&a.addTrack(d);let h=this._peerConnection.getTransceivers();if(h.length===0)this._peerConnection.addTransceiver(c||S.AUDIO,{direction:ke.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?S.VIDEO:d||S.VIDEO,{direction:ke.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(r||S.VIDEO,{direction:ke.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?d||S.VIDEO:S.VIDEO,{direction:ke.SENDONLY,streams:[a]}),yield this.connect();else{let u=[];if(c&&(h[0].sender.track||u.push(0),yield h[0].sender.replaceTrack(c),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:S.AUDIO})),d){let m=o?3:1;yield h[m].sender.replaceTrack(d),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:S.VIDEO,videoType:o?S.AUXILIARY:S.BIG}),u.push(m),r&&(yield h[2].sender.replaceTrack(r),yield this.setBandwidth({bandwidth:t.small.bitrate,type:S.VIDEO,videoType:S.SMALL}),u.push(2))}yield this.setTransceiverDirection(ke.SENDONLY,u),yield this.doPublishChange(),t==null||t.emit("connection-state-changed",{prevState:"DISCONNECTED",state:"CONNECTING"}),t==null||t.emit("connection-state-changed",{prevState:"CONNECTING",state:"CONNECTED"})}})}publishByAddTrack(o){return I(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r}){this._log.info("publish by addtrack");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack;if(this._peerConnection&&this._peerConnection.connectionState!=="new"){e&&a&&(yield this.addTrack(e)),n&&(yield this.addTrack(t));return}let d=new MediaStream;if(a&&d.addTrack(a),n&&d.addTrack(n),a&&this._peerConnection.addTrack(a,d),n&&(this._peerConnection.addTrack(n,d),r)){let c=new MediaStream;c.addTrack(r),this._peerConnection.addTrack(r,c)}yield this.connect()})}enableSmall(e){return I(this,null,function*(){let t=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield t[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.setTransceiverDirection(ke.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.setTransceiverDirection(ke.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return I(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){if(!Hi()){if(e&&e.outMediaTrack&&!t&&this.localMainVideoTrack){yield this.removeTrack(e),this.localMainAudioTrack=null;return}if(t&&t.outMediaTrack&&!e&&this.localMainAudioTrack){yield this.removeTrack(t),this.localMainVideoTrack=null;return}yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),this.emitConnectionStateChangedEvent("DISCONNECTED",t);return}let o=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),d=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localAuxAudioTrack&&!this.localMainAudioTrack&&(yield a[0].replaceTrack(null),d.push(0))),n&&(o?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=ne(K({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),d.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=ne(K({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),d.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.setTransceiverDirection(ke.INACTIVE,d),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return I(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponse({command:Ne.PUBLISH_STATE_CHANGE,data:t,responseCommand:ge.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Ne.UNPUBLISH,commandDesc:"unpublish",responseCommand:ge.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===H.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let r=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:o,localAuxVideoTrack:n}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?n=this._publishingLocalVideoTrack:o=this._publishingLocalVideoTrack),Gi){if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(o&&o.outMediaTrack){let a=o.outMediaTrack.getSettings();this._mediaSettings.videoWidth=a.width||0,this._mediaSettings.videoHeight=a.height||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=o.profile.bitrate*1e3,o.small&&(this._mediaSettings.smallVideoWidth=o.small.width,this._mediaSettings.smallVideoHeight=o.small.height,this._mediaSettings.smallVideoFps=o.small.frameRate,this._mediaSettings.smallVideoBps=o.small.bitrate*1e3)}if(n&&n.outMediaTrack){let a=n.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=a.width||0,this._mediaSettings.auxVideoHeight=a.height||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=n.profile.bitrate*1e3}}else r&&r.outMediaTrack&&(this._mediaSettings.audioChannel=r.profile.channelCount,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=r.profile.sampleRate),o&&o.outMediaTrack&&(this._mediaSettings.videoWidth=o.profile.width,this._mediaSettings.videoHeight=o.profile.height,this._mediaSettings.videoFps=o.profile.frameRate,this._mediaSettings.videoBps=o.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Ne.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:ge.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return I(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?S.AUXILIARY:S.MAIN} stream`),Yt()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return I(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===S.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((o=this.localMainVideoTrack)!=null&&o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===ke.INACTIVE&&(yield this.setTransceiverDirection(ke.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return I(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;Hi()&&this._peerConnection.getTransceivers().findIndex(o=>o.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",t));let r=this._peerConnection.getSenders().find(o=>o.track&&o.track.kind===t.kind);if(r&&r.track){this._log.warn("sender already exists, remove sender first");let o=r.track;this.removeSender(r),yield this.updateOffer("remove",o)}if(t&&this._peerConnection.addTrack(t,new MediaStream([t])),t.kind===S.VIDEO&&e instanceof Nt&&e.small){let o=new MediaStream,{smallTrack:n}=this._room.videoManager;o.addTrack(n),this._peerConnection.addTrack(n,o)}yield this.updateOffer("add",t)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===Ws||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=et(e);for(let r=0;r<t.media.length;r++)if(Number(t.media[r].mid)===0&&t.media[r].type===S.VIDEO)return!0;return!1}removeSender(e){let t=null;Hi()&&(t=this._peerConnection.getTransceivers().find(r=>r.sender&&r.sender.track===e.track)),this._peerConnection.removeTrack(e),t&&Fe(t.stop)&&(this._log.info("stop transceiver"),t.stop())}removeTrack(e){return I(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?S.AUXILIARY:S.MAIN} stream`),Yt()?yield this.removeTrackByTransceiver(e,t):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,t){return I(this,null,function*(){if(!e.outMediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===S.AUDIO)yield r[0].sender.replaceTrack(null);else{let o=t?3:1;yield r[o].sender.replaceTrack(null),o===1&&e.small&&(yield r[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(ke.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,t){return I(this,null,function*(){if(!Ue)return;let r=!1,o=!1;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let n=this._peerConnection.getTransceivers();if(t.forEach(c=>{n[c].direction!==e&&(n[c].direction=e,r=!0)}),r){this._log.info("updating offer");let c=yield this._peerConnection.createOffer();yield this.setOffer(c)}let a=-1,d=this._peerConnection.remoteDescription.sdp.split(`\r
76
- `).map(c=>{if(c.match(new RegExp(`a=(${ke.INACTIVE}|${ke.RECVONLY}|${ke.SENDONLY})`))&&a++,t.includes(a)){if(e===ke.INACTIVE&&c.includes(`a=${ke.RECVONLY}`))return o=!0,`a=${e}`;if(e===ke.SENDONLY&&c.includes(`a=${ke.INACTIVE}`))return o=!0,`a=${ke.RECVONLY}`}return c}).join(`\r
77
- `);o&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:d}))})}removeTrackBySender(e){return I(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===S.VIDEO&&this.isNeedToResetOfferOrder()&&this.localMainAudioTrack){this.reset(),this.initialize(),yield this.publish({localAudioTrack:this.localMainAudioTrack,isAuxiliary:!1});return}let t=this._peerConnection.getSenders().find(r=>r.track===e.outMediaTrack);t&&(this.removeSender(t),e.kind===S.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(r=>{r.track&&r.track.kind===S.VIDEO&&this.removeSender(r)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return I(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders();if(!t||t.length===0||!e.mediaTrack)return!1;let r;if(Yt()?r=e.kind===S.AUDIO?t[0]:t[1]:r=t.find(a=>a.track&&a.track.kind===e.kind),!r)return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${e.kind} track on ${o?S.AUXILIARY:S.MAIN} stream`),e.kind===S.AUDIO?yield r.replaceTrack(e.outMediaTrack):e.kind===S.VIDEO&&(o?t[3]&&(yield t[3].replaceTrack(e.outMediaTrack)):yield r.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,t){return I(this,null,function*(){try{let r=yield this._peerConnection.createOffer(c_);Ue&&r.sdp&&(r.sdp=this.setSDPDirection(r.sdp,"sendrecv")),yield this.setOffer(r);let o=this.updateMediaSettings(),n={action:e,trackId:t.id,kind:t.kind===S.VIDEO?"bigVideo":t.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:o,state:this.publishState};this._log.info("createOffer success, sending updated offer to remote server"),this._log.debug(`updatedOffer: ${n.sdp}`);let a=yield this._signalChannel.sendWaitForResponse({command:Ne.PUBLISH_CHANGE,data:n,responseCommand:ge.UPDATE_OFFER_RESULT,timeout:al,commandDesc:"update offer"}),{code:d,message:c}=a.data;d!==0&&this.checkPublishResultCode(d,c),yield this.acceptAnswer(a.data.data),r.sdp&&this.updateSSRC(r.sdp)}catch(r){throw this._log.error(r),r}})}setBandwidth(n){return I(this,arguments,function*({bandwidth:e,type:t,videoType:r,sdp:o}){if(!wn())return o?t===S.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e):void 0;let a,d=this._peerConnection.getSenders();if(Yt()){let c=0;t===S.VIDEO&&(r===S.SMALL?c=2:r===S.AUXILIARY?c=3:c=1),a=d[c]}else a=d.find(c=>c.track&&c.track.kind===t);if(a){let c=a.getParameters();(!c.encodings||c.encodings.length===0)&&(c.encodings=[{}]),c.encodings[0].maxBitrate=e*1e3;try{return yield a.setParameters(c),this._log.info(`${r||""}${t} bandwidth ${e} kbps`),o}catch(h){if(this._log.info(`failed to set bandwidth by setting maxBitrate: ${h}`),o)return t===S.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e)}}return o})}updateVideoBandwidthRestriction(e,t,r){let o="AS";Ue&&(o="TIAS",t=t*1e3);let n=0,a=-1;return r===S.SMALL?n=1:r===S.AUXILIARY&&(n=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,d=>(a+=1,a===n?`${d}b=${o}:${t}\r
78
- `:d)),e}updateAudioBandwidthRestriction(e,t){let r="AS";return Ue&&(r="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
61
+ 2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(s=>{jm[`${s}()`]={tips:`Call trtc.${s}`,color:"blue",class:"blue",textColor:"#fff"}});var Sk=Object.keys(jm);var bT=0,sc,zo=class zo{constructor(i){this.core=i;d(this,"_core");d(this,"log");d(this,"dumpLocalVideoMap",{});d(this,"dumpRemoteVideoMap",{});d(this,"dialog");this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${++bT}`}),this.log.info("created")}getName(){return zo.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(i){switch(i){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return p(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(){}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return p(this,null,function*(){var i;try{if(sc)yield sc;else{let e=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((i=window.sessionStorage)==null?void 0:i.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${Gm}@${Me}/assets/debug-dialog.js`;sc=this._core.fileDownloader.loadScript(e),yield sc}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(e){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(e))}})}closeDebugDiaLog(){var i;(i=this.dialog)==null||i.closeDialog(),this.dialog=null}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):ou,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):nu,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:i,mediaType:e}){return ou({frame:i,onDump:()=>{if(!e)return;let t=e===2?"sub":"main",r=this.dumpLocalVideoMap[t];r&&(r.data.push(i.data.slice(0)),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}decodeVideo({frame:i,track:e}){return nu({frame:i,onDump:()=>{if(!e)return;let t=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];t&&(t.data.push(i.data.slice(0)),t.duration>0&&Date.now()-t.startTimestamp>t.duration*1e3&&t.onDumpEnd())}})}};d(zo,"Name","Debug"),d(zo,"autoStart",!0);var oc=zo;var qm=s=>{switch(s){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},nc=class{constructor(i,e,t){d(this,"trackDoneOB");d(this,"startOB");d(this,"stopOB");d(this,"inputFrameCount",0);d(this,"decodedFrameCount",0);d(this,"type","auto");d(this,"config");d(this,"decoder");d(this,"_decodeSink");let{kvStatManager:r,trtc:o}=i;this.config=t.config,this.trackDoneOB=ue(e,H.INIT),this.stopOB=et(),this.startOB=et(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let n=et(),a=c=>{let l=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),de(l,we(this.stopOB),Re(()=>{},u=>{e.log.error(u),r.addFailedEvent({key:qm(this.type),error:u}),c>4?this.startOB.error(u):this.startOB.next(c+1)})),de(l,Ui(1),Pl($o))};de(this.startOB,Bo(0),Rs(a),we(this.stopOB),Re(()=>{e.player.setOutput(),n.next("STARTED")},c=>{n.next("FAILED")},()=>{r.addSuccessEvent({key:qm(this.type)}),r.addSuccessEvent({key:504702})}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.startOB.next(0)}close(i){this.stopOB.next(i)}pipe(i){return wi()(e=>p(this,null,function*(){this._decodeSink=e,e.defer(()=>{var r;(r=this.decoder)==null||r.close()});let{type:t}=this;try{switch(t){case"webCodecs":this.decoder=new AudioDecoder({error:r=>{i.log.error(r),e.error(4)},output:r=>{this.decodedFrameCount++,e.next(r),i.player.write(r)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(r){i.log.error(r),e.error(t==="webCodecs"?2:6)}}))}decodeFrame(i){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:i.data,timestamp:i.timestamp,type:"key"}))}},NT={type:"object"},Qo=class Qo{constructor(i){this.core=i;d(this,"log");d(this,"contextMap",new Map);d(this,"decodeProcessorMap",new WeakMap);this.log=i.log.createChild({id:`${this.getAlias()}`})}getAlias(){return Qo.Name}getGroup(i){return i.track.userId+i.track.streamType}getName(){return Qo.Name}getValidateRule(i){return NT}start(i){let{track:e}=i;this.decodeProcessorMap.set(e,this.decode(i)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:t,track:r})=>this.decodeProcessorMap.has(r)?this.decodeProcessorMap.get(r)({frame:t,track:r}):t,type:3})}decode(i){return({frame:e,track:t})=>{if(t!==i.track)return e;if(this.contextMap.has(t))return this.contextMap.get(t).decodeFrame(e);let r=new nc(this.core,t,i);return de(r.trackDoneOB,Ui(1),Re(()=>{this.core.clearStarted(this,this.getGroup(i)),this.stop({track:t})})),this.contextMap.set(t,r),r.decodeFrame(e)}}stop({track:i}){let e=this.contextMap.get(i);e&&(e.close("stop"),this.contextMap.delete(i),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(i){let e=this.contextMap.get(i.track);if(e){if(i.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(i.track,new nc(this.core,i.track,i))}}};d(Qo,"Name","TRTCAudioDecoder");var Yo=Qo;var ac=class{constructor(){d(this,"log");this.log=R.createLogger({id:"exp"})}call(i,e){return p(this,null,function*(){return oe(this[i])?this[i](e):Promise.reject(new y({code:S.INVALID_PARAMETER,message:P({key:L.API_NOT_EXIST,data:{name:i}})}))})}enableAudioFrameEvent(i){return p(this,null,function*(){let{trtcInstance:e,enable:t,userId:r,sampleRate:o=48e3,channelCount:n=1,port:a}=i,{audioManager:c}=e.room,{getPCMAbortCtrlMap:l,audioFrameEventConfigMap:u}=c;if(u.set(r,{enable:t,sampleRate:o,channelCount:n}),t)if(r==="*")e.room.remotePublishedUserMap.forEach(h=>{if(h.remoteAudioTrack.isAvailable){if(l.get(h.userId))return;let f=c.getPCM(_=>{e.emit(k.AUDIO_FRAME,_)},h.userId);l.set(h.userId,f)}});else{if(l.get(r))return;let h=c.getPCM(f=>{e.emit(k.AUDIO_FRAME,f)},r);l.set(r,h)}else if(r==="*")e.room.remotePublishedUserMap.forEach(h=>{if(h.remoteAudioTrack.isSubscribed){let{userId:f}=h,_=l.get(f);_==null||_.abort("disable"),l.delete(f)}});else{let h=l.get(r);h==null||h.abort("disable"),l.delete(r)}})}};N([Am({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!0,type:"string"},sampleRate:{type:"number",values:[8e3,16e3,32e3,44100,48e3]},channelCount:{type:"number",values:[1,2]},port:{type:"messageport"}}})],ac.prototype,"enableAudioFrameEvent",1);var Xm=new ac;var zm=0,Ko=new Set,Ve=null;Nc(Wm);ms.checkStorage();xd();var vT={RtcError:B,ErrorCode:$,ErrorCodeDictionary:Ut},X=class X extends Qm.EventEmitter{constructor(e,t){super();d(this,"_room");d(this,"_eventListened",new Set);d(this,"_localVideoTrack",null);d(this,"_localAudioTrack",null);d(this,"_localScreenTrack",null);d(this,"_localScreenAudioTrack",null);d(this,"_localVideoConfig",null);d(this,"_localScreenConfig",null);d(this,"_localAudioConfig",null);d(this,"_remoteVideoConfigMap",new Map);d(this,"_remoteAudioConfigMap",new Map);d(this,"_remoteAudioVolumeMap",new Map);d(this,"_remoteAudioMuteMap",new Map);d(this,"_mediaTrackMap",new WeakMap);d(this,"_log",R.createLogger({id:`t${++zm}`}));d(this,"_plugins",new Map);d(this,"_networkQuality",null);d(this,"_speakerId");this._room=new e(v({logger:this._log,frameWorkType:X.frameWorkType},t)),this._room.videoDecodeFallbackType=t.videoDecodeFallback,this._log.info(`create() ${JSON.stringify(t,(r,o)=>r==="plugins"?o.map(n=>n.Name):o)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(r){return this._room.audioManager.dump(r)}}}),t.plugins&&t.plugins.forEach(r=>{this._use(r,t.assetsPath)}),this._use(ec,t.assetsPath),this._use(ic,t.assetsPath),this._use(Yo,t.assetsPath||mn),this._use(oc),t.enableSEI&&yo&&this._use(rc),this._room.on("audio-volume",r=>{!r.find(o=>o.userId==="")&&this._localAudioTrack&&r.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100)}),t.volumeType===1&&r.forEach(o=>{var a;let n=o.userId===""?this._localAudioTrack:(a=this.room.remotePublishedUserMap.get(o.userId))==null?void 0:a.remoteAudioTrack;n&&(o.volume=n.dbVolume)}),this.emit(k.AUDIO_VOLUME,{result:r.sort((o,n)=>n.volume-o.volume)})}),this._room.videoManager.on("error",r=>{this._log.error(new B({code:$.OPERATION_FAILED,extraCode:5504,message:r.message,originError:r}))}),this._listenEvents(),this._initActiveSpeaker(),Bm(this,"trtc")}static create(e){}static _create(e,t){ym();let r=new X(e,t||{});return Ko.add(r),r}get room(){return this._room}_listenEvents(){Ge(this,this._room).add("peer-join",e=>{let{userId:t}=e;this.emit(k.REMOTE_USER_ENTER,{userId:t})}).add("peer-leave",e=>{this.emit(k.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(k.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(k.ERROR,B.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(k.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=x(v({},e),{uplinkRTT:Math.min(e.uplinkRTT,Qs),downlinkRTT:Math.min(e.downlinkRTT,Qs)});this.emit(k.NETWORK_QUALITY,t)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{Ge(r,r).add("player-state-changed",o=>{let n=x(v({},o),{userId:e.userId});r.kind===m.VIDEO&&(n.streamType=nr(r.streamType)),this.emit(r.kind===m.AUDIO?k.AUDIO_PLAY_STATE_CHANGED:k.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",o=>{o.getCode()===S.PLAY_NOT_ALLOWED&&this.emit(k.AUTOPLAY_FAILED,{userId:r.userId,mediaType:r.strMediaType,resume:()=>r.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{be(r)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:t})=>{let{userId:r}=t,o=e.audioAvailable,n=e.videoAvailable,{audioAvailable:a,videoAvailable:c}=t;a||this._remoteAudioConfigMap.delete(r),c||this._removeRemoteVideoConfig(r,"main"),t.hasAuxiliary||this._removeRemoteVideoConfig(r,"sub"),n!==c&&(c?this._onVideoAvailable({userId:r,streamType:"main"}):this._onVideoUnavailable({userId:r,streamType:"main"}),this.emit(c?k.REMOTE_VIDEO_AVAILABLE:k.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"main"})),o!==a&&(a?this._onAudioAvailable({userId:r}):this._onAudioUnavailable({userId:r,muteState:t}),this.emit(a?k.REMOTE_AUDIO_AVAILABLE:k.REMOTE_AUDIO_UNAVAILABLE,{userId:r})),e.hasAuxiliary!==t.hasAuxiliary&&(t.hasAuxiliary?this._onVideoAvailable({userId:r,streamType:"sub"}):this._onVideoUnavailable({userId:r,streamType:"sub"}),this.emit(t.hasAuxiliary?k.REMOTE_VIDEO_AVAILABLE:k.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"sub"}))}).add("sei-message",e=>{this.emit(k.SEI_MESSAGE,x(v({},e),{streamType:nr(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(k.ERROR,new B({code:$.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var o,n,a,c,l,u,h;let t={2:"big",3:"small",7:"sub"},r={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((o=e.msg_down_stream_info[0])==null?void 0:o.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((a=this._networkQuality)==null?void 0:a.downlinkRTT)||0,Qs),upLoss:((c=this._networkQuality)==null?void 0:c.uplinkLoss)||0,downLoss:((l=this._networkQuality)==null?void 0:l.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((u=e.msg_up_stream_info.msg_audio_status)==null?void 0:u.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((h=e.msg_up_stream_info.msg_audio_status)==null?void 0:h.uint32_audio_level)||0)/Et},video:e.msg_up_stream_info.msg_video_status.filter(f=>t[f.uint32_video_stream_type]).map(f=>({bitrate:(f.uint32_video_codec_bitrate||0)/1e3,width:f.uint32_video_width,height:f.uint32_video_height,frameRate:f.uint32_video_enc_fps,videoType:t[f.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(f=>({userId:f.msg_user_info.str_identifier,audio:{bitrate:(f.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(f.msg_audio_status.uint32_audio_level||0)/Et,point2pointDelay:(f.msg_audio_status.uint32_audio_p2p_delay||0)+(f.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:f.msg_audio_status.uint32_audio_cache_ms||0},video:f.msg_video_status.map(_=>({bitrate:(_.uint32_video_codec_bitrate||0)/1e3,width:_.uint32_video_width,height:_.uint32_video_height,frameRate:_.uint32_video_dec_fps,videoType:t[_.uint32_video_stream_type],point2pointDelay:(_.uint32_video_p2p_delay||0)+(_.uint32_video_cache_ms||0),jitterBufferDelay:_.uint32_video_cache_ms||0}))}))};this.emit(k.STATISTICS,r)}).add("custom-message",e=>{this.emit(k.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(k.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(k.FIRST_VIDEO_FRAME,x(v({},e),{streamType:nr(e.streamType)}))}).add("audio-frame",e=>{this.emit(k.AUDIO_FRAME,e)}),Ge(this,ke).add("audioInputAdded",e=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>p(this,null,function*(){if(this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Ve&&Ve.deviceId===zs){let t=(yield tr()).find(r=>r.deviceId===zs);t&&Ve.groupId!==t.groupId&&(Ve=t,this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>p(this,null,function*(){this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield tr())[0];if(!t||!Ve||Ve.groupId===t.groupId)return;let r=Ve.deviceId===e.deviceId,o=Ve.deviceId===zs&&Ve.deviceId===t.deviceId;(r||o)&&(Ve=t,this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}))}use(e){let t,r;"plugin"in e?(t=e.plugin,r=e.assetsPath):t=e,this._use(t,r||mn)}_use(e,t){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let o=new e(Vm.call(this,{TRTC:X,room:this._room,errorModule:vT,assetsPath:t}));this._plugins.set(e.Name,o),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return p(this,null,function*(){var c,l;let{scene:t="rtc",enableAutoPlayDialog:r=!0,autoReceiveAudio:o=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!K(e.proxy)&&e.proxy.turnServer&&((l=(c=this._room).setTurnServer)==null||l.call(c,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=r,this._room.autoReceiveAudio=o,this._room.autoReceiveVideo=n,ge(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let a={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,t,X.frameWorkType),this._checkTrackToPublish(),Yl.start()})}exitRoom(){return p(this,null,function*(){return yield this._exitRoom()})}switchRole(e,t){return p(this,null,function*(){t!=null&&t.privateMapKey&&(this._room.privateMapKey=t.privateMapKey),t!=null&&t.latencyLevel&&(this._room.latencyLevel=t.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){be(this),this.removeAllListeners(),this._room.destroy(),Ko.delete(this),Ko.size===0&&Yl.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var t;return(t=e.destroy)==null?void 0:t.call(e)}),this._plugins.clear(),E.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return p(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:t=!0,mute:r,option:o}=e,n=new St(this._room.audioManager),a={},c={muted:!0};o&&(T(o.microphoneId)?T(o.audioTrack)||(a.customSource=o.audioTrack):a.deviceId=o.microphoneId,o&&j(o.captureVolume)&&n.setCaptureVolume(o.captureVolume),T(o.profile)||(K(o.profile)?_n[o.profile]&&n.setProfile(_n[o.profile]):n.setProfile(o.profile)),j(o.earMonitorVolume)&&(c.muted=!(o.earMonitorVolume>0),c.volume=o.earMonitorVolume),T(o.echoCancellation)||(n.profile.echoCancellation=o.echoCancellation),T(o.noiseSuppression)||(n.profile.noiseSuppression=o.noiseSuppression),T(o.autoGainControl)||(n.profile.autoGainControl=o.autoGainControl)),n.on("5",l=>{this.emit(k.ERROR,new B({code:$.DEVICE_ERROR,extraCode:5309,messageParams:{error:l}}))}),n.on("2",l=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"active",device:l})}),n.on("4",l=>{let u;l.error&&(u=B.convertFrom(l.error)),this.emit(k.PUBLISH_STATE_CHANGED,x(v({},l),{error:u}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),T(r)||n.setMute(r),Ge(n,n).add("player-state-changed",l=>{this.emit(k.AUDIO_PLAY_STATE_CHANGED,x(v({},l),{userId:""}))}),t&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=x(v({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:c,track:n}),E.emit("113",{userId:"",room:this.room})})}updateLocalAudio(e){return p(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:t,mute:r,option:o}=e,n={};o&&(o.microphoneId?yield this._localAudioTrack.switchDevice(o.microphoneId):T(o.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(o.audioTrack)),T(o.captureVolume)||this._localAudioTrack.setCaptureVolume(o.captureVolume),T(o.earMonitorVolume)||(n.muted=!(o.earMonitorVolume>0),n.volume=o.earMonitorVolume),yield this._localAudioTrack.update3A(o)),this._room.isJoined&&!T(t)&&(t&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!t&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),T(r)||this._localAudioTrack.setMute(r),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),Wt(this._localAudioConfig,e)})}stopLocalAudio(){return p(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),E.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),be(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null)})}startLocalVideo(){return p(this,arguments,function*(e={publish:!0,view:null,capture:!0}){var h;if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:t,publish:r=!0,capture:o=!0,mute:n,option:a}=e,c=new Je(this._room.videoManager),l={},u={};ge(a==null?void 0:a.avoidCropping)&&(c.avoidCropping=a.avoidCropping),a&&(a.cameraId?l.deviceId=a.cameraId:T(a.useFrontCamera)?T(a.videoTrack)||(l.customSource=a.videoTrack):l.facingMode=a.useFrontCamera?m.FACING_MODE_USER:m.FACING_MODE_ENVIRONMENT,a.qosPreference&&(l.contentHint=jo(a.qosPreference)),T(a.profile)||(K(a.profile)?gt[a.profile]&&c.setProfile(gt[a.profile]):c.setProfile(a.profile)),T(a.fillMode)||(u.objectFit=a.fillMode),T(a.mirror)||(u.mirror=a.mirror),T(a.small)||(Ao()?K(a.small)?c.small=gt[a.small]:a.small===!0?c.small=gt["120p"]:c.small=a.small:this._log.warn("small stream is not supported"))),c.once("first-video-frame",f=>{this.emit(k.FIRST_VIDEO_FRAME,x(v({},f),{streamType:nr(f.streamType)}))}),c.on("5",f=>{this.emit(k.ERROR,new B({code:$.DEVICE_ERROR,extraCode:5308,messageParams:{error:f}}))}),c.on("2",f=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"active",device:f})}),c.on("4",f=>{let _;f.error&&(_=B.convertFrom(f.error)),this.emit(k.PUBLISH_STATE_CHANGED,x(v({},f),{error:_}))}),this._listenOutputTrackChanged(c),o?yield c.capture(l):(h=c.manager)==null||h.changeInput(c),T(n)||(yield c.setMute(n)),Ge(c,c).add("player-state-changed",f=>{this.emit(k.VIDEO_PLAY_STATE_CHANGED,x(v({},f),{userId:"",streamType:"main"}))}),r&&this._room.isJoined&&this._room.publish(c).catch(()=>{}),this._localVideoTrack=c,this._localVideoConfig=x(v({},e),{view:t,publish:r,capture:o}),yield this._updateVideoPlayOption({view:t,playOption:u,track:c})})}updateLocalVideo(e){return p(this,null,function*(){var l,u,h;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:t,publish:r,mute:o,capture:n,option:a}=e,c={};if(this._localVideoConfig.capture)T(n)||n===!0?a!=null&&a.cameraId?yield this._localVideoTrack.switchDevice(a==null?void 0:a.cameraId):T(a==null?void 0:a.useFrontCamera)?T(a==null?void 0:a.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(a==null?void 0:a.videoTrack)):yield this._localVideoTrack.switchDevice(a!=null&&a.useFrontCamera?m.FACING_MODE_USER:m.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(n){let f={};f.deviceId=(a==null?void 0:a.cameraId)||((l=this._localVideoConfig.option)==null?void 0:l.cameraId),f.facingMode=a!=null&&a.useFrontCamera||(u=this._localVideoConfig.option)!=null&&u.useFrontCamera?m.FACING_MODE_USER:m.FACING_MODE_ENVIRONMENT,f.customSource=(a==null?void 0:a.videoTrack)||((h=this._localVideoConfig.option)==null?void 0:h.videoTrack),yield this._localVideoTrack.capture(f)}if(a)if(T(a.profile)||(K(a.profile)?gt[a.profile]&&this._localVideoTrack.setProfile(gt[a.profile]):this._localVideoTrack.setProfile(a.profile),(!a.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(a.cameraId))&&T(a.useFrontCamera)&&(yield this._localVideoTrack.applyProfile())),T(a.fillMode)||(c.objectFit=a.fillMode),T(a.mirror)||(c.mirror=a.mirror),a.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(jo(a.qosPreference)),a.small){let f=!this._localVideoTrack.small;Ao()?(a.small===!0?this._localVideoTrack.small=gt["120p"]:K(a.small)?this._localVideoTrack.small=gt[a.small]:this._localVideoTrack.small=a.small,this._room.videoManager.update(),f&&this._room.enableSmall(!0)):this._log.warn("small stream is not supported")}else a.small===!1&&this._localVideoTrack.small&&(delete this._localVideoTrack.small,this._room.videoManager.update(),this._room.enableSmall(!1));this._room.isJoined&&T(r)&&this._localVideoConfig.publish&&n&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&(r||this._localVideoConfig.publish?this._room.publish(this._localVideoTrack).catch(()=>{}):this._room.unpublish(this._localVideoTrack).catch(()=>{})),T(o)||(yield this._localVideoTrack.setMute(o)),yield this._updateVideoPlayOption({view:t,playOption:c,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),Wt(this._localVideoConfig,e)})}stopLocalVideo(){return p(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),be(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return p(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:t=null,publish:r=!0,option:o}=e,n=new at(this._room.videoManager);n.on("4",h=>{let f;h.error&&(f=B.convertFrom(h.error)),this.emit(k.PUBLISH_STATE_CHANGED,x(v({},h),{error:f}))}),n.once("first-video-frame",h=>{this.emit(k.FIRST_VIDEO_FRAME,x(v({},h),{streamType:nr(h.streamType)}))}),this._listenOutputTrackChanged(n),e.streamType==="main"&&(n.mediaType=4);let a=null,c={},l={};o&&(T(o.profile)||(K(o.profile)?gn[o.profile]&&n.setProfile(gn[o.profile]):n.setProfile(o.profile)),o.systemAudio&&(c.systemAudio=!0,c.echoCancellation=o.echoCancellation,c.noiseSuppression=o.noiseSuppression,c.autoGainControl=o.autoGainControl),T(o.fillMode)||(l.objectFit=o.fillMode),o.videoTrack&&(c.videoTrack=o.videoTrack),o.audioTrack&&(c.audioTrack=o.audioTrack),o.captureElement&&(c.captureElement=o.captureElement),o.preferDisplaySurface&&(c.preferDisplaySurface=o.preferDisplaySurface),o.qosPreference&&(c.contentHint=jo(o.qosPreference)));let u=yield n.capture(c);if(n.mediaTrack.addEventListener(m.ENDED,()=>{this._stopScreenShare(),this.emit(k.SCREEN_SHARE_STOPPED)}),u.getAudioTracks()[0]&&(a=new ci(this._room.audioManager),yield a.setInputMediaStreamTrack(u.getAudioTracks()[0]),this._speakerId&&a.setAudioOutput(this._speakerId)),Ge(n,n).add("player-state-changed",h=>{this.emit(k.VIDEO_PLAY_STATE_CHANGED,x(v({},h),{userId:"",streamType:"sub"}))}),r&&this._room.isJoined){let h=[n];a&&h.push(a),this._room.publish(...h).catch(()=>{})}this._localScreenTrack=n,this._localScreenAudioTrack=a,this._localScreenConfig=x(v({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:l,track:n})})}updateScreenShare(e){return p(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:t,publish:r,option:o}=e,n={};if(o&&(T(o.fillMode)||(n.objectFit=o.fillMode),o.qosPreference)){let a=jo(o.qosPreference);this._localScreenTrack.setContentHint(a)}this._room.isJoined&&!T(r)&&(r&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!r&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),yield this._updateVideoPlayOption({view:t,playOption:n,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),Wt(this._localScreenConfig,e)})}stopScreenShare(){return p(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return p(this,null,function*(){let{view:t,userId:r,streamType:o,option:n}=e,a=`${r}_${o}`;if(this._remoteVideoConfigMap.has(a)){this._log.warn(`remote video has already started. userId:${r}, streamType:${o}`);return}let c=this._room.remotePublishedUserMap.get(r);if(!c)return;let l={},u=o==="main"?c.remoteVideoTrack:c.remoteAuxiliaryTrack;this._listenOutputTrackChanged(u),n&&(T(n.fillMode)||(l.objectFit=n.fillMode),T(n.mirror)||(l.mirror=n.mirror),T(n.poster)||(l.poster=n.poster),l.canvasRender=n.canvasRender,o==="main"&&!T(n.small)&&(!c.remoteVideoTrack.isSubscribing&&!c.remoteVideoTrack.isSubscribed&&c.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,u.user))),yield this._room.subscribe(u),yield this._enableVideoDecodeFallback(u,o),yield this._updateVideoPlayOption({view:t,playOption:l,track:u}),this._emitTrackEvent(u),this._remoteVideoConfigMap.set(a,{config:e}),n&&!T(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:u,view:t,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return p(this,null,function*(){var A,M;let{view:t,userId:r,streamType:o,option:n}=e,a=`${r}_${o}`,c=this._remoteVideoConfigMap.get(a);if(!c||!this._room.remotePublishedUserMap.has(r))return;let l={};n&&(T(n.fillMode)||(l.objectFit=n.fillMode),T(n.mirror)||(l.mirror=n.mirror));let u=null,h=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(h!=null&&h.muteState.hasVideo)&&(u=h.remoteVideoTrack),o==="sub"&&(h!=null&&h.muteState.hasAuxiliary)&&(u=h.remoteAuxiliaryTrack),!u)return;let{config:f}=c;o==="main"&&n&&!T(n.small)&&this._room.changeType(n.small,u.user),yield this._updateVideoPlayOption({view:t,playOption:l,track:u,prevConfig:f}),Wt(f,e);let _=T(n==null?void 0:n.receiveWhenViewVisible)?(A=f.option)==null?void 0:A.receiveWhenViewVisible:n.receiveWhenViewVisible,D=T(t)?f.view:t,g=T(n==null?void 0:n.viewRoot)?(M=f.option)==null?void 0:M.viewRoot:n.viewRoot;this._observeView({remoteTrack:u,view:D,receiveWhenViewVisible:_,viewRoot:g})})}stopRemoteVideo(e){return p(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return p(this,null,function*(){let r=[],o=this._room.remotePublishedUserMap.get(e.userId);if(o){let{muteState:n,remoteVideoTrack:a,remoteAuxiliaryTrack:c}=o;e.streamType==="main"&&(a.stop(),n.hasVideo&&r.push(a)),e.streamType==="sub"&&(c.stop(),n.hasAuxiliary&&r.push(c))}for(let n of r)t&&(yield this._room.unsubscribe(n),this._mediaTrackMap.delete(n.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,t){let r=`${e}_${t}`,o=this._remoteVideoConfigMap.get(r);o&&o.observer&&o.observer.disconnect(),this._remoteVideoConfigMap.delete(r)}muteRemoteAudio(e,t){return p(this,null,function*(){this._remoteAudioMuteMap.set(e,t);try{if(e==="*")if(t)yield this._stopRemoteAudio({userId:e});else{let r=[...this._room.remotePublishedUserMap.values()];for(let o of r)o.muteState.hasAudio&&!this._remoteAudioConfigMap.has(o.userId)&&(yield this._startRemoteAudio({userId:o.userId}))}else t?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(r){throw this._remoteAudioMuteMap.delete(e),r}})}setRemoteAudioVolume(e,t){if(e==="*"){let r=[...this._room.remotePublishedUserMap.values()];for(let o of r)this._remoteAudioVolumeMap.set(o.userId,t),o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:o.remoteAudioTrack})}else if(e){let r=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,t),r&&r.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:r.remoteAudioTrack})}}startPlugin(e,t){return p(this,null,function*(){return e.start(t)})}updatePlugin(e,t){return p(this,null,function*(){return e.update(t)})}stopPlugin(e,t){return p(this,null,function*(){return e.stop(t)})}enableAudioVolumeEvaluation(e=2e3,t=!1){this._room.enableAudioVolumeEvaluation(e,t)}on(e,t,r){if(this.listeners(e).includes(t))return this;if(this._log.debug("on",e),super.on(e,t,r),this._eventListened.add(e),this.listeners(k.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:o}=this.room.audioManager;o.get("")||o.set("",{enable:!0}),this._localAudioTrack&&this.room.audioManager.handleLocalTrackStarted({userId:"",room:this.room})}return this}emit(e,...t){try{Lm.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(t)}`)}catch(r){}return super.emit(e,...t)}off(e,t,r){if(this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners()):super.off(e,t,r),(e===X.EVENT.AUDIO_FRAME||e==="*")&&this.listeners(X.EVENT.AUDIO_FRAME).length===0){let{getPCMAbortCtrlMap:o}=this.room.audioManager;o.forEach(n=>{n==null||n.abort("off")}),o.clear()}return this}getAudioTrack(e={userId:"",streamType:"main"}){let t,r=null,o="main",n=!1;if(K(e)?t=e:(t=e.userId,n=e.processed===!0,e.streamType&&(o=e.streamType)),t){let a=this._room.remotePublishedUserMap.get(t);a&&(r=a.remoteAudioTrack)}else r=o==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return r?n&&r.outMediaTrack&&r.outMediaTrack!==r.mediaTrack?r.outMediaTrack.clone():r.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:t="",streamType:r="main",processed:o=!1}=e,n=null;if(t==="")r==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),r==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let a=this._room.remotePublishedUserMap.get(t);a&&(n=r==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack)}return n?o&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:t,streamType:r="main"}=e;if(t){let o=this._room.remotePublishedUserMap.get(t);if(r==="main"&&(o!=null&&o.muteState.hasVideo))return o.remoteVideoTrack.getVideoFrame();if(r==="sub"&&(o!=null&&o.muteState.hasAuxiliary))return o.remoteAuxiliaryTrack.getVideoFrame()}else{if(r==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(r==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var t,r;this._speakerId=e,(t=this._localAudioTrack)==null||t.setAudioOutput(e),(r=this._localScreenAudioTrack)==null||r.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(o=>o.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return p(this,null,function*(){(yield tr()).forEach(r=>{r.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}),Ve=r)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return p(this,null,function*(){let{userId:t}=e;if(this._remoteAudioConfigMap.has(t)){this._log.warn(`remote audio has already started. userId:${t}`);return}let r=this._room.remotePublishedUserMap.get(t);if(!r)return;let o={},n=r.remoteAudioTrack;this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let a=this._remoteAudioVolumeMap.get(t),c=j(a)?a:100;o.volume=c,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(n),de(ue(n,"decode-failed"),we(ue(n,H.INIT)),Re(()=>{this.startPlugin(Yo.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:o,track:n}),E.emit("115",{userId:t,room:this.room})}catch(a){throw this._remoteAudioConfigMap.delete(t),a}this._emitTrackEvent(n)})}_stopRemoteAudio(e,t=!0){return p(this,null,function*(){let r=this._room.remotePublishedUserMap.get(e.userId);r&&(r.remoteAudioTrack.stop(),r.muteState.hasAudio&&t&&(yield this._room.unsubscribe(r.remoteAudioTrack)),this._mediaTrackMap.delete(r.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`),E.emit("116",{userId:e.userId,room:this.room})})}_enableVideoDecodeFallback(e,t){let r=this._room.videoDecodeFallbackType;if(!r||!this._plugins.has("TRTCVideoDecoder"))return;e.log.debug("remote video will fall back when decode failed",e.id);let o;de(ue(e,"decode-failed"),we(ue(e,H.INIT)),Ul(()=>{this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:r})}),xr(ue(e,"decode-downgrade-state-changed")),Re(n=>{o=n.state,this.emit(k.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,x(v({},n),{streamType:t,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{o==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return p(this,arguments,function*({view:e,playOption:t,track:r,prevConfig:o}){if(r.setMirror(t.mirror),T(e)&&o&&o.view&&!Yr(t)){let a=Zr(o.view);a.length>0&&(yield r.play(a,t))}if(!T(e)){let a=Zr(e);a.length>0?yield r.play(a,t):r.stop()}})}_updateAudioPlayOption(o){return p(this,arguments,function*({playOption:e={},track:t,prevConfig:r}){if(!t.isPlayCalled)try{yield t.play(null,e)}catch(n){}T(e.muted)||t.setPlayerMute(e.muted),T(e.volume)||t.setAudioVolume(e.volume/100)})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,t=!0){let r=e.isRemote?e.userId:"";e.outMediaTrack&&(t&&this._mediaTrackMap.get(e.outMediaTrack)===r||(this._mediaTrackMap.set(e.outMediaTrack,r),this.emit(k.TRACK,{userId:r,streamType:nr(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var t,r,o;let e=[];if((t=this._localAudioConfig)!=null&&t.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(r=this._localVideoConfig)!=null&&r.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(o=this._localScreenConfig)!=null&&o.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:t,receiveWhenViewVisible:r=!1,viewRoot:o}){if(T(t))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${nr(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(t===null||_e(t)&&t.length===0||!r){a==null||a.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let l=n.visibleViewMap||new Map,u=-1;(!a||a.root!==o)&&(a==null||a.disconnect(),l.clear(),a=new IntersectionObserver(f=>{f.forEach(_=>{l.set(_.target,_.isIntersecting),e.log.info(`view ${_.target.id} is${_.isIntersecting?"":" not"} visible`)}),clearTimeout(u),u=window.setTimeout(()=>{[...l.values()].find(D=>D)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:o}));let h=new Set(Zr(t));l.forEach((f,_)=>{h.has(_)||(a.unobserve(_),l.delete(_))}),h.forEach(f=>{l.set(f,!0),a.observe(f)}),a.takeRecords().forEach(f=>{l.set(f.target,f.isIntersecting)}),n.visibleViewMap=l,n.observer=a}_exitRoom(){return p(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let t=e.includes("main")?"main":"sub",r=e.split(`_${t}`)[0];r&&this._stopRemoteVideo({userId:r,streamType:t}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),Fm(this),this._room.remotePublishedUserMap.forEach(e=>{be(e.remoteAudioTrack),be(e.remoteVideoTrack),be(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return p(this,null,function*(){var e;if(this._localScreenTrack){if(this._room.isJoined){let t=[this._localScreenTrack];this._localScreenAudioTrack&&t.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...t).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),be(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!Ve||Is(Ve))&&(this._initActiveSpeaker(),E.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return p(this,null,function*(){if(Ve&&!Is(Ve))this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:Ve});else{let e=yield tr();e[0]&&!Is(e[0])?(Ve=e[0],this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):E.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let t=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(t===!1||this._room.autoReceiveAudio&&!t)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:t}){if(!this._room.autoReceiveVideo)return;let r=this._room.remotePublishedUserMap.get(e);if(r){let o=t==="main"?r.remoteVideoTrack:r.remoteAuxiliaryTrack,n=[o];this._room.autoReceiveAudio&&r.remoteAudioTrack.isAvailable&&n.push(r.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(o)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:t}){t.hasAudio&&t.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:t}){this._stopRemoteVideo({userId:e,streamType:t},!1).catch(()=>{})}sendSEIMessage(e,t){var o;let r=this._plugins.get("SEI");r&&(r.update({buffer:e,options:x(v({seiPayloadType:243},t),{small:!!((o=this._localVideoTrack)!=null&&o.small)})}),b.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var t,r;(r=(t=this._room).sendCustomMessage)==null||r.call(t,e),b.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,t){return p(this,null,function*(){return this._log.info(`callExperimentalAPI(${e}, ${JSON.stringify(t)})`),Xm.call(e,v({trtcInstance:this},t))})}static setLogLevel(e,t){R.setLogLevel(e),T(t)||(t?R.enableUploadLog():R.disableUploadLog())}static isSupported(){return na()}static getCameraList(e=!0){return _t(e)}static getMicrophoneList(e=!0){return ot(e)}static getSpeakerList(e=!0){return tr(e)}static setCurrentSpeaker(e){return p(this,null,function*(){if(he&&(e===At.SPEAKER||e===At.HEADSET)){let r=yield X.getMicrophoneList(),o="";if(r.forEach(n=>{n.label===e&&(o=n.deviceId)}),!o)return;Ko.forEach(n=>p(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:o}}))}));return}(yield tr()).forEach(r=>{r.deviceId===e&&(Ko.forEach(o=>{o._setCurrentSpeaker(e),o.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:r})}),Ve=r)})})}static _addKVStat({type:e,key:t,value:r,base:o,useUV:n,version:a,max:c}){switch(a&&(Rr.version=a),e){case"count":Rr.addCount({key:t,useUV:n});break;case"enum":Rr.addEnum({key:t,value:r,useUV:n});break;case"number":Rr.addNumber({key:t,value:r,split:o,max:c});break}}};d(X,"_loggerManager",R),d(X,"EVENT",k),d(X,"ERROR_CODE",$),d(X,"TYPE",At),d(X,"frameWorkType",30),N([fe({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],X.prototype,"use",1),N([Xe(Ue.TRTC.enterRoom),sr("room",([e],[t])=>(e.roomId||e.strRoomId)===(t.roomId||t.strRoomId)&&e.userId===t.userId&&e.sdkAppId===t.sdkAppId),Q(e=>function(t){return this._log.setUserId(t.userId),this._log.setSdkAppId(t.sdkAppId),e.call(this,t)}),fe()],X.prototype,"enterRoom",1),N([fe()],X.prototype,"exitRoom",1),N([Xe(Ue.TRTC.switchRole),Br("room",{merge:(e,t)=>t}),fe()],X.prototype,"switchRole",1),N([fe()],X.prototype,"destroy",1),N([Xe(Ue.TRTC.startLocalAudio),sr("audio",([e],[t])=>{var r,o;return((r=e==null?void 0:e.option)==null?void 0:r.microphoneId)===((o=t==null?void 0:t.option)==null?void 0:o.microphoneId)}),fe()],X.prototype,"startLocalAudio",1),N([Xe(Ue.TRTC.updateLocalAudio),Br("audio",{debounce:{delay:200,getKey:()=>`${zm}-localAudio`,isNeedToDebounce:e=>{var t;return!T((t=e.option)==null?void 0:t.captureVolume)}}}),fe()],X.prototype,"updateLocalAudio",1),N([or("audio"),fe()],X.prototype,"stopLocalAudio",1),N([Xe(Ue.TRTC.startLocalVideo),sr("video",([e],[t])=>{var r,o;return((r=e==null?void 0:e.option)==null?void 0:r.cameraId)===((o=t==null?void 0:t.option)==null?void 0:o.cameraId)}),fe()],X.prototype,"startLocalVideo",1),N([Xe(Ue.TRTC.updateLocalVideo),Br("video"),fe()],X.prototype,"updateLocalVideo",1),N([or("video"),fe()],X.prototype,"stopLocalVideo",1),N([Xe(Ue.TRTC.startScreenShare),sr("screen",()=>!0),fe()],X.prototype,"startScreenShare",1),N([Xe(Ue.TRTC.updateScreenShare),Br("screen"),fe()],X.prototype,"updateScreenShare",1),N([fe()],X.prototype,"stopScreenShare",1),N([Xe(Ue.TRTC.startRemoteVideo),sr(e=>`v${e.userId}${e.streamType}`,()=>!0),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],X.prototype,"startRemoteVideo",1),N([Xe(Ue.TRTC.updateRemoteVideo),Br(e=>`v${e.userId}${e.streamType}`),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],X.prototype,"updateRemoteVideo",1),N([Xe(Ue.TRTC.stopRemoteVideo),Q(e=>function(t){return p(this,null,function*(){if(t.userId==="*"){let r=[];return this._room.remotePublishedUserMap.forEach(o=>{this._remoteVideoConfigMap.has(`${o.userId}_main`)&&r.push(this.stopRemoteVideo({streamType:"main",userId:o.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${o.userId}_sub`)&&r.push(this.stopRemoteVideo({streamType:"sub",userId:o.userId}).catch(()=>{}))}),Promise.all(r)}return e.call(this,t)})}),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],X.prototype,"stopRemoteVideo",1),N([or(e=>`v${e.userId}${e.streamType}`)],X.prototype,"_stopRemoteVideo",1),N([Xe(...Ue.TRTC.muteRemoteAudio),fe({getRemoteId:e=>e})],X.prototype,"muteRemoteAudio",1),N([ql(...Ue.TRTC.setRemoteAudioVolume),$m(200,e=>e),fe({getRemoteId:e=>e})],X.prototype,"setRemoteAudioVolume",1),N([Ka("start"),Ze(e=>{var t;return(t=e.afterStart)==null?void 0:t.call(e)}),sr((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Rd[e.getName()],ignoreLog:e=>e.getName()==="Debug"})],X.prototype,"startPlugin",1),N([Ka("update"),Br((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>yd[e.getName()]})],X.prototype,"updatePlugin",1),N([Ka("stop"),or((e,t)=>{if(e.disableRandomCall)return null;let r=e.getGroup(t),o=e.getAlias();return r==="*"?new RegExp(`${o}.*`):o+r}),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>bd[e.getName()]})],X.prototype,"stopPlugin",1),N([ql(...Ue.TRTC.enableAudioVolumeEvaluation)],X.prototype,"enableAudioVolumeEvaluation",1),N([fe()],X.prototype,"getVideoSnapshot",1),N([fe()],X.prototype,"_setCurrentSpeaker",1),N([sr(e=>`a${e.userId}`,()=>!0)],X.prototype,"_startRemoteAudio",1),N([Q(e=>function(t){return p(this,null,function*(){return t.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(r=>this._stopRemoteAudio(x(v({},t),{userId:r.userId})).catch(()=>{}))):e.call(this,t)})}),or(e=>`a${e.userId}`)],X.prototype,"_stopRemoteAudio",1),N([or("room")],X.prototype,"_exitRoom",1),N([or("screen")],X.prototype,"_stopScreenShare",1),N([Xe(...Ue.TRTC.sendSEIMessage),Fl({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],X.prototype,"sendSEIMessage",1),N([Xe(Ue.TRTC.sendCustomMessage),Fl({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],X.prototype,"sendCustomMessage",1),N([Xe(Ue.TRTC.create)],X,"_create",1);var au=X,Zo=au;var cu=class{constructor(){d(this,"_set",new Set);E.on(I.LEAVE_SUCCESS,this.delete,this)}add({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,e||i.roomId,i.sdkAppId,i.useStringRoomId);this._set.add(t)}delete({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,i.roomId||e,i.sdkAppId,i.useStringRoomId);this._set.delete(t)}getKey(i,e,t,r){return`${t}_${e}_${i}_${r}`}isJoined({userId:i,roomId:e,sdkAppId:t,room:r}){return r.scene==="rtc"?!1:this._set.has(this.getKey(i,e,t,r.useStringRoomId))}};function DT(){return p(this,null,function*(){let s,i;try{let h=yield ot();s=h&&h.length}catch(h){}try{let h=yield _t();i=h&&h.length}catch(h){}let e={microphone:s,camera:i},{isH264EncodeSupported:t,isVp8EncodeSupported:r,isH264DecodeSupported:o,isVp8DecodeSupported:n}=this.checkSystemResult.detail,a=ti.basis(),c={webRTC:a.isWebRTCSupported,getUserMedia:a.isGetUserMediaSupported,webSocket:a.isWebSocketsSupported,screenShare:a.isScreenShareSupported,webAudio:a.isWebAudioSupported,h264Encode:t,h264Decode:o,vp8Encode:r,vp8Decode:n},l={browser:a.browser,os:a.os,trtc:c,devices:e},u={isWebCodecSupported:a.isWebCodecSupported,isMediaSessionSupported:a.isMediaSessionSupported,isWebTransportSupported:a.isWebTransportSupported};te.uploadEvent({log:`trtcstats-${JSON.stringify(l)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(l)}`),te.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(u)}`,userId:this.userId})})}function Ym(){return Q(s=>{let i=new cu;return function(e,t,r){return p(this,null,function*(){let o=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=t,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new y({code:S.INVALID_OPERATION,message:P({key:L.INVALID_JOIN})});if(this.checkDestroy(),i.isJoined({userId:this.userId,roomId:o,sdkAppId:this.sdkAppId,room:this}))throw new y({code:S.INVALID_OPERATION,message:P({key:L.REPEAT_JOIN,data:this.userId})});i.add({room:this,roomId:o}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${o} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),E.emit(I.JOIN_START,{room:this,roomId:o,params:e});let n=ct.getEnv();n||(n=_i.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(Tn.OLD_CLOUD_LADDER)?n=_i.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(Tn.WEBRTC)&&(n=_i.WEBRTC))),te.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:o}),ti.checkSystemRequirementsInternal().then(a=>{this.checkSystemResult=a,DT.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!ct.getEnv()&&(yield this.schedule(e,r));let a=yield s.call(this,e,t,r);return this.roomId=o,this._joinedTimestamp=ct.performanceNow(),E.emit(I.JOIN_SUCCESS,{room:this}),r===30&&!e.component&&te.uploadEvent({log:`stat-conv-${Number(Lt)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw i.delete({room:this,roomId:o}),E.emit(I.JOIN_FAILED,{room:this,error:a}),a}})}})}var Km=()=>Q(s=>function(...i){return p(this,null,function*(){E.emit(I.LEAVE_START,{room:this}),yield s.call(this,...i),E.emit(I.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function Zm(){return Q(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var tp=Be(Qe());var ye={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6"};var Bt={CLIENT_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,PUBLISH_STATE_CHANGE_RESULT:4112,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,START_PUBLISH_CDN_STREAM_RES:8196,UPDATE_PUBLISH_CDN_STREAM_RES:8198,STOP_PUBLISH_CDN_STREAM_RES:8200,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110,UPDATE_CONSTRAINT_CONFIG_RES:772,REBUILD_PEER_CONNECTION_RES:4150,SPC_PUBLISH_RESULT:4146,SPC_SUBSCRIBE_RESULT:4156,ABILITY_STATUS_REPORT_RESULT:4158,SERVER_FIRST_PACKAGE_RECEIVED:5e3,RECEIVE_CUSTOM_MSG:4140},ep=[Bt.UPDATE_REMOTE_MUTE_STAT,Bt.UPLINK_NETWORK_STATS,Bt.USER_LIST_RES,Bt.MUTE_RESULT,Bt.SERVER_FIRST_PACKAGE_RECEIVED,Bt.RECEIVE_CUSTOM_MSG],G={CLIENT_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",PUBLISH_STATE_CHANGE_RESULT:"publish-state-change-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",START_PUBLISH_CDN_STREAM_RES:"start-publish-cdn-stream-res",UPDATE_PUBLISH_CDN_STREAM_RES:"update-publish-cdn-stream-res",STOP_PUBLISH_CDN_STREAM_RES:"stop-publish-cdn-stream-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result",UPDATE_CONSTRAINT_CONFIG_RES:"update-contraint-config-res",REBUILD_PEER_CONNECTION_RES:"rebuild-pc-res",SPC_PUBLISH_RESULT:"spc-publish-result",SPC_SUBSCRIBE_RESULT:"spc-subscribe-result",ABILITY_STATUS_REPORT_RESULT:"ability-status-report",SERVER_FIRST_PACKAGE_RECEIVED:"first-pkg-received",RECEIVE_CUSTOM_MSG:"receive-custom-msg"},Y={PUBLISH_CHANGE:"publish_change",JOIN_ROOM:"join",LEAVE_ROOM:"leave",ON_QUALITY_REPORT:"quality_report",UPDATE_MUTE_STAT:"mute_uplink",PUBLISH:"publish",PUBLISH_STATE_CHANGE:"publish_state_change",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",RECEIVE_DATA_USER_LIST:"receive_data_userlist",UNSUBSCRIBE:"unsubscribe",SUBSCRIBE_CHANGE:"subscribe_change",START_PUBLISH_TENCENT_CDN:"start_publishing",STOP_PUBLISH_TENCENT_CDN:"stop_publishing",START_PUBLISH_GIVEN_CDN:"start_push_user_cdn",STOP_PUBLISH_GIVEN_CDN:"stop_push_user_cdn",START_MIX_TRANSCODE:"start_mcu_mix",STOP_MIX_TRANSCODE:"stop_mcu_mix",START_PUBLISH_CDN_STREAM:"start_publish_cdn_stream",UPDATE_PUBLISH_CDN_STREAM:"update_publish_cdn_stream",STOP_PUBLISH_CDN_STREAM:"stop_publish_cdn_stream",GET_USER_LIST:"get_user_list",SWITCH_ROLE:"change_role",UPDATE_CONSTRAINT_CONFIG:"update_constraint_config",REBUILD_PEER_CONNECTION:"rebuild_pc",READY_TO_RECEIVE_DATA:"ready_to_receive",SPC_JOIN_ROOM:"join/v2",SPC_PUBLISH:"publish/v2",SPC_SUBSCRIBE:"subscribe/v3",ABILITY_STATUS_REPORT:"ability_status_report",RECONNECT_WS:"reconnect",SEND_CUSTOM_MSG:"channel_msg"};var cc=new Set;function ip(s){let i=[...cc.values()].find(e=>e.room.userId===s&&!e.room.isJoined);return i||null}var Ls=class extends tp.default{constructor(e){var r,o,n;super();d(this,"room");d(this,"sdkAppId");d(this,"userId");d(this,"userSig");d(this,"url");d(this,"backupUrl");d(this,"destroyed",!1);d(this,"_socketInUse");d(this,"_socket");d(this,"_backupSocket");d(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,bakRelayIps:[]});d(this,"_currentState","DISCONNECTED");d(this,"_isReconnecting",!1);d(this,"_seq",0);d(this,"_log");d(this,"_lastMessageTime",-1);d(this,"_connectStartTime",-1);d(this,"_stopConnectRetry");d(this,"bytesSent",0);d(this,"bytesReceived",0);d(this,"keepAlive",!1);d(this,"signalDomainWhenUnifiedProxy");d(this,"stopKeepAliveTimeout");d(this,"rtt",0);this.room=e.room,this.sdkAppId=e.sdkAppId,this.userId=e.userId,this.userSig=e.userSig,this.signalDomainWhenUnifiedProxy=e.signalDomainWhenUnifiedProxy;let t=((o=(r=this.room.scheduleResult)==null?void 0:r.config)==null?void 0:o.keepAliveClient)||0;(n=this.room.joinParams)!=null&&n.keepAlive&&!t&&(t=1),t-cc.size>0&&this.room.enableSPC&&(this.keepAlive=!0,cc.add(this)),this.url=e.url,this.backupUrl=e.backupUrl,this._seq=0,this._log=R.createLogger({id:"ws",userId:this.userId,sdkAppId:this.sdkAppId}),this.onmessage=this.onmessage.bind(this),this.onerror=this.onerror.bind(this),this.onclose=this.onclose.bind(this)}get race(){return this.room.enableSPC&&!this.room.proxy_ws}get urlParam(){let e=`?sdkAppId=${encodeURIComponent(this.sdkAppId)}&userId=${encodeURIComponent(this.userId)}&userSig=${encodeURIComponent(this.userSig)}&keepAlive=${encodeURIComponent(Number(this.keepAlive))}`;this.signalDomainWhenUnifiedProxy&&(e+=`&signalDomain=${encodeURIComponent(this.signalDomainWhenUnifiedProxy)}`);let t=new URLSearchParams(location.search).get("clientIp");return t&&(e+=`&clientIp=${t}`),this.race?`${e}&race=1`:e}get _urlWithParam(){return`${this.url}${this.race?"/v2/ws":""}${this.urlParam}`}get _backupUrlWithParam(){return`${this.backupUrl}${this.race?"/v2/ws":""}${this.urlParam}`}get isConnected(){return this._currentState==="CONNECTED"}get isConnecting(){return this._currentState==="CONNECTING"}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12*1e3}connect(){return p(this,arguments,function*(e=10*1e3){if(this.isConnected)return Promise.resolve();this._log.info(`connect to [${this.url}, ${this.backupUrl}] ${this.race?"race":""}${e?` timeout: ${e}`:""} keepAlive: ${Number(this.keepAlive)}`),this.emitConnectionStateChanged("CONNECTING"),this._connectStartTime=w();let t=[this.connectWS({url:this._urlWithParam,isMain:!0,timeout:e})];this.race&&this._backupUrlWithParam!==this._urlWithParam&&t.push(this.connectWS({url:this._backupUrlWithParam,isMain:!1,timeout:e})),this._socketInUse=yield Tr(t),this.unbindAndCloseSocket(this._socketInUse===this._socket?m.BACKUP:m.MAIN),this.emitConnectionStateChanged("CONNECTED")})}connectWS({url:e,timeout:t,isMain:r}){let o=new WebSocket(e);this.bindSocket(o),r?this._socket=o:this._backupSocket=o;let n=-1;return new Promise((a,c)=>{o.onclose=c,o.onerror=c,o.onopen=()=>a(o),t&&(n=setTimeout(()=>{this.unbindAndCloseSocket(r?m.MAIN:m.BACKUP),c(new y({code:S.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},t))}).finally(()=>{o.onclose=null,o.onerror=null,o.onopen=null,clearTimeout(n)})}bindSocket(e){e.addEventListener("close",this.onclose),e.addEventListener("error",this.onerror),e.addEventListener("message",this.onmessage)}unbindSocket(e){e.removeEventListener("close",this.onclose),e.removeEventListener("error",this.onerror),e.removeEventListener("message",this.onmessage)}unbindAndCloseSocket(e){if(e===m.MAIN){if(this._socket){this.unbindSocket(this._socket);try{this._socket.close(1e3)}catch(t){}this._socket=null}}else if(this._backupSocket){this.unbindSocket(this._backupSocket);try{this._backupSocket.close(1e3)}catch(t){}this._backupSocket=null}}onclose(e){e.target===this._socketInUse&&(this._log.warn(`${e.target===this._socket?"main":"backup"} is closed code:${e.code} ${e.reason}`),this.emitConnectionStateChanged("DISCONNECTED"),(!e.wasClean||e.code!==1e3)&&this.startReconnection(),this.room.isJoining&&this.emit(ye.SETUP_FAILED,new y({code:S.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onclose"})))}onerror(e){this._log.error(`${e.target===this._socket?"main":"backup"} error observed`),this.emitConnectionStateChanged("DISCONNECTED"),e.target===this._socketInUse&&(this.unbindAndCloseSocket(m.MAIN),this.unbindAndCloseSocket(m.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(ye.SETUP_FAILED,new y({code:S.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(e){if(!this.isConnected)return;this._lastMessageTime=Date.now(),this.bytesReceived+=Zs(e.data);let t=JSON.parse(e.data),{cmd:r,data:o}=t,n=Object.values(Bt),c=Object.keys(Bt)[n.indexOf(r)],l=G[c]||r;switch(ep.includes(r)||(this._log.debug(`received ${r} msg: ${e.data}`),l&&this._log.info(`Received event: [ ${l} ]`)),r){case Bt.CHANNEL_SETUP_RESULT:{if(t.code===0)this._signalInfo.clientIp=o.clientIp,this._signalInfo.signalIp=o.signalInnerIp,o.svrTime&&wu(o.svrTime),this._log.info(`ChannelSetup Success ${w()-this._connectStartTime}`),b.addSuccessEvent({key:521701,cost:w()-this._connectStartTime}),this._connectStartTime=-1,this.emit(ye.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let u=new y({code:S.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:P({key:L.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:t.code,errorMsg:t.message}})});this._log.error(`${t.code}, ${t.message}`),this.close(),b.addFailedEvent({key:521701,error:u}),this.emit(ye.SETUP_FAILED,u)}break}case Bt.JOIN_ROOM_RESULT:{t.code===0&&(this._signalInfo.relayIp=o.relayOuterIp,this._signalInfo.relayInnerIp=o.relayInnerIp,this._signalInfo.bakRelayIps=o.bakRelayIps,this._signalInfo.relayPort=o.relayPort,this._signalInfo.tinyId=t.tinyId,this._signalInfo.endReportExtend=o.endReportExtend,this._log.info(`signalIp:${this._signalInfo.signalIp} clientIp:${this._signalInfo.clientIp} relayIp: ${this._signalInfo.relayIp}`)),this.emit(l,{data:t});break}default:this.emit(String(l),{data:t});break}}reGetSignalChannelUrl(){return p(this,null,function*(){try{if(!this.room.joinParams)return;Vt(!0),yield this.room.schedule(this.room.joinParams);let{mainUrl:e,backupUrl:t}=this.room.getSignalChannelUrl();this.url=e,this.backupUrl=t}catch(e){}})}startReconnection(){if(!this._socketInUse)return;this._socketInUse.onclose=null,this._socketInUse.close(4011);let e=this._socketInUse===this._socket;this.unbindAndCloseSocket(e?m.MAIN:m.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return p(this,null,function*(){if(!this._isReconnecting){if(!this.room.isJoined&&this.keepAlive){this.close();return}this._isReconnecting=!0;try{this._log.warn("reconnect"),yield this.connect();let{roomId:e,useStringRoomId:t}=this.room,{relayIp:r,relayInnerIp:o,relayPort:n}=this._signalInfo,{data:a}=yield this.sendWaitForResponse({command:Y.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:o,relayOuterIp:r,relayPort:n},responseCommand:G.CHANNEL_RECONNECT_RESULT});a.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),b.addSuccessEvent({key:521702,cost:w()-this._connectStartTime}),this._connectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(b.addFailedEvent({key:521702,error:a.code}),this._log.warn(`reconnect failed, ${a.code} ${a.message}`),this.room.reJoin())}catch(e){this._log.error(e),this.room.reJoin()}}})}send(e,t={}){if(this.isConnected&&!this.room.isLeft){let r={cmd:e,data:t,userId:this.userId,tinyId:this._signalInfo.tinyId,seq:++this._seq},o=JSON.stringify(r);return this._socketInUse.send(o),this.bytesSent+=Zs(o),r.seq}}sendWaitForResponse({command:e,data:t,timeout:r=5e3,responseCommand:o,commandDesc:n,enableLog:a=!0,addReceiveTime:c=!1}){return new Promise((l,u)=>{let h=setTimeout(()=>{this.off(o,_);let g=new y({code:S.API_CALL_TIMEOUT,message:P({key:L.API_CALL_TIMEOUT,data:{commandDesc:n,command:e}})});a&&this._log.warn(g),u(g)},r),f=Date.now(),_=g=>{g.data.seq===D&&(clearTimeout(h),this.off(o,_),c&&(g.data.receiveTime=Date.now()),l(g))};this.on(o,_);let D=this.send(e,t)})}sendWaitForResponseWithRetry(e){let{commandDesc:t,command:r,retries:o=0,retryTimeout:n=0}=e;return jt({retryFunction:this.sendWaitForResponse,onError:({retry:a})=>{this.isOnline?a():(this._log.warn(`retry ${r} when connected`),this.once(ye.CONNECTED,a))},onRetrying:a=>{this._log.warn(`${t||r} timeout observed, retrying [${a}/${o}]`)},settings:{retries:o,timeout:n},context:this})(e)}getCurrentState(){return this._currentState}getSignalInfo(){return this._signalInfo}stopReconnection(){this._isReconnecting=!1,this._stopConnectRetry&&this._stopConnectRetry()}close(){this._log.info("closed"),clearTimeout(this.stopKeepAliveTimeout),cc.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,bakRelayIps:[],endReportExtend:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(m.MAIN),this.unbindAndCloseSocket(m.BACKUP),this.emitConnectionStateChanged("DISCONNECTED")}destroy(){this.close(),this.destroyed=!0}getBackupRelayIpPair(){var t;let e=(t=this._signalInfo.bakRelayIps)==null?void 0:t.shift();return e&&(e.relayPort=e.relayPort||this._signalInfo.relayPort),e}clearBakRelayIps(){this._signalInfo.bakRelayIps=[]}stopKeepAliveIn(e=3600){if(this.keepAlive){this._log.info(`stopKeepAlive in ${e}s`),this.stopKeepAliveTimeout=setTimeout(()=>{this.keepAlive=!1,this._log.info(`close due to not used ${e}s`),this.close(),this.off(G.JOIN_ROOM_RESULT,t)},e*1e3);let t=r=>{r.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(G.JOIN_ROOM_RESULT,t))};this.on(G.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){e!==this._currentState&&(this._log.info(`${this._currentState} -> ${e}`),this.emit(ye.CONNECTION_STATE_CHANGED,{prevState:this._currentState,state:e}),this._currentState=e,e==="CONNECTED"?this.emit(ye.CONNECTED):e==="DISCONNECTED"&&this.emit(ye.DISCONNECTED))}};N([mt({settings:{retries:1/0,timeout:2e3},onError(e,t){!this.room.isDestroyed&&!this.destroyed&&t()},onRetrying(e,t){this._log.warn(`retrying to connect ${e}`),e>=3&&e%3===0&&this.reGetSignalChannelUrl(),t&&(this._stopConnectRetry=t,(this.room.isDestroyed||this.destroyed)&&t())}})],Ls.prototype,"connect",1);var rp=Be(Qe());var du=0,lu=!1,dc=new Set,MT=s=>du>2&&!lu&&dc.size===0&&s,uu=!1,it=class{constructor(i){d(this,"userId");d(this,"tinyId");d(this,"_sdpSemantics");d(this,"_isUplink");d(this,"_room");d(this,"_log");d(this,"_signalChannel");d(this,"_isErrorObserved",!1);d(this,"_waitForPeerConnectionConnectedPromise");d(this,"_waitForPeerConnectionConnectedPromiseReject",null);d(this,"_peerConnection",null);d(this,"_emitter",new rp.default);d(this,"_currentState","DISCONNECTED");d(this,"_isReconnecting",!1);d(this,"_reconnectionCount",0);d(this,"_reconnectionTimer",-1);d(this,"_isFirstConnection",!0);d(this,"_prevTime",-1);d(this,"_localAddress");d(this,"_remoteAddress");this.userId=i.userId,this.tinyId=i.tinyId,this._room=i.room,this._sdpSemantics=i.room.sdpSemantics,this._isUplink=i.isUplink,this._log=R.createLogger({id:"n-mpc",userId:this._room.userId,remoteUserId:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink}),this._signalChannel=i.signalChannel}beforeConnect(){this._prevTime<0&&(this._prevTime=w())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,b.addSuccessEvent({key:521705,cost:Math.min(w()-this._prevTime,30*1e3)})):this._isReconnecting&&b.addSuccessEvent({key:521706,cost:w()-this._prevTime}),this._prevTime=-1}catch(i){throw this._isFirstConnection?(this._isFirstConnection=!1,b.addFailedEvent({key:521705,error:i})):this._isReconnecting&&this._reconnectionCount>=3&&b.addFailedEvent({key:521706,error:i}),i}}initialize(){let i={iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this._peerConnection=new RTCPeerConnection(i),this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this)}close(i){this._log.info("close connection"),this._emitter.emit("closed",i),this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),dc.delete(this)}closePeerConnection(i=!1){this._peerConnection&&(this._log.info("close pc"),this._peerConnection.onconnectionstatechange=null,this._peerConnection.close(),this._peerConnection=null,i&&this.emitConnectionStateChangedEvent("DISCONNECTED")),this._waitForPeerConnectionConnectedPromiseReject&&this._waitForPeerConnectionConnectedPromiseReject(new y({code:S.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return yt;let i=null;if(this._isUplink){if(!er()||this._peerConnection.getSenders().length===0)return yt;i=this._peerConnection.getSenders()[0].transport}else{if(!yr()||this._peerConnection.getReceivers().length===0)return yt;i=this._peerConnection.getReceivers()[0].transport}return i?i.state:yt}onConnectionStateChange(i){let e=this._peerConnection.iceConnectionState,t=this.getDTLSTransportState();if(this._log.info(`connectionState: ${i.target.connectionState}, ICE: ${e}, DTLS: ${t}`),i.target.connectionState===me.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),i.target.connectionState===me.FAILED||i.target.connectionState===me.CLOSED){let r=`connection ${i.target.connectionState}. ICE Transport state: ${e}, DTLS Transport state: ${t}`,o=new y({message:r,code:S.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",o)}(i.target.connectionState===me.CONNECTED||i.target.connectionState===me.COMPLETED)&&(this.logSelectedCandidate(),te.logSuccessEvent({userId:this._room.userId,eventType:rt.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(i){return i===this._currentState?!1:(i==="CONNECTED"?(du=0,lu=!1,uu=!0,dc.add(this)):dc.delete(this),E.emit(I.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:i,remoteUserId:this._isUplink?void 0:this.userId}),this._emitter.emit("connection-state-changed",{prevState:this._currentState,state:i}),this._currentState=i,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}logSelectedCandidate(){return p(this,null,function*(){if(!this._peerConnection)return;let i=yield this._peerConnection.getStats();for(let[,e]of i)if(Zi(e)){let t=i.get(e.localCandidateId),r=i.get(e.remoteCandidateId);t&&(this._log.info(`local candidate: ${t.candidateType} ${t.protocol}:${t.ip||t.address}:${t.port} ${t.networkType||""} ${t.candidateType==="relay"?`relayProtocol:${t.relayProtocol}`:""}`),this._localAddress=`${t.ip||t.address}:${t.port}`),r&&(this._log.info(`remote candidate: ${r.candidateType} ${r.protocol}:${r.ip||r.address}:${r.port}`),this._remoteAddress=`${r.protocol}:${r.ip||r.address}`);break}})}getCurrentState(){return this._currentState}waitForPeerConnectionConnected(){return this._waitForPeerConnectionConnectedPromise?this._waitForPeerConnectionConnectedPromise:(this._waitForPeerConnectionConnectedPromise=new Promise((i,e)=>{if(this._currentState==="CONNECTED")return i();this._waitForPeerConnectionConnectedPromiseReject=e;let t=a=>{a.state==="CONNECTED"&&(clearTimeout(n),o(),i())},r=({room:a})=>{a===this._room&&(clearTimeout(n),o(),e(new y({code:S.API_CALL_ABORTED,message:P({key:L.CONNECTION_ABORTED,data:"leave room"})})))},o=()=>{E.off(I.LEAVE_SUCCESS,r,this),this._emitter.off("connection-state-changed",t,this)},n=setTimeout(()=>{o();let a=new y({code:S.API_CALL_TIMEOUT,message:"connection timeout"});du+=1,MT(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),lu=!0,this._emitter.emit("firewall-restriction")),e(a)},Xs);E.on(I.LEAVE_SUCCESS,r,this),this._emitter.on("connection-state-changed",t,this)}),this._waitForPeerConnectionConnectedPromise=this._waitForPeerConnectionConnectedPromise.finally(()=>{this._waitForPeerConnectionConnectedPromise=null,this._waitForPeerConnectionConnectedPromiseReject=null}),this._waitForPeerConnectionConnectedPromise)}getReconnectionCount(){return this._reconnectionCount}startReconnection(){this._isReconnecting=!0,this.reconnect()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}stopReconnection(){this._log.info("stop reconnection"),this._isReconnecting=!1,this._reconnectionCount=0,this.clearReconnectionTimer(),this._signalChannel.off(ye.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=gi()){this._log.warn(`SDK has tried reconnect for ${this._reconnectionCount} times, but all failed, please check your network`),this.stopReconnection();let i=new y({code:this._isUplink?S.UPLINK_RECONNECTION_FAILED:S.DOWNLINK_RECONNECTION_FAILED,message:P({key:this._isUplink?L.UPLINK_RECONNECTION_FAILED:L.DOWNLINK_RECONNECTION_FAILED})});return this.emitConnectionStateChangedEvent("DISCONNECTED"),this._emitter.emit("error",i),-1}return this._signalChannel.isConnected?(this._reconnectionCount+=1,this._log.warn(`reconnect() trying [${this._reconnectionCount}]`),1):(this._log.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this._signalChannel.once(ye.CONNECTED,this.reconnect,this),-1)}on(i,e,t){this._emitter.on(i,e,t)}off(i,e,t){this._emitter.off(i,e,t)}getIsReconnecting(){return this._isReconnecting}get isH264(){var i,e;return!!((e=(i=this._peerConnection)==null?void 0:i.remoteDescription)!=null&&e.sdp.includes("H264"))}setOffer(i){var e;return(e=this._peerConnection)==null?void 0:e.setLocalDescription(i)}setAnswer(i){var e;return(e=this._peerConnection)==null?void 0:e.setRemoteDescription(i)}};N([nt(521712,!1)],it.prototype,"setOffer",1),N([nt(521713,!1)],it.prototype,"setAnswer",1);var fu=Be(pu());var Ae=function(s){return fu.default.parse(s)},Ct=function(s){return fu.default.write(s)},up=function(s){let i=Ae(s);return i.media.forEach(e=>{e.type===m.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),Ct(i)};function hp(s){let i=Ae(s);return i.media.forEach(e=>{var t,r;if(e.type===m.VIDEO){let o=new Set;e.rtp.forEach(({payload:a,codec:c})=>c==="H264"&&o.add(a)),e.fmtp.forEach(({payload:a,config:c})=>{let l=c.match(/apt=(\d+)/);l&&l[1]&&o.has(Number(l[1]))&&o.add(a)});let n=({payload:a})=>!o.has(a);e.rtp=e.rtp.filter(n),e.rtcpFb=(t=e.rtcpFb)==null?void 0:t.filter(n),e.fmtp=e.fmtp.filter(n),e.payloads=(r=e.payloads)==null?void 0:r.split(" ").filter(a=>!o.has(Number(a))).join(" ")}}),Ct(i)}function lc(s){return Object.keys(s).filter(i=>s[i])}var xs=class xs extends it{constructor(e){super(x(v({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"remoteAudioTrack");d(this,"remoteVideoTrack");d(this,"remoteAuxiliaryTrack");d(this,"ssrc",{audio:0,video:0,auxiliary:0});d(this,"_isSDPExchanging",!1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new xi(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new ui(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new vs(this._room,this)}get videoCodec(){var t,r;let e=(r=(t=this._peerConnection)==null?void 0:t.remoteDescription)==null?void 0:r.sdp;return e?e.includes("H264")?"h264":"vp8":"h264"}get subscribeState(){let e={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?e.smallVideo=!0:e.video=!0),this.remoteAudioTrack.isSubscribed&&(e.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(e.auxiliary=!0),e}get muteState(){return Si(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===m.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){super.initialize(),this.installEvents(),this._peerConnection.ontrack=this.onTrack.bind(this)}close(e){super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var o,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){let t=e.streams[0],{track:r}=e,o=t.id===qs?m.MAIN:m.AUXILIARY;this._log.debug(`ontrack ${o} ${r.kind}`);let n=m.AUDIO;r.kind===m.VIDEO&&(n=o===m.MAIN?m.VIDEO:m.AUXILIARY);let a=this.remoteAudioTrack;n===m.VIDEO?a=this.remoteVideoTrack:n===m.AUXILIARY&&(a=this.remoteAuxiliaryTrack),a.setInputMediaStreamTrack(r)}addRRTRLine(e){let t=e.split(`\r
62
+ `),r=new Map;t.forEach((n,a)=>{/^a=rtcp-fb:/.test(n)&&t[a+1]&&!/^a=rtcp-fb:/.test(t[a+1])&&r.set(a+1,`${n.match(/^a=rtcp-fb:\d+/)[0]} rrtr`)});let o=[...r];for(let n=0;n<o.length;n++){let[a,c]=o[n];t.splice(a+n,0,c)}return t.join(`\r
63
+ `)}addSPSDescription(e){let t=Ae(e);return t.media.forEach(r=>{r.type===m.VIDEO&&r.fmtp.forEach(o=>{o.config+=";sps-pps-idr-in-keyframe=1"})}),Ct(t)}removeSDESDescription(e){let t=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],r=Ae(e);return r.media.forEach(o=>{o.ext&&(o.ext=o.ext.filter(n=>!t.includes(n.uri)))}),Ct(r)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return p(this,null,function*(){var r,o;try{if((((r=this._peerConnection)==null?void 0:r.connectionState)===me.NEW||((o=this._peerConnection)==null?void 0:o.connectionState)===me.CONNECTING)&&(yield this.waitForPeerConnectionConnected()),this.isSubscriptionStateNotChanged(e)){this._peerConnection||(this.initialize(),yield this.connect(e));return}if(this._log.info(`subscribe ${t} ${JSON.stringify(e)}`),this._peerConnection||this._isSDPExchanging){let n="subscribe_change";Object.values(e).find(a=>a===!0)||(n="unsubscribe"),yield this.sendSubscription(n,e)}else this.initialize(),yield this.connect(e)}catch(n){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${n.message} ${JSON.stringify(this.muteState)}`),new y({code:S.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}unsubscribe(r){return p(this,arguments,function*({remoteTracks:e,streamType:t}){if(this._currentState==="CONNECTED"&&(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed)){this._log.info(`${t} stream already unsubscribed`);return}let o=v({},this.subscribeState);e.forEach(a=>{switch(a.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(o).find(a=>a===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${lc(o)}]`),yield this.sendSubscription(n,o),n==="unsubscribe"&&(this.closePeerConnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"))})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},o=Y.UNSUBSCRIBE,n=G.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=Y.SUBSCRIBE_CHANGE,n=G.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:o,data:r,responseCommand:n,timeout:1e4}).then(({data:a})=>{if(a.code!==0){let c=new y({code:a.code,message:P({key:L.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}connect(){return p(this,arguments,function*(e=this.subscribeState){try{yield this.exchangeSDP(e),yield this.waitForPeerConnectionConnected()}catch(t){throw this.closePeerConnection(!0),t}})}exchangeSDP(e){return p(this,null,function*(){try{this._isSDPExchanging=!0,yield this.createOffer(),this._log.info("createOffer success, sending offer");let{type:t,sdp:r}=this._peerConnection.localDescription,o={type:t,sdp:r,srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo},n=yield this._signalChannel.sendWaitForResponse({command:Y.SUBSCRIBE,commandDesc:"exchange sdp",data:o,responseCommand:G.SUBSCRIBE_RESULT,timeout:Uc});if(!this._peerConnection){let a=new y({code:S.INVALID_OPERATION,message:P({key:L.CONNECTION_CLOSED})});throw this._log.warn(a),a}yield this.onSubscribeResult(n),this._isSDPExchanging=!1}catch(t){throw this._isSDPExchanging=!1,t}})}createOffer(){return p(this,null,function*(){let e={voiceActivityDetection:!1};ht()&&this._sdpSemantics===qi?(this._peerConnection.addTransceiver(m.AUDIO,{direction:Z.RECVONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:Z.RECVONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:Z.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:r}=yield oa();r||(this._log.warn("remove h264 desc from sdp"),t.sdp=hp(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=up(t.sdp),this._sdpSemantics===qi&&(t.sdp=this.removeSDESDescription(t.sdp))}yield this.setOffer(t)})}onSubscribeResult(e){return p(this,null,function*(){let{code:t,message:r=""}=e&&e.data||{},{type:o,sdp:n}=e&&e.data&&e.data.data||{};if(t===ur)throw new y({code:S.NOT_SUPPORTED_H264,message:P({key:L.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new y({code:t,message:P({key:L.EXCHANGE_SDP_FAILED,data:{errMsg:r}})});this._log.debug(`accept remote answer: ${n}`),yield this.setAnswer({type:o,sdp:n}),this.updateSSRC(n)}catch(a){throw this._log.error(a),a}})}updateSSRC(e){try{Ae(e).media.forEach(r=>{if(r.ssrcs)if(r.type===m.AUDIO){let o=r.ssrcs.find(n=>{var a;return(a=n.value)==null?void 0:a.includes(qs)});o&&(this.ssrc.audio=Number(o.id))}else{let o=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(qs)}),n=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(kc)});o&&(this.ssrc.video=Number(o.id)),n&&(this.ssrc.auxiliary=Number(n.id))}})}catch(t){}}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}reconnect(){return p(this,null,function*(){if(!(Fe(xs.prototype,this,"beforeReconnect").call(this)<0))try{this.closePeerConnection(),this.initialize(),yield this.connect(),this.stopReconnection(),this._log.warn("reconnect() success")}catch(t){let r=vt(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}getIsReconnecting(){return this._isReconnecting}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}getCurrentState(){return this._currentState}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}get audioReceiver(){var e;return((e=this._peerConnection)==null?void 0:e.getReceivers()[0])||null}};N([Q(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new y({code:S.API_CALL_ABORTED,message:P({key:L.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],xs.prototype,"subscribe",1),N([nt(521717,!1)],xs.prototype,"unsubscribe",1),N([Ze(it.prototype.afterConnect),Ia(it.prototype.beforeConnect)],xs.prototype,"connect",1);var _u=xs,gu=_u;var pp={voiceActivityDetection:!1},ws=class ws extends it{constructor(e){super(x(v({},e),{isUplink:!0}));d(this,"localMainAudioTrack",null);d(this,"localMainVideoTrack",null);d(this,"localAuxAudioTrack",null);d(this,"localAuxVideoTrack",null);d(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0});d(this,"_isPublishingAux",!1);d(this,"_publishingLocalAudioTrack");d(this,"_publishingLocalVideoTrack");d(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});d(this,"flag",0)}get videoCodec(){return this._mediaSettings.videoCodec.toLowerCase()||"h264"}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,o,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(Zt()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((o=a[2])!=null&&o.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(c=>{c.track&&(c.track.kind===m.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}initialize(){super.initialize(),this.installEvents()}reset(){this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),this.uninstallEvents()}close(e){super.close(e),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this._emitter.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this._emitter.on("connection-state-changed",this.handleConnectionStateChange,this)}uninstallEvents(){this._emitter.off("connection-state-changed",this.handleConnectionStateChange,this)}emitConnectionStateChangedEvent(e,t){var n,a,c;let r=this._currentState,o=super.emitConnectionStateChangedEvent(e);return o&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:r,state:e}))),o}publish(o){return p(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){this._peerConnection||this.initialize(),e&&(this._publishingLocalAudioTrack=e),t&&(this._publishingLocalVideoTrack=t),this._isPublishingAux=r;let n;t&&!r&&t.small&&(n=this._room.videoManager.smallTrack),this.sendMediaSettings(),ht()?yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:n,isAuxiliary:r}):yield this.publishByAddTrack({localAudioTrack:e,localVideoTrack:t,smallTrack:n}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,r?(t&&(this.localAuxVideoTrack=t),e&&(this.localAuxAudioTrack=e)):(t&&(this.localMainVideoTrack=t),e&&(this.localMainAudioTrack=e)),this.installTrackMuteEvents(e,t),this.sendMutedFlag()})}publishByTransceiver(n){return p(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:o}){this._log.info("publish by transceiver");let a=new MediaStream,c=t==null?void 0:t.outMediaTrack,l=e==null?void 0:e.outMediaTrack;l&&a.addTrack(l),c&&a.addTrack(c);let u=this._peerConnection.getTransceivers();if(u.length===0)this._peerConnection.addTransceiver(l||m.AUDIO,{direction:Z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?m.VIDEO:c||m.VIDEO,{direction:Z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(r||m.VIDEO,{direction:Z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?c||m.VIDEO:m.VIDEO,{direction:Z.SENDONLY,streams:[a]}),yield this.connect();else{let h=[];if(l&&(u[0].sender.track||h.push(0),yield u[0].sender.replaceTrack(l),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:m.AUDIO})),c){let f=o?3:1;yield u[f].sender.replaceTrack(c),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:m.VIDEO,videoType:o?m.AUXILIARY:m.BIG}),h.push(f),r&&(yield u[2].sender.replaceTrack(r),yield this.setBandwidth({bandwidth:t.small.bitrate,type:m.VIDEO,videoType:m.SMALL}),h.push(2))}yield this.setTransceiverDirection(Z.SENDONLY,h),yield this.doPublishChange(),t==null||t.emit("connection-state-changed",{prevState:"DISCONNECTED",state:"CONNECTING"}),t==null||t.emit("connection-state-changed",{prevState:"CONNECTING",state:"CONNECTED"})}})}publishByAddTrack(o){return p(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r}){this._log.info("publish by addtrack");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack;if(this._peerConnection&&this._peerConnection.connectionState!=="new"){e&&a&&(yield this.addTrack(e)),n&&(yield this.addTrack(t));return}let c=new MediaStream;if(a&&c.addTrack(a),n&&c.addTrack(n),a&&this._peerConnection.addTrack(a,c),n&&(this._peerConnection.addTrack(n,c),r)){let l=new MediaStream;l.addTrack(r),this._peerConnection.addTrack(r,l)}yield this.connect()})}enableSmall(e){return p(this,null,function*(){let t=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield t[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.setTransceiverDirection(Z.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.setTransceiverDirection(Z.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return p(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){if(!Zt()){if(e&&e.outMediaTrack&&!t&&this.localMainVideoTrack){yield this.removeTrack(e),this.localMainAudioTrack=null;return}if(t&&t.outMediaTrack&&!e&&this.localMainAudioTrack){yield this.removeTrack(t),this.localMainVideoTrack=null;return}yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),this.emitConnectionStateChangedEvent("DISCONNECTED",t);return}let o=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localAuxAudioTrack&&!this.localMainAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(o?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=x(v({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),c.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=x(v({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),c.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.setTransceiverDirection(Z.INACTIVE,c),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return p(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponse({command:Y.PUBLISH_STATE_CHANGE,data:t,responseCommand:G.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,commandDesc:"unpublish",responseCommand:G.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===S.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let r=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:o,localAuxVideoTrack:n}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?n=this._publishingLocalVideoTrack:o=this._publishingLocalVideoTrack),ei){if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(o&&o.outMediaTrack){let a=o.outMediaTrack.getSettings();this._mediaSettings.videoWidth=a.width||0,this._mediaSettings.videoHeight=a.height||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=o.profile.bitrate*1e3,o.small&&(this._mediaSettings.smallVideoWidth=o.small.width,this._mediaSettings.smallVideoHeight=o.small.height,this._mediaSettings.smallVideoFps=o.small.frameRate,this._mediaSettings.smallVideoBps=o.small.bitrate*1e3)}if(n&&n.outMediaTrack){let a=n.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=a.width||0,this._mediaSettings.auxVideoHeight=a.height||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=n.profile.bitrate*1e3}}else r&&r.outMediaTrack&&(this._mediaSettings.audioChannel=r.profile.channelCount,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=r.profile.sampleRate),o&&o.outMediaTrack&&(this._mediaSettings.videoWidth=o.profile.width,this._mediaSettings.videoHeight=o.profile.height,this._mediaSettings.videoFps=o.profile.frameRate,this._mediaSettings.videoBps=o.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Y.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:G.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return p(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?m.AUXILIARY:m.MAIN} stream`),ht()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return p(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===m.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((o=this.localMainVideoTrack)!=null&&o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===Z.INACTIVE&&(yield this.setTransceiverDirection(Z.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return p(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;Zt()&&this._peerConnection.getTransceivers().findIndex(o=>o.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",t));let r=this._peerConnection.getSenders().find(o=>o.track&&o.track.kind===t.kind);if(r&&r.track){this._log.warn("sender already exists, remove sender first");let o=r.track;this.removeSender(r),yield this.updateOffer("remove",o)}if(t&&this._peerConnection.addTrack(t,new MediaStream([t])),t.kind===m.VIDEO&&e instanceof Je&&e.small){let o=new MediaStream,{smallTrack:n}=this._room.videoManager;o.addTrack(n),this._peerConnection.addTrack(n,o)}yield this.updateOffer("add",t)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===qr||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=Ae(e);for(let r=0;r<t.media.length;r++)if(Number(t.media[r].mid)===0&&t.media[r].type===m.VIDEO)return!0;return!1}removeSender(e){let t=null;Zt()&&(t=this._peerConnection.getTransceivers().find(r=>r.sender&&r.sender.track===e.track)),this._peerConnection.removeTrack(e),t&&oe(t.stop)&&(this._log.info("stop transceiver"),t.stop())}removeTrack(e){return p(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?m.AUXILIARY:m.MAIN} stream`),ht()?yield this.removeTrackByTransceiver(e,t):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,t){return p(this,null,function*(){if(!e.outMediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===m.AUDIO)yield r[0].sender.replaceTrack(null);else{let o=t?3:1;yield r[o].sender.replaceTrack(null),o===1&&e.small&&(yield r[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(Z.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,t){return p(this,null,function*(){if(!ne)return;let r=!1,o=!1;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let n=this._peerConnection.getTransceivers();if(t.forEach(l=>{n[l].direction!==e&&(n[l].direction=e,r=!0)}),r){this._log.info("updating offer");let l=yield this._peerConnection.createOffer();yield this.setOffer(l)}let a=-1,c=this._peerConnection.remoteDescription.sdp.split(`\r
64
+ `).map(l=>{if(l.match(new RegExp(`a=(${Z.INACTIVE}|${Z.RECVONLY}|${Z.SENDONLY})`))&&a++,t.includes(a)){if(e===Z.INACTIVE&&l.includes(`a=${Z.RECVONLY}`))return o=!0,`a=${e}`;if(e===Z.SENDONLY&&l.includes(`a=${Z.INACTIVE}`))return o=!0,`a=${Z.RECVONLY}`}return l}).join(`\r
65
+ `);o&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:c}))})}removeTrackBySender(e){return p(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===m.VIDEO&&this.isNeedToResetOfferOrder()&&this.localMainAudioTrack){this.reset(),this.initialize(),yield this.publish({localAudioTrack:this.localMainAudioTrack,isAuxiliary:!1});return}let t=this._peerConnection.getSenders().find(r=>r.track===e.outMediaTrack);t&&(this.removeSender(t),e.kind===m.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(r=>{r.track&&r.track.kind===m.VIDEO&&this.removeSender(r)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return p(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders();if(!t||t.length===0||!e.mediaTrack)return!1;let r;if(ht()?r=e.kind===m.AUDIO?t[0]:t[1]:r=t.find(a=>a.track&&a.track.kind===e.kind),!r)return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${e.kind} track on ${o?m.AUXILIARY:m.MAIN} stream`),e.kind===m.AUDIO?yield r.replaceTrack(e.outMediaTrack):e.kind===m.VIDEO&&(o?t[3]&&(yield t[3].replaceTrack(e.outMediaTrack)):yield r.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,t){return p(this,null,function*(){try{let r=yield this._peerConnection.createOffer(pp);ne&&r.sdp&&(r.sdp=this.setSDPDirection(r.sdp,"sendrecv")),yield this.setOffer(r);let o=this.updateMediaSettings(),n={action:e,trackId:t.id,kind:t.kind===m.VIDEO?"bigVideo":t.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:o,state:this.publishState};this._log.info("createOffer success, sending updated offer to remote server"),this._log.debug(`updatedOffer: ${n.sdp}`);let a=yield this._signalChannel.sendWaitForResponse({command:Y.PUBLISH_CHANGE,data:n,responseCommand:G.UPDATE_OFFER_RESULT,timeout:wc,commandDesc:"update offer"}),{code:c,message:l}=a.data;c!==0&&this.checkPublishResultCode(c,l),yield this.acceptAnswer(a.data.data),r.sdp&&this.updateSSRC(r.sdp)}catch(r){throw this._log.error(r),r}})}setBandwidth(n){return p(this,arguments,function*({bandwidth:e,type:t,videoType:r,sdp:o}){if(!Ro())return o?t===m.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e):void 0;let a,c=this._peerConnection.getSenders();if(ht()){let l=0;t===m.VIDEO&&(r===m.SMALL?l=2:r===m.AUXILIARY?l=3:l=1),a=c[l]}else a=c.find(l=>l.track&&l.track.kind===t);if(a){let l=a.getParameters();(!l.encodings||l.encodings.length===0)&&(l.encodings=[{}]),l.encodings[0].maxBitrate=e*1e3;try{return yield a.setParameters(l),this._log.info(`${r||""}${t} bandwidth ${e} kbps`),o}catch(u){if(this._log.info(`failed to set bandwidth by setting maxBitrate: ${u}`),o)return t===m.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e)}}return o})}updateVideoBandwidthRestriction(e,t,r){let o="AS";ne&&(o="TIAS",t=t*1e3);let n=0,a=-1;return r===m.SMALL?n=1:r===m.AUXILIARY&&(n=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,c=>(a+=1,a===n?`${c}b=${o}:${t}\r
66
+ `:c)),e}updateAudioBandwidthRestriction(e,t){let r="AS";return ne&&(r="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
79
67
  c=IN $2\r
80
68
  b=${r}:${t}\r
81
- `),e}removeBandwidthRestriction(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}removeVideoOrientation(e){return e.replace(/urn:3gpp:video-orientation/,"")}connect(){return I(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return I(this,null,function*(){try{yield this.createOffer(),this._log.info("createOffer success, sending offer to remote server"),yield this.doExchangeSDP()}catch(e){throw e}})}createOffer(){return I(this,null,function*(){try{let e=yield this._peerConnection.createOffer(c_);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:Ne.PUBLISH,responseCommand:ge.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof jt||this.localAuxVideoTrack instanceof jt,state:this.publishState,constraintConfig:this._mediaSettings},enableLog:!1};return this._log.debug(`sending sdp offer: ${e.data.sdp}`),this._signalChannel.sendWaitForResponse(e).then(t=>{let{code:r,message:o,data:n}=t.data;return r===0?this.acceptAnswer(n):this.checkPublishResultCode(r,o)})}setSDPDirection(e,t,r="all"){let o=et(e);return o.media.forEach(n=>{(r==="all"||n.type===r)&&(n.direction=t)}),ui(o)}acceptAnswer(e){return I(this,null,function*(){var t,r,o,n,a;try{let d;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let u=((t=this._publishingLocalVideoTrack)==null?void 0:t.profile.bitrate)||((r=this.localMainVideoTrack)==null?void 0:r.profile.bitrate),m=((o=this._publishingLocalAudioTrack)==null?void 0:o.profile.bitrate)||((n=this.localMainAudioTrack)==null?void 0:n.profile.bitrate);if(u){let p=this._isPublishingAux?S.AUXILIARY:S.BIG;d=yield this.setBandwidth({bandwidth:u,type:S.VIDEO,sdp:d,videoType:p})}m&&(d=yield this.setBandwidth({bandwidth:m,type:S.AUDIO,sdp:d}))}if(d=this.removeVideoOrientation(e.sdp),(a=this._publishingLocalVideoTrack)!=null&&a.small){let{smallStreamConfig:u}=this._room;d=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||u.bitrate,type:S.VIDEO,videoType:S.SMALL,sdp:d})}let h={type:e.type,sdp:d};yield this.setAnswer(h),this._log.debug(`accepted answer: ${d}`)}catch(d){throw this._log.error(`failed to accept remote answer ${d}`),d}})}sendMutedFlag(e){var o,n,a;if(e===this.localAuxAudioTrack||e===this.localAuxVideoTrack)return;let r={audio:!!((o=this.localMainAudioTrack)!=null&&o.muted),bigVideo:!!((n=this.localMainVideoTrack)!=null&&n.muted),auxVideo:!!((a=this.localAuxVideoTrack)!=null&&a.muted)};this._log.info(`send muted state: ${JSON.stringify(r)}`),this._signalChannel.send(Ne.UPDATE_MUTE_STAT,r)}getIsReconnecting(){return this._isReconnecting}reconnect(){return I(this,null,function*(){if(!(Ct(Vo.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:Ne.UNPUBLISH,responseCommand:ge.UNPUBLISH_RESULT,enableLog:!1}),this.closePeerConnection(),this.initialize(),this.isMainStreamPublished&&(yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0})),this._log.warn("reconnect() uplink reconnect successfully"),this.stopReconnection()}catch(t){let r=fi(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&x.emit(V.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{et(e).media.forEach((r,o)=>{if(r.type===S.AUDIO){let n=r.ssrcs&&r.ssrcs[0];n&&(this.ssrc.audio=Number(n.id))}else{if(this._sdpSemantics===Ws&&r.ssrcGroups){r.ssrcGroups.forEach((a,d)=>{let c=Number(a.ssrcs.split(" ")[0]);d===0?this.ssrc.video=c:d===1&&(this.ssrc.small=c)});return}let n=r.ssrcs&&r.ssrcs[0];if(!n)return;switch(o){case 1:this.ssrc.video=Number(n.id);break;case 2:this.ssrc.small=Number(n.id);break;case 3:this.ssrc.auxiliary=Number(n.id);break;default:break}}})}catch(t){}}getVideoTrackId(e=S.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===S.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===S.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===S.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===S.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===ds?(this._log.error(Tt.NOT_SUPPORTED_H264ENCODE),new Q({code:H.NOT_SUPPORTED_H264,message:pe({key:he.NOT_SUPPORTED_H264ENCODE})})):new Q({code:H.UNKNOWN,message:pe({key:he.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ge.PUBLISH_RESULT,code:e,message:t}})})}};q([ve(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new Q({code:H.API_CALL_ABORTED,message:pe({key:he.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],Vo.prototype,"publish",1),q([zt(521715,!1)],Vo.prototype,"unpublish",1),q([Ut($t.prototype.afterConnect),xd($t.prototype.beforeConnect)],Vo.prototype,"connect",1);var Zh=Vo,pa=Zh;var fa=class{constructor(i,e){this.room=i;l(this,"_log");l(this,"_prevReportTime",0);l(this,"_prevReport",{});l(this,"_prevStats",null);l(this,"_prevEncoderImplementation","");l(this,"_prevAuxEncoderImpl","");l(this,"_prevQualityLimitationReason","");l(this,"_prevAuxQualityLimitationReason","");l(this,"_prevDecoderImplementationMap",new Map);l(this,"totalBytesSent",0);l(this,"totalBytesReceived",0);l(this,"_spcStats",null);this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(i){return I(this,null,function*(){var o;let e={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},small:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},auxiliary:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},rtt:0},t=i.getPeerConnection(),r=i.getSSRC();if(t)try{if((this._spcStats||(yield t.getStats())).forEach(a=>{var h,u,m;let d,c;if(a.type==="outbound-rtp")if((a.mediaType||a.kind)===S.VIDEO){if(a.ssrc===r.video?(d=S.VIDEO,c=i.localMainVideoTrack):a.ssrc===r.small?d=S.SMALL:a.ssrc===r.auxiliary&&(c=i.localAuxVideoTrack,d=S.AUXILIARY),!d)return;if(e[d].bytesSent=a.bytesSent,e[d].packetsSent=a.packetsSent,e[d].framesEncoded=a.framesEncoded,L(a.keyFramesEncoded)||(e[d].keyFramesEncoded=a.keyFramesEncoded),L(a.nackCount)||(e[d].nackCount=a.nackCount),L(a.pliCount)||(e[d].pliCount=a.pliCount),L(a.retransmittedPacketsSent)||(e[d].retransmittedPacketsSent=a.retransmittedPacketsSent),L(a.totalEncodeTime)||(e[d].totalEncodeTime=a.totalEncodeTime),L(a.totalPacketSendDelay)||(e[d].totalPacketSendDelay=a.totalPacketSendDelay),!L(a.encoderImplementation)&&(d===S.VIDEO&&this._prevEncoderImplementation!==a.encoderImplementation||d===S.AUXILIARY&&this._prevAuxEncoderImpl!==a.encoderImplementation)){let g=2,f=this._prevEncoderImplementation;d===S.AUXILIARY&&(g=7,f=this._prevAuxEncoderImpl),x.emit("262",{userId:i.userId,streamType:g,prevImplementation:f,implementation:a.encoderImplementation,codec:i.videoCodec,isHWCodec:a.powerEfficientEncoder}),this[d===S.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=a.encoderImplementation,this._log.info(`${d===S.AUXILIARY?"aux ":""}encoderImplementation change to ${a.encoderImplementation}(${i.videoCodec}) HWEncoder: ${a.powerEfficientEncoder}`)}a.ssrc===r.video?!L(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`qualityLimitationReason change to ${a.qualityLimitationReason}`),x.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(h=i.localMainVideoTrack)==null?void 0:h.isQosClearFirst}),this._prevQualityLimitationReason=a.qualityLimitationReason):a.ssrc===r.auxiliary&&!L(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevAuxQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`aux qualityLimitationReason change to ${a.qualityLimitationReason}`),x.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(u=i.localAuxVideoTrack)==null?void 0:u.isQosClearFirst}),this._prevAuxQualityLimitationReason=a.qualityLimitationReason)}else e.audio.bytesSent=a.bytesSent,e.audio.packetsSent=a.packetsSent;else a.type==="candidate-pair"?Xr(a)&&(this.totalBytesSent=a.bytesSent,De(a.currentRoundTripTime)&&(e.rtt=Math.floor(a.currentRoundTripTime*1e3))):a.type==="media-source"&&(a.kind===S.AUDIO?(e.audio.audioLevel=a.audioLevel||0,e.audio.totalAudioEnergy=a.totalAudioEnergy||0,a.echoReturnLoss,a.totalSamplesDuration&&(e.audio.totalSamplesDuration=a.totalSamplesDuration)):a.kind===S.VIDEO&&(a.trackIdentifier===i.getVideoTrackId(S.VIDEO)?e.video.fpsCapture=a.framesPerSecond:a.trackIdentifier===i.getVideoTrackId(S.AUXILIARY)?e.auxiliary.fpsCapture=a.framesPerSecond:e.small.fpsCapture=a.framesPerSecond));if(!L(a.audioLevel)&&((m=i.localMainAudioTrack)!=null&&m.mediaTrack)&&a.trackIdentifier===i.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=a.audioLevel||0),!L(a.frameWidth)){let p=S.SMALL;a.trackIdentifier===i.getVideoTrackId(S.VIDEO)||a.ssrc===r.video?p=S.VIDEO:(a.trackIdentifier===i.getVideoTrackId(S.AUXILIARY)||a.ssrc===r.auxiliary)&&(p=S.AUXILIARY),e[p].frameWidth=a.frameWidth,e[p].frameHeight=a.frameHeight,e[p].framesSent=a.framesSent}}),i.localMainAudioTrack){let a=i.localMainAudioTrack.getInternalAudioLevel();e.audio.micAudioLevel=a,e.audio.audioLevel===0&&(e.audio.audioLevel=a)}this.totalBytesSent||(this.totalBytesSent+=e.audio.bytesSent+e.video.bytesSent+e.auxiliary.bytesSent),Object.keys(e).forEach(a=>{a===S.AUDIO?(i.localMainAudioTrack&&(i.localMainAudioTrack.stat=e[a]),i.localAuxAudioTrack&&(i.localAuxAudioTrack.stat=e[a])):a===S.VIDEO?i.localMainVideoTrack&&(i.localMainVideoTrack.stat=e[a]):a===S.AUXILIARY&&i.localAuxVideoTrack&&(i.localAuxVideoTrack.stat=e[a])})}catch(n){this._log.warn(`failed to getStats on sender connection ${n}`)}return e.rtt===0&&(e.rtt=((o=this.room.networkQuality)==null?void 0:o.uplinkRTT)||0),e})}getReceiverStats(i){return I(this,null,function*(){var r,o,n;let e={tinyId:i.tinyId,userId:i.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,p2pDelay:0,totalJitter:0,totalJitterCount:0,audioLevel:0,totalAudioEnergy:0,insertedSamplesForDeceleration:0,removedSamplesForAcceleration:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,freezeCount:0,totalFreezesDuration:0,totalJitter:0,totalJitterCount:0},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,totalJitter:0,totalJitterCount:0}},t=i.getPeerConnection();if(t)try{let{ssrc:a}=i,{muteState:d,subscribeState:c}=i;(this._spcStats||(yield t.getStats())).forEach(u=>{if(u.type==="inbound-rtp"){let m=(u.mediaType||u.kind)===S.AUDIO;if(m){if(u.ssrc!==a.audio||!d.hasAudio)return;e.audio.packetsReceived=u.packetsReceived,e.audio.bytesReceived=u.bytesReceived,e.audio.packetsLost=u.packetsLost,u.insertedSamplesForDeceleration&&(e.audio.insertedSamplesForDeceleration=u.insertedSamplesForDeceleration),u.removedSamplesForAcceleration&&(e.audio.removedSamplesForAcceleration=u.removedSamplesForAcceleration),u.totalSamplesDuration&&(e.audio.totalSamplesDuration=u.totalSamplesDuration),u.totalSamplesReceived&&(e.audio.totalSamplesReceived=u.totalSamplesReceived),u.concealedSamples&&(e.audio.concealedSamples=u.concealedSamples);let{remoteAudioTrack:p}=i;p.stat.packetsReceived=u.packetsReceived,p.stat.bytesReceived=u.bytesReceived,p.stat.packetsLost=u.packetsLost,e.audio.p2pDelay=p.stat.end2EndDelay,e.hasAudio=!0}else{if(Ue&&u.bytesReceived===0)return;let p;u.ssrc===a.video&&d.hasVideo&&(e.video.packetsReceived=u.packetsReceived,e.video.bytesReceived=u.bytesReceived,e.video.packetsLost=u.packetsLost,e.video.framesReceived=u.framesReceived,e.video.framesDecoded=u.framesDecoded,e.video.fpsDecoded=u.framesPerSecond,e.hasVideo=!0,p=i.remoteVideoTrack,d.hasSmall&&c.smallVideo&&(e.isSmallSubscribed=!0),u.decoderImplementation&&(!this._prevDecoderImplementationMap.has(e.userId)||this._prevDecoderImplementationMap.get(e.userId)!==u.decoderImplementation)&&(this._log.info(`${e.userId} decoderImplementation change to ${u.decoderImplementation} HWDecoder: ${u.powerEfficientDecoder}`),x.emit("262",{userId:this.room.userId,remoteUserId:e.userId,prevImplementation:this._prevDecoderImplementationMap.get(e.userId),implementation:u.decoderImplementation,codec:i.videoCodec,isHWCodec:u.powerEfficientDecoder}),this._prevDecoderImplementationMap.set(e.userId,u.decoderImplementation))),u.ssrc===a.auxiliary&&d.hasAuxiliary&&(e.auxiliary.packetsReceived=u.packetsReceived,e.auxiliary.bytesReceived=u.bytesReceived,e.auxiliary.packetsLost=u.packetsLost,e.auxiliary.framesReceived=u.framesReceived,e.auxiliary.framesDecoded=u.framesDecoded,e.auxiliary.fpsDecoded=u.framesPerSecond,p=i.remoteAuxiliaryTrack,e.hasAuxiliary=!0),p&&(p.stat.packetsReceived=u.packetsReceived,p.stat.bytesReceived=u.bytesReceived,p.stat.packetsLost=u.packetsLost,p.stat.framesReceived=u.framesReceived,p.stat.framesDecoded=u.framesDecoded,u.jitterBufferDelay&&(p.stat.jitterBufferDelay=Math.floor(u.jitterBufferDelay/u.jitterBufferEmittedCount*1e3)))}u.jitterBufferDelay&&(m?(e.audio.totalJitter=u.jitterBufferDelay,e.audio.totalJitterCount=u.jitterBufferEmittedCount):u.ssrc===a.video&&d.hasVideo?(e.video.totalJitter=u.jitterBufferDelay,e.video.totalJitterCount=u.jitterBufferEmittedCount):u.ssrc===a.auxiliary&&d.hasAuxiliary&&(e.auxiliary.totalJitter=u.jitterBufferDelay,e.auxiliary.totalJitterCount=u.jitterBufferEmittedCount))}else u.type==="candidate-pair"&&Xr(u)&&(this.totalBytesReceived=u.bytesReceived,De(u.currentRoundTripTime)&&(e.rtt=Math.floor(u.currentRoundTripTime*1e3)));L(u.frameWidth)||((u.trackIdentifier===i.getMainStreamVideoTrackId()||u.ssrc===a.video)&&(e.video.frameWidth=u.frameWidth,e.video.frameHeight=u.frameHeight,i.remoteVideoTrack.stat.frameWidth=u.frameWidth,i.remoteVideoTrack.stat.frameHeight=u.frameHeight),(u.trackIdentifier===i.getAuxStreamVideoTrackId()||u.ssrc===a.auxiliary)&&(e.auxiliary.frameWidth=u.frameWidth,e.auxiliary.frameHeight=u.frameHeight,i.remoteAuxiliaryTrack.stat.frameWidth=u.frameWidth,i.remoteAuxiliaryTrack.stat.frameHeight=u.frameHeight)),!L(u.audioLevel)&&i.muteState.audioAvailable&&i.remoteAudioTrack.mediaTrack&&u.trackIdentifier===i.remoteAudioTrack.mediaTrack.id&&(e.audio.audioLevel=u.audioLevel||0,e.audio.totalAudioEnergy=u.totalAudioEnergy||0)}),e.audio.audioLevel===0&&i.muteState.audioAvailable&&(e.audio.audioLevel=i.remoteAudioTrack.getInternalAudioLevel()||0),this.totalBytesReceived||(this.totalBytesReceived+=e.audio.bytesReceived+e.video.bytesReceived+e.auxiliary.bytesReceived),L((r=i.remoteVideoTrack.player.stat)==null?void 0:r.fps)||(e.video.fpsRender=i.remoteVideoTrack.player.stat.fps),L((o=i.remoteAuxiliaryTrack.player.stat)==null?void 0:o.fps)||(e.auxiliary.fpsRender=i.remoteAuxiliaryTrack.player.stat.fps)}catch(a){this._log.warn(`failed to getStats on receiver connection ${a}`)}return e.rtt===0&&(e.rtt=((n=this.room.networkQuality)==null?void 0:n.uplinkRTT)||0),e})}getStats(i,e){return I(this,null,function*(){let t={},r=[];if(this.room.singlePC){let o=this.room.singlePC.getPeerConnection();if(!o)return{senderStats:t,receiverStats:r};let n=le(),a=yield o.getStats(),d=le();d-n>2e3&&this._log.warn(`getStats cost ${d-n}ms`);let c=[],h=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source"]);a.forEach(u=>h.has(u.type)&&c.push(u)),this._spcStats=c}i&&(t=yield this.getSenderStats(i));for(let[o,n]of e){let a=yield this.getReceiverStats(n);r.push(a)}return{senderStats:t,receiverStats:r}})}getDifferenceValue(i,e){if(qi(i))return e;let t=e-i;return t<0?0:t}prepareReport({stats:i,report:e,freezeMap:t}){var u;if(!qi(i.senderStats)){let m={uint32_audio_level:i.senderStats.audio.audioLevel*ai,uint32_audio_energy:(i.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent};i.senderStats.audio.micAudioLevel&&(m.uint32_mic_audio_level=i.senderStats.audio.micAudioLevel*ai),i.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=i.senderStats.audio.totalSamplesDuration);let p=[];if(i.senderStats.video.bytesSent){let f={uint32_video_stream_type:2,uint32_video_codec_fps:i.senderStats.video.framesSent,uint32_video_capture_fps:i.senderStats.video.fpsCapture,uint32_video_width:i.senderStats.video.frameWidth,uint32_video_height:i.senderStats.video.frameHeight,uint32_video_codec_bitrate:i.senderStats.video.bytesSent,uint32_video_enc_fps:i.senderStats.video.framesEncoded,uint32_key_frame_count:i.senderStats.video.keyFramesEncoded,uint32_nack_count:i.senderStats.video.nackCount,uint32_pli_count:i.senderStats.video.pliCount,uint32_encode_cost:(i.senderStats.video.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.video.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.video.retransmittedPacketsSent};p.push(f)}if(i.senderStats.small.bytesSent){let f={uint32_video_stream_type:3,uint32_video_codec_fps:i.senderStats.small.framesSent||0,uint32_video_capture_fps:i.senderStats.small.fpsCapture||0,uint32_video_width:i.senderStats.small.frameWidth||0,uint32_video_height:i.senderStats.small.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.small.bytesSent,uint32_video_enc_fps:i.senderStats.small.framesEncoded||0,uint32_key_frame_count:i.senderStats.small.keyFramesEncoded,uint32_nack_count:i.senderStats.small.nackCount,uint32_pli_count:i.senderStats.small.pliCount,uint32_encode_cost:(i.senderStats.small.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.small.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.small.retransmittedPacketsSent};p.push(f)}if(i.senderStats.auxiliary.bytesSent){let f={uint32_video_stream_type:7,uint32_video_codec_fps:i.senderStats.auxiliary.framesSent||0,uint32_video_capture_fps:i.senderStats.auxiliary.fpsCapture||0,uint32_video_width:i.senderStats.auxiliary.frameWidth||0,uint32_video_height:i.senderStats.auxiliary.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.auxiliary.bytesSent,uint32_video_enc_fps:i.senderStats.auxiliary.framesEncoded||0,uint32_key_frame_count:i.senderStats.auxiliary.keyFramesEncoded,uint32_nack_count:i.senderStats.auxiliary.nackCount,uint32_pli_count:i.senderStats.auxiliary.pliCount,uint32_encode_cost:(i.senderStats.auxiliary.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.auxiliary.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.auxiliary.retransmittedPacketsSent};p.push(f)}let g={uint32_bitrate:0,uint32_lost:0,uint32_rtt:i.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:m,msg_video_status:p,msg_network_status:g}}let{statInterval:r}=this;e.msg_down_stream_info=[],i.receiverStats.forEach(m=>{let p={msg_user_info:{str_identifier:m.userId,uint64_tinyid:m.tinyId},msg_network_status:{uint32_rtt:m.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(m.hasAudio){let g={uint32_audio_p2p_delay:m.audio.p2pDelay,uint32_audio_cache_ms:m.audio.totalJitter,uint32_audio_cache_ms_count:m.audio.totalJitterCount,uint32_audio_codec_bitrate:m.audio.bytesReceived,uint32_audio_total_bitrate:m.audio.bytesReceived,uint32_audio_level:m.audio.audioLevel*1e8,uint32_audio_energy:m.audio.totalAudioEnergy*1e6,uint32_audio_receive:m.audio.packetsReceived,uint32_audio_origin_lost:m.audio.packetsLost};p.msg_audio_status=g}if(m.hasVideo){let g=t.get(`${m.userId}_${sl}`),f=g?g.duration:0,T={uint32_video_stream_type:m.isSmallSubscribed?3:2,uint32_video_receive_fps:m.video.framesReceived,uint32_video_width:m.video.frameWidth,uint32_video_height:m.video.frameHeight,uint32_video_codec_bitrate:m.video.bytesReceived,uint32_video_receive:m.video.packetsReceived,uint32_video_origin_lost:m.video.packetsLost,uint32_video_block_time:f,uint32_video_dec_fps:m.video.framesDecoded,uint32_video_codec_fps:m.video.fpsRender,uint32_video_cache_ms:m.video.totalJitter,uint32_video_cache_ms_count:m.video.totalJitterCount};p.msg_video_status.push(T)}if(m.hasAuxiliary){let g=t.get(`${m.userId}_${ol}`),f=g?g.duration:0,T={uint32_video_stream_type:7,uint32_video_receive_fps:m.auxiliary.framesReceived,uint32_video_width:m.auxiliary.frameWidth,uint32_video_height:m.auxiliary.frameHeight,uint32_video_codec_bitrate:m.auxiliary.bytesReceived,uint32_video_receive:m.auxiliary.packetsReceived+m.auxiliary.packetsLost,uint32_video_origin_lost:m.auxiliary.packetsLost,uint32_video_block_time:f,uint32_video_dec_fps:m.auxiliary.framesDecoded,uint32_video_codec_fps:m.video.fpsRender,uint32_video_cache_ms:m.auxiliary.totalJitter,uint32_video_cache_ms_count:m.auxiliary.totalJitterCount};p.msg_video_status.push(T)}e.msg_down_stream_info.push(p)});let o=this._prevReport,n=this._prevStats;if(this._prevReport=JSON.parse(JSON.stringify(e)),this._prevStats=JSON.parse(JSON.stringify(i)),e.msg_up_stream_info.msg_audio_status&&o.msg_up_stream_info.msg_audio_status){let m=o.msg_up_stream_info.msg_audio_status,p=e.msg_up_stream_info.msg_audio_status;if(m.uint32_audio_codec_bitrate===0)p.uint32_audio_codec_bitrate=0;else{let g=this.getDifferenceValue(m.uint32_audio_codec_bitrate,p.uint32_audio_codec_bitrate);p.uint32_audio_codec_bitrate=Math.round(g*8/r),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=p.uint32_audio_codec_bitrate}(u=o.msg_device_info)!=null&&u.uint32_audio_capture_cost?e.msg_device_info.uint32_audio_capture_cost=2*Math.floor(this.getDifferenceValue(o.msg_device_info.uint32_audio_capture_cost,e.msg_device_info.uint32_audio_capture_cost)*1e3/r):delete e.msg_device_info.uint32_audio_capture_cost}let a=o.msg_up_stream_info.msg_video_status;e.msg_up_stream_info.msg_video_status.forEach(m=>{let p=a.find(b=>b.uint32_video_stream_type===m.uint32_video_stream_type);if(!p||p.uint32_video_codec_bitrate===0){m.uint32_video_codec_bitrate=0,m.uint32_video_enc_fps=0,m.uint32_video_codec_fps=0;return}let g=0,f=0,T=0;p&&m.uint32_video_codec_bitrate>=p.uint32_video_codec_bitrate&&(g=p.uint32_video_codec_bitrate,f=p.uint32_video_enc_fps,T=p.uint32_video_codec_fps);let C=this.getDifferenceValue(g,m.uint32_video_codec_bitrate);m.uint32_video_codec_bitrate=Math.round(C*8/r),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=m.uint32_video_codec_bitrate,m.uint32_video_enc_fps=Math.round(this.getDifferenceValue(f,m.uint32_video_enc_fps)/r),m.uint32_video_codec_fps=Math.round(this.getDifferenceValue(T,m.uint32_video_codec_fps)/r),p.uint32_video_width===0&&p.uint32_video_height===0&&p.uint32_video_codec_fps===0&&(m.uint32_video_codec_fps=m.uint32_video_enc_fps),L(p.uint32_key_frame_count)||(m.uint32_key_frame_count=Math.round(this.getDifferenceValue(p.uint32_key_frame_count,m.uint32_key_frame_count))),L(p.uint32_nack_count)||(m.uint32_nack_count=Math.round(this.getDifferenceValue(p.uint32_nack_count,m.uint32_nack_count))),L(p.uint32_pli_count)||(m.uint32_pli_count=Math.round(this.getDifferenceValue(p.uint32_pli_count,m.uint32_pli_count))),L(p.uint32_video_arq_packets)||(m.uint32_video_arq_packets=Math.round(this.getDifferenceValue(p.uint32_video_arq_packets,m.uint32_video_arq_packets))),L(p.uint32_encode_cost)||(m.uint32_encode_cost=Math.round(this.getDifferenceValue(p.uint32_encode_cost,m.uint32_encode_cost)/r)),L(p.uint32_send_packet_cost)||(m.uint32_send_packet_cost=Math.round(this.getDifferenceValue(p.uint32_send_packet_cost,m.uint32_send_packet_cost)/r))});let c=o.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(m=>c.find(p=>p.msg_user_info.uint64_tinyid===m.msg_user_info.uint64_tinyid));let h=e.msg_down_stream_info;return h.forEach(m=>{let p=c.find(g=>g.msg_user_info.uint64_tinyid===m.msg_user_info.uint64_tinyid);if(!qi(m.msg_audio_status)&&!qi(p.msg_audio_status)){let g=m.msg_audio_status,f=p.msg_audio_status,T=this.getDifferenceValue(f.uint32_audio_cache_ms_count,g.uint32_audio_cache_ms_count);delete g.uint32_audio_cache_ms_count,g.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(f.uint32_audio_cache_ms,g.uint32_audio_cache_ms)/T)||0;let C=this.room.remotePublishedUserMap.get(m.msg_user_info.str_identifier);C&&(C.remoteAudioTrack.stat.jitterBufferDelay=g.uint32_audio_cache_ms),g.uint32_audio_origin_lost=this.getDifferenceValue(f.uint32_audio_origin_lost,g.uint32_audio_origin_lost),g.uint32_audio_receive=this.getDifferenceValue(f.uint32_audio_receive,g.uint32_audio_receive),g.uint32_audio_receive+=g.uint32_audio_origin_lost;let b=this.getDifferenceValue(f.uint32_audio_codec_bitrate,g.uint32_audio_codec_bitrate);g.uint32_audio_codec_bitrate=Math.round(b*8/r),g.uint32_audio_total_bitrate=Math.round(b*8/r)}else m.msg_audio_status={};if(m.msg_video_status&&p.msg_video_status){let g=p.msg_video_status;m.msg_video_status=m.msg_video_status.filter(T=>g.find(C=>C.uint32_video_stream_type===T.uint32_video_stream_type)),m.msg_video_status.forEach(T=>{let C=g.find(y=>y.uint32_video_stream_type===T.uint32_video_stream_type),b=C.uint32_video_receive,v=C.uint32_video_origin_lost,$=C.uint32_video_codec_bitrate,N=C.uint32_video_receive_fps,X=C.uint32_video_dec_fps;T.uint32_video_origin_lost=this.getDifferenceValue(v,T.uint32_video_origin_lost),T.uint32_video_receive=this.getDifferenceValue(b,T.uint32_video_receive)+T.uint32_video_origin_lost;let w=this.getDifferenceValue($,T.uint32_video_codec_bitrate);T.uint32_video_codec_bitrate=Math.round(w*8/r);let W=this.getDifferenceValue(N,T.uint32_video_receive_fps);T.uint32_video_receive_fps=Math.round(W/r),T.uint32_video_dec_fps=Math.round(this.getDifferenceValue(X,T.uint32_video_dec_fps)/r);let ce=this.getDifferenceValue(C.uint32_video_cache_ms_count,T.uint32_video_cache_ms_count);delete T.uint32_video_cache_ms_count,T.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(C.uint32_video_cache_ms,T.uint32_video_cache_ms)/ce)||0})}}),n&&i.receiverStats.forEach(m=>{if(m.audio.concealedSamples&&m.audio.totalSamplesReceived){let p=n.receiverStats.find(g=>g.userId===m.userId);if(p&&p.audio.concealedSamples&&p.audio.totalSamplesReceived){let g=m.audio.concealedSamples-p.audio.concealedSamples,f=m.audio.totalSamplesReceived-p.audio.totalSamplesReceived,T=Math.floor(g/f*1e3*r);if(T>r*1e3/5){let C=h.find(b=>b.msg_user_info.str_identifier===m.userId);C&&(C.msg_audio_status.uint32_audio_block_time=T)}}}}),e}getStatsReport(r){return I(this,arguments,function*({uplinkConnection:i,downlinkConnections:e,freezeMap:t}){let o={msg_device_info:{},msg_up_stream_info:{msg_audio_status:{uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0},msg_video_status:[],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:0},msg_audio_status:{uint32_audio_cache_ms:0,uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0},msg_video_status:[{uint32_video_cache_ms:0,uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}}]},n=yield this.getStats(i,e);return JSON.stringify(this._prevReport)==="{}"&&(this._prevReport=JSON.parse(JSON.stringify(o))),this.prepareReport({stats:n,report:o,freezeMap:t}),this._prevReportTime=Date.now(),o})}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map}};var h_=gt(Mt());function l_(s){let i={totalCost:0,local:0,redirect:0,httpCache:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let e=performance.getEntriesByType("resource").reverse();for(let t of e)if(t.name===s){let r=Math.round(t.duration),o=Math.max(Math.round(t.domainLookupStart-t.startTime),0),n=t.redirectStart>0?Math.max(Math.round(t.redirectEnd-t.redirectStart),0):0,a=t.fetchStart>0?Math.max(Math.round(t.domainLookupStart-t.fetchStart),0):0,d=Math.round(t.domainLookupEnd-t.domainLookupStart),c=Math.round(t.requestStart-t.secureConnectionStart),h=Math.round(t.secureConnectionStart-t.connectStart),u=Math.round(t.responseStart-t.requestStart),m=Math.round(t.responseEnd-(t.responseStart||t.startTime));i=ne(K({},i),{totalCost:r,local:o,redirect:n,httpCache:a,dns:d,tcp:h,tls:c,request:u,response:m});break}}catch(e){}return i}function u_(s){return new Promise(i=>I(this,null,function*(){let e=setTimeout(()=>{i({totalCost:1e4,local:0,dns:0,tcp:0,tls:0,request:0,response:0})},1e4),t=Date.now(),r=`https://${s}/?t=${t}`;try{yield fetch(r)}catch(n){}clearTimeout(e);let o=l_(r);o.totalCost===0&&(o.totalCost=Date.now()-t),i(o)}))}var MS=700,Us=class Us extends h_.default{constructor({signalChannel:e,room:t}){super();l(this,"_room");l(this,"_signalChannel");l(this,"_log");l(this,"uplinkRTT",0);l(this,"uplinkLoss",0);l(this,"downlinkRTT",0);l(this,"downlinkLoss",0);l(this,"pingResults",{});l(this,"_downlinkPrevStatMap",new Map);l(this,"_downlinkLossAndRTTMap",new Map);l(this,"_interval",-1);l(this,"_uplinkNetworkQuality",0);l(this,"_downlinkNetworkQuality",0);this._room=t,this._signalChannel=e,this._log=j.createLogger({id:"q",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this.initialize()}get uplinkNetworkQuality(){return this._uplinkNetworkQuality}set uplinkNetworkQuality(e){e!==this._uplinkNetworkQuality&&this._log.info(`uplink ${this.uplinkNetworkQuality} -> ${e}, rtt: ${this.uplinkRTT}, loss: ${this.uplinkLoss} ws-rtt: ${this._signalChannel.rtt}`),this._uplinkNetworkQuality=e}get downlinkNetworkQuality(){return this._downlinkNetworkQuality}set downlinkNetworkQuality(e){if(e!==this._downlinkNetworkQuality){let{rtt:t,loss:r}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this._log.info(`downlink ${this.downlinkNetworkQuality} -> ${e}, rtt: ${t}, loss: ${r} ws-rtt: ${this._signalChannel.rtt}`)}this._downlinkNetworkQuality=e}initialize(){this._signalChannel.on(ge.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(rt.CONNECTION_STATE_CHANGED,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var d,c;if(e.data.code!==0)return;let t=e.data.data;if(t.delay&&this.updateDelay(t.delay),this._room.signalChannel&&t.wsRtt&&(this._room.signalChannel.rtt=t.wsRtt),!this._room.uplinkConnection){this.uplinkNetworkQuality=0,this.uplinkLoss=0,this.uplinkRTT=0;return}let r=(c=(d=this._room)==null?void 0:d.uplinkConnection)==null?void 0:c.getPeerConnection();if(r&&this.isPeerConnectionDisconnected(r)){this.uplinkNetworkQuality=6,this.uplinkLoss=0,this.uplinkRTT=0;return}let o=t.expectAudPkg+t.expectVidPkg,n=t.recvAudPkg+t.recvVidPkg,a=o-n;o===0&&n===0||(a<=0?this.uplinkLoss=0:this.uplinkLoss=Math.round(a/o*100),this.uplinkRTT=t.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss,this.uplinkRTT))}handleDownlinkNetworkQuality(){return I(this,null,function*(){if(this._room.remotePublishedUserMap.size===0){this.downlinkNetworkQuality=0;return}let e=[...this._room.remotePublishedUserMap.values()],t=e.filter(a=>{var d;return((d=a.getPeerConnection())==null?void 0:d.connectionState)===Je.CONNECTED});if(e.filter(a=>this.isPeerConnectionDisconnected(a.getPeerConnection())).length===e.length){this.downlinkNetworkQuality=6;return}for(let a=0;a<t.length;a++){let d=t[a].getPeerConnection();if(!d)return;let{rtt:c,totalPacketsLost:h,totalPacketsReceived:u}=yield this.getStat(d);if(!this._downlinkPrevStatMap.has(d)){this._downlinkPrevStatMap.set(d,{totalPacketsLost:h,totalPacketsReceived:u});continue}let m=0,p=this._downlinkPrevStatMap.get(d),g=h-p.totalPacketsLost,f=u-p.totalPacketsReceived;g<=0||f<0?m=0:m=Math.round(g/(g+f)*100),this._downlinkPrevStatMap.set(d,{totalPacketsLost:h,totalPacketsReceived:u}),this._downlinkLossAndRTTMap.set(d,{rtt:c,loss:m,userId:t[a].getUserId(),audioDelay:t[a].remoteAudioTrack.stat.end2EndDelay,videoDelay:t[a].remoteVideoTrack.stat.end2EndDelay})}if([...this._downlinkPrevStatMap.keys()].forEach(a=>{this.isPeerConnectionDisconnected(a)&&(this._downlinkPrevStatMap.delete(a),this._downlinkLossAndRTTMap.delete(a))}),this._downlinkLossAndRTTMap.size===0){this.downlinkRTT=0,this.downlinkLoss=0,this.downlinkNetworkQuality=0;return}let{rtt:o,loss:n}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=o,this.downlinkLoss=n,this.downlinkNetworkQuality=this.getNetworkQuality(n,o)})}getStat(e){return I(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!Ss())return t;let r=e.getReceivers();try{for(let o=0;o<r.length;o++)(yield r[o].getStats()).forEach(d=>{d.type==="candidate-pair"&&De(d.currentRoundTripTime)&&(t.rtt=Math.round(d.currentRoundTripTime*1e3)),d.type==="inbound-rtp"&&(d.mediaType===S.AUDIO||d.mediaType===S.VIDEO)&&(t.totalPacketsLost+=d.packetsLost,t.totalPacketsReceived+=d.packetsReceived)});return t.rtt===0&&(t.rtt=this.uplinkRTT),t}catch(o){return t}})}getAverageLossAndRTT(e){let t={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach(r=>{t.rtt+=r.rtt,t.loss+=r.loss}),Object.keys(t).forEach(r=>{t[r]=Math.round(t[r]/e.length)})),t}getNetworkQuality(e,t){return e>50||t>500?5:e>30||t>350?4:e>20||t>200?3:e>10||t>100?2:e>=0||t>=0?1:0}handleSignalConnectionStateChange(e){e.state==="DISCONNECTED"?(this.uplinkRTT=0,this.uplinkLoss=0,this.uplinkNetworkQuality=6):e.state==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}handleUplinkConnectionStateChange({state:e}){e==="DISCONNECTED"?(this.uplinkLoss=0,this.uplinkRTT=0,this.uplinkNetworkQuality=6):e==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}isPeerConnectionDisconnected(e){return!!(e&&(e.connectionState===Je.DISCONNECTED||e.connectionState===Je.FAILED||e.connectionState===Je.CLOSED))}setUplinkConnection(e){this._room.uplinkConnection=e,this._room.uplinkConnection?this._room.uplinkConnection.on("connection-state-changed",this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT=0,this.uplinkLoss=0)}start(){if(this._interval!==-1){this._log.info("network quality calculating is already started");return}this._log.debug("start network quality calculating"),this._interval=Le.run("ric",()=>{var n;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];x.emit(V.NETWORK_QUALITY,{room:this._room,uplink:{rtt:this.uplinkRTT,loss:this.uplinkLoss},downlinks:e});let t=(n=this._room.scheduleResult.config)==null?void 0:n.pingDomainInfo,r={uplinkNetworkQuality:this.uplinkNetworkQuality,downlinkNetworkQuality:this.downlinkNetworkQuality,uplinkRTT:this.uplinkRTT,uplinkLoss:this.uplinkLoss,downlinkRTT:this.downlinkRTT,downlinkLoss:this.downlinkLoss};t&&(r=ne(K({},r),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit(Us.EVENT_NETWORK_QUALITY,r);let o=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&o-Us.lastPingTime>t.interval*1e3){Us.lastPingTime=Date.now();let a=t.domain.map(d=>u_(d).then(c=>({domain:d,cost:c.totalCost})));Promise.all(a).then(d=>{this.pingResults.isPoorNetwork=d.some(c=>c.cost>MS),this.pingResults.timestamp=o,this.pingResults.data=d,d.forEach(c=>{Y.addSuccessEvent({key:521718,cost:c.cost})}),this._log.warn(`All ping results: ${JSON.stringify(d)}`)}).catch(d=>{this._log.warn(`Error during pinging domains: ${d}`)})}},{delay:2e3})}stop(){this._log.debug("stopped"),this._interval!==-1&&(Le.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:t}=this._room;e.forEach(({srcTinyId:r,videoDelay:o,audioDelay:n})=>{let a=t.get(r);if(a){let d=this._room.remotePublishedUserMap.get(a);d==null||d.setDelay({videoDelay:o,audioDelay:n})}})}};l(Us,"EVENT_NETWORK_QUALITY","0"),l(Us,"lastPingTime",0);var Bo=Us;function xS({fn:s,context:i}){return function(...e){try{let t=s.apply(i,e);return Wr(t)?t.catch(r=>j.error(`${s.name}() error observed ${r}`)):t}catch(t){j.error(`${s.name}() error observed ${t}`)}}}var Lc=class{constructor(i){l(this,"_frameWorkType");l(this,"_component");l(this,"_language");l(this,"connectionType");l(this,"_room");l(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});l(this,"_keyPrefix");l(this,"_log");l(this,"_intervalId");l(this,"_firstPublishedUserList");l(this,"_networkQuality");l(this,"_basicInfo");l(this,"_pathJoinRoom");l(this,"_pathLeaveRoom");l(this,"_pathMainVideoMap");l(this,"_pathMainAudioMap");l(this,"_pathAuxiliaryMap");l(this,"_remoteStreamStatMap");l(this,"_localStreamStat");l(this,"_eventMap",new Map);l(this,"_captureCostSum",0);l(this,"_captureCostCount",0);l(this,"isDestroyed",!1);this._frameWorkType=i.frameWorkType||30,this._component=i.component||0,this.connectionType=i.connectionType||1,this._language=i.language||0,this._room=i.room,this._keyPrefix="key_point",this._log=j.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&Fe(this[e])&&(this[e]=xS({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:Rt,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,An().then(i=>{this._basicInfo.string_os_version=gr(),i?this._basicInfo.string_device_name=i.mobile?i.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(i,e){return this._eventMap.set(i,e),x.on(i,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(V.JOIN_START,this.handleJoinStart).addEvent(V.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(V.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(V.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(V.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(V.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(V.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(V.JOIN_FAILED,this.handleJoinFailed).addEvent(V.LEAVE_START,this.handleLeaveStart).addEvent(V.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(V.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(V.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(V.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(V.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(V.PUBLISH_START,this.handlePublishStart).addEvent(V.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(V.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(V.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(V.PLAY_TRACK_START,this.handlePlayStart).addEvent(V.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(V.PLAYER_STATE_CHANGED,({track:i,state:e,type:t})=>{!i.isRemote||!this.hitTest(i.room)||e==="PLAYING"&&(t===S.AUDIO?this.handleAudioPlaying(i):this.handleVideoPlaying(i))}).addEvent(V.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(V.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(V.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(V.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let r=e.hasAudio||e.hasVideo||e.hasSmall,o=e.hasAuxiliary,n=t.hasAudio||t.hasVideo||t.hasSmall,a=t.hasAuxiliary;!r&&n&&this.handleRemoteStreamAdded(t.userId,"main"),!o&&a&&this.handleRemoteStreamAdded(t.userId,"auxiliary")}).addEvent(V.SINGLE_CONNECTION_STAT,({room:i,stat:e})=>{this.hitTest(i)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((i,e)=>x.off(e,i)),this._eventMap.clear()}destroy(){this.uninstallEvents(),Le.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(i){this.hitTest(i.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),i.params&&(L(i.params.frameWorkType)||(this._frameWorkType=i.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),L(i.params.component)||(this._component=i.params.component,this._basicInfo.uint32_component=this._component),L(i.params.language)||(this._language=i.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:i,detailCost:e}){if(this.hitTest(i)&&e){let{totalCost:t,local:r,dns:o,tcp:n,tls:a,request:d,response:c}=e;this._pathJoinRoom.int32_schedule_cost=t,this._pathJoinRoom.int32_schedule_local=r,this._pathJoinRoom.int32_schedule_dns=o,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=a,this._pathJoinRoom.int32_schedule_request=d,this._pathJoinRoom.int32_schedule_response=c}}handleSignalConnectionStart({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:i,error:e}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof Q?Number(e.getExtraCode()||e.getCode()):H.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=i.code,i.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=i.room.getSignalInfo())}handleJoinFailed({room:i,error:e}){this.hitTest(i)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=i.publishedUserList||[])}handleSendFirstVideoFrame({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(i){this.hitTest(i.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleRemoteStreamAdded(i,e){var r;let t=`${i}_${e}`;if(!this._remoteStreamStatMap.has(t)){let o={userId:i,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:ne(K({},LS),{msg_user_info:new _a({userId:i,tinyId:(r=this._room.remotePublishedUserMap.get(i))==null?void 0:r.tinyId,role:20})})};o.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(t,o)}}handleSubscribeStart({room:i,remotePublishedUser:e,streamType:t,subscribeState:r}){if(!this.hitTest(i))return;let{userId:o,tinyId:n,role:a}=e,d=new _a({userId:o,tinyId:n,role:a==="anchor"?20:21}),c=Date.now(),h=`${o}_${t}`,u=this._remoteStreamStatMap.get(h);u&&u.subscribeStartTime===0&&(u.subscribeStartTime=c),t==="main"?(e.muteState.hasVideo&&(r.video||r.smallVideo)&&!this._pathMainVideoMap.has(h)&&this._pathMainVideoMap.set(h,{statsToReport:{msg_user_info:d,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:o,sendSubscribeCMDTime:c}),e.muteState.hasAudio&&r.audio&&!this._pathMainAudioMap.has(h)&&this._pathMainAudioMap.set(h,{statsToReport:{msg_user_info:d,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:o,sendSubscribeCMDTime:c})):e.muteState.hasAuxiliary&&r.auxiliary&&!this._pathAuxiliaryMap.has(h)&&this._pathAuxiliaryMap.set(h,{sendSubscribeCMDTime:c})}handleSubscribed({room:i,remotePublishedUser:e,streamType:t}){if(this.hitTest(i)){let r=`${e.userId}_${t}`,o=this._remoteStreamStatMap.get(r);o&&o.subscribedTime===0&&(o.subscribedTime=Date.now())}}handlePlayStart({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._remoteStreamStatMap.get(e);(t==null?void 0:t.playStreamTime)===0&&(t.playStreamTime=Date.now())}handleVideoLoadedData({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._pathMainVideoMap.get(e);t&&t.statsToReport.uint64_combine_first_frame_time===0&&(t.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(i){let e=`${i.userId}_${i.streamType}`,t=Date.now(),r=this._pathMainVideoMap.get(e),o=this._remoteStreamStatMap.get(e);if(o){let{statsToReport:n}=o;if(!n.uint32_video_render_first&&i.streamType==="main"?this.hasVideoFlag(i.userId):this.hasAuxFlag(i.userId)){let a=t-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=a,Y.addNumber({key:516820,value:a})}}(r==null?void 0:r.statsToReport.uint64_render_first_frame_time)===0&&(r.statsToReport.uint64_render_first_frame_time=t)}handleAudioPlaying(i){let e=`${i.userId}_${i.streamType}`,t=this._pathMainAudioMap.get(e);t&&t.statsToReport.uint64_play_first_frame_time===0&&(t.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(i){this.hitTest(i.room)&&(this._networkQuality.totalUplinkLoss+=i.uplink.loss,this._networkQuality.totalUplinkRTT+=i.uplink.rtt,this._networkQuality.count++,i.downlinks.forEach(({rtt:e,loss:t,userId:r,videoDelay:o,audioDelay:n})=>{let a=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(a)a.totalRTT+=e,a.totalLoss+=t,o&&(a.totalVideoDelay=(a.totalVideoDelay||0)+o,a.videoDelayCount=(a.videoDelayCount||0)+1),n&&(a.totalAudioDelay=(a.totalAudioDelay||0)+n,a.audioDelayCount=(a.audioDelayCount||0)+1),a.count++;else{let d,c,h,u;o&&(c=o,h=1),n&&(d=n,u=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(r,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:d,totalVideoDelay:c,audioDelayCount:u,videoDelayCount:h})}}))}handleHeartbeatStats(i){if(this.hitTest(i.room)){let{msg_device_info:e,msg_up_stream_info:t,msg_down_stream_info:r}=i.report;if(t.msg_video_status[0]){let{uint32_video_codec_bitrate:o,uint32_video_enc_fps:n,uint32_video_width:a,uint32_video_height:d}=t.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=o,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=a,this._localStreamStat.totalVideoHeight+=d,this._localStreamStat.videoCount++}if(t.msg_audio_status){let{uint32_audio_level:o}=t.msg_audio_status;Math.floor(o/ai*100)>0&&(this._localStreamStat.totalAudioLevel+=o/ai,this._localStreamStat.audioLevelCount++)}r.forEach(o=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:d}=o,c=n.str_identifier,h=this._room.remotePublishedUserMap.get(c);if(d.forEach(u=>{let m=u.uint32_video_stream_type===2,p=u.uint32_video_stream_type===7,g=`${c}_${m?"main":"auxiliary"}`,f=this._remoteStreamStatMap.get(g);if(f&&(m&&(h!=null&&h.remoteVideoTrack.isSubscribed)||p&&(h!=null&&h.remoteAuxiliaryTrack))){f.totalVideoFPS+=u.uint32_video_receive_fps,f.totalVideoBitrate+=u.uint32_video_codec_bitrate,f.videoCount++,f.statsToReport.uint32_video_width===0&&(f.statsToReport.uint32_video_width=u.uint32_video_width),f.statsToReport.uint32_video_height===0&&(f.statsToReport.uint32_video_height=u.uint32_video_height);let T=m?h.remoteVideoTrack:h.remoteAuxiliaryTrack;T.stat.jitterBufferDelay&&(f.videoJitterBufferDelay=T.stat.jitterBufferDelay),T.stat.framesReceived&&(f.statsToReport.uint32_video_consume_render_rate=Math.floor(T.stat.framesDecoded/T.stat.framesReceived*jo(10,6)))}}),!qs(a)){let u=`${c}_main`,m=this._remoteStreamStatMap.get(u);this._remoteStreamStatMap.has(u)&&m&&h!=null&&h.remoteAudioTrack.isSubscribed&&(m.totalAudioBitrate+=a.uint32_audio_codec_bitrate,m.audioCount++,h.remoteAudioTrack.stat.jitterBufferDelay&&(m.audioJitterBufferDelay=h.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/ai*100)>0&&(m.totalAudioLevel+=a.uint32_audio_level/ai,m.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:i}){this.hitTest(i)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:i,error:e}){let r={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof Q?e.getExtraCode()||e.getCode():H.UNKNOWN);i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=r,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=r,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Fr)>=0}hasAudioFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Hr)>=0}hasAuxFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&as)>=0}hitTest(i){return i===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let i=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=i<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((i,e)=>{let{userId:t}=i,r=this._networkQuality.totalDownlinkRTTAndLossMap.get(t);if(r){let{totalLoss:h,count:u,audioDelayCount:m,videoDelayCount:p,totalAudioDelay:g,totalVideoDelay:f}=r;i.statsToReport.uint32_avg_down_loss=Math.floor(h/u),m&&g&&(i.statsToReport.uint32_audio_network_p2p_delay=Math.floor(g/m),i.audioJitterBufferDelay&&(i.statsToReport.uint32_p2p_delay=Math.floor(i.statsToReport.uint32_audio_network_p2p_delay+i.audioJitterBufferDelay))),p&&f&&(i.statsToReport.uint32_video_network_p2p_delay=Math.floor(f/p))}i.videoCount>0&&(i.statsToReport.uint32_video_avg_fps=Math.floor(i.totalVideoFPS/i.videoCount),i.statsToReport.uint32_video_avg_bitrate=Math.floor(i.totalVideoBitrate/i.videoCount)),i.audioCount>0&&(i.statsToReport.uint32_audio_recv_bitrate=i.statsToReport.uint32_audio_bitrate=Math.floor(i.totalAudioBitrate/i.audioCount)),i.audioLevelCount>0&&(i.statsToReport.uint32_audio_play_db=Math.floor(i.totalAudioLevel/i.audioLevelCount*100));let{callDurationCalculator:o}=this._room;o&&(i.statsToReport.uint32_audio_play_time=o.getDuration(e,S.AUDIO),i.statsToReport.uint32_video_play_time=o.getDuration(e,S.VIDEO)),i.statsToReport.uint32_video_render_first&&(i.statsToReport.uint32_video_render_first=Math.min(i.statsToReport.uint32_video_render_first,Vs));let{badCaseDetector:n}=this._room,{dataFreeze:a,count:d}=n.getDataFreezeDuration(e),{renderFreeze:c}=n.getRenderFreezeDuration(e);i.statsToReport.uint32_video_block_count=d,i.statsToReport.uint32_video_block_time=Math.min(a,i.statsToReport.uint32_video_play_time),i.statsToReport.uint32_video_external_block_time=Math.min(c,i.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&i.statsToReport.uint32_video_avg_fps===0?i.statsToReport.uint32_video_black_screen_subjective=1:i.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((i,e)=>{if(!this.hasAudioFlag(i.userId)){this._pathMainAudioMap.delete(e);return}i.statsToReport.uint64_play_first_frame_time-i.statsToReport.uint64_start_enter_time>Vs&&(i.statsToReport.uint64_play_first_frame_time=i.statsToReport.uint64_start_enter_time+Vs)}),this._pathMainVideoMap.forEach((i,e)=>{if(!this.hasVideoFlag(i.userId)){this._pathMainVideoMap.delete(e);return}i.statsToReport.uint64_render_first_frame_time-i.statsToReport.uint64_start_enter_time>Vs&&(i.statsToReport.uint64_render_first_frame_time=i.statsToReport.uint64_start_enter_time+Vs)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>Vs&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+Vs)}getReportData(){this._basicInfo.uint32_networkType=us();let i={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new _a({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Xs(this._signalInfo.relayIp),uint32_client_ip:Xs(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*jo(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:Xs(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return cn(i),i}report(){return I(this,null,function*(){try{this.prepareReport();let i=this.getReportData();yield this.upload(i),this.initData()}catch(i){this._log.warn(i)}finally{this.isDestroyed&&(this._room=null)}})}upload(i){return I(this,null,function*(){if(i.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=yield _l(i),r=t instanceof ArrayBuffer,o=`${lr(e,$r.KEY_POINT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(o,t));let a=[this.uploadKVStat(Y),this.uploadKVStat(Ts)];n||a.push(mr({url:o,body:t,priority:"low"})),yield Promise.all(a)})}setConnectionType(i){this.connectionType=i,this._basicInfo.uint32_connection_type=i}uploadKVStat(i){return I(this,null,function*(){let e=i.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=ne(K({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let t=yield _l(e),r=`${lr(+this._room.sdkAppId,$r.KV_STAT)}&gzip=${+(t instanceof ArrayBuffer)}`,o=!1;navigator.sendBeacon&&(o=navigator.sendBeacon(r,t)),o||mr({url:r,body:t})})}};q([Gt({settings:{timeout:500,retries:3}})],Lc.prototype,"upload",1);var Vs=5e3,LS={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},_a=class{constructor(i){l(this,"str_identifier");l(this,"str_tinyid");l(this,"uint32_role");this.str_identifier=String(i.userId),this.str_tinyid=String(i.tinyId||0),this.uint32_role=i.role}},m_=Lc;var Kh=class{constructor(){l(this,"_startTime");l(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=le())}stop(){this._endTime===0&&(this._endTime=le())}getDuration(){return this._endTime===0?le()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},Pc=Kh;var em=class{constructor(i){l(this,"_room",null);l(this,"_durationMap");l(this,"_eventMap",new Map);this._room=i.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(V.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(V.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(V.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{var n;let{userId:r}=t;if(!this.hitTest(i))return;e.hasAudio&&!t.hasAudio&&this.stopDurationItem(`${r}_main`,S.AUDIO),e.hasVideo&&!t.hasVideo&&this.stopDurationItem(`${r}_main`,S.VIDEO),e.hasAuxiliary&&!t.hasAuxiliary&&this.stopDurationItem(`${r}_auxiliary`,S.VIDEO);let o=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(r);o&&(!e.hasAudio&&t.hasAudio&&o.remoteAudioTrack.isSubscribed&&this.addDuractionItem(r,S.AUDIO,"main"),!e.hasVideo&&t.hasVideo&&o.remoteVideoTrack.isSubscribed&&this.addDuractionItem(r,S.VIDEO,"main"),!e.hasAuxiliary&&t.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(r,S.VIDEO,"auxiliary"))}),this._eventMap.forEach((i,e)=>x.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>x.off(e,i,this)),this._eventMap.clear()}handleSubscribed({track:i}){if(!this.hitTest(i.room))return;let{userId:e,streamType:t,kind:r}=i;i.isSubscribed?this.addDuractionItem(e,r,t):this.stopDurationItem(`${e}_${t}`,r)}handleUnsubscribed({track:i}){this.hitTest(i.room)&&this.stopDurationItem(`${i.userId}_${i.streamType}`,i.kind)}isRecording(i){return i.findIndex(e=>e.endTime===0)>=0}addDuractionItem(i,e,t){let r=`${i}_${t}`,o=new Pc,n=this._durationMap.get(r);n?this.isRecording(n[e])||n[e].push(o):this._durationMap.set(r,{userId:i,type:t,audio:e===S.AUDIO?[o]:[],video:e===S.AUDIO?[]:[o]})}stopDurationItem(i,e){if(this._durationMap.has(i)){let r=this._durationMap.get(i)[e].find(o=>o.endTime===0);r&&r.stop()}}hitTest(i){return this._room===i}getDuration(i,e){return this._durationMap.has(i)?this._durationMap.get(i)[e].reduce((r,o)=>r+o.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},p_=em;var tm=class{constructor(i){l(this,"_room");l(this,"_renderFreezeMap",new Map);l(this,"_isVideoPlayingEventFiredMap",new Map);l(this,"_dataFreezeMap",new Map);l(this,"_monitorFreezeData",new Map);l(this,"_eventMap",new Map);this._room=i.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(V.LEAVE_SUCCESS,({room:i})=>{this.hitTest(i)&&this.stop()}).set(V.PLAY_TRACK_START,this.onPlayTrackStart).set(V.UNSUBSCRIBE_SUCCESS,({room:i,streamType:e,remotePublishedUser:t})=>{if(!this.hitTest(i))return;let{userId:r}=t,o=`${r}_${e}`;this.stopDataFreeze({key:o,userId:r,type:e})}).set(V.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let{userId:r}=t;if(e.hasVideo&&!t.hasVideo){let o="main",n=`${t.userId}_${o}`;this.stopDataFreeze({key:n,userId:r,type:o})}if(e.hasAuxiliary&&!t.hasAuxiliary){let o="auxiliary",n=`${t.userId}_${o}`;this.stopDataFreeze({key:n,userId:r,type:o})}}).set(V.PLAYER_STATE_CHANGED,({track:i,state:e,reason:t,type:r})=>{if(!(!i.isRemote||!i.room||!this.hitTest(i.room)||r!==S.VIDEO)){if(e==="PLAYING"){let o=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.set(o,!0)}t===S.MUTE?this.onVideoTrackMuted(i):t===S.UNMUTE&&this.onVideoTrackUnmuted(i)}}).set(V.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((i,e)=>x.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>x.off(e,i,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`,o=this._dataFreezeMap.get(r),n=new Pc;o?o.durationItemList.push(n):this._dataFreezeMap.set(r,{userId:e,type:t,durationItemList:[n],isFreezing(){let a=this.durationItemList[this.durationItemList.length-1];return a&&a.endTime===0}})}onVideoTrackUnmuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`;this.stopDataFreeze({key:r,userId:e,type:t})}onHearBeatReport({room:i,report:e}){this.hitTest(i)&&e.msg_down_stream_info.forEach(t=>{let r=this._room.remotePublishedUserMap.get(t.msg_user_info.str_identifier);if(!r)return;let{userId:o,muteState:n}=r;t.msg_video_status.forEach(a=>{a.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&r.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:o,fps:a.uint32_video_dec_fps,type:"main"}),a.uint32_video_stream_type===7&&n.hasAuxiliary&&r.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:o,fps:a.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:i,userId:e,type:t}){let r=this._dataFreezeMap.get(i);if(!r||!r.isFreezing())return;let o=r.durationItemList[r.durationItemList.length-1];o.stop();let n=o.getDuration();n>Ma?this._monitorFreezeData.set(i,{userId:e,type:t,duration:n}):r.durationItemList.pop()}getTotalDuration(i){return i.reduce((e,t)=>{let r=t.getDuration();return e+Math.min(r,5e3)},0)}handleRenderFreeze(r){return I(this,arguments,function*({userId:i,fps:e,type:t}){let o=`${i}_${t}`,n=this._renderFreezeMap.get(o);if(e<=2){let a=le();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:a,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(o,{userId:i,type:t,isFreeze:!0,freezeTimeline:[{startTime:a,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let a=n.freezeTimeline.pop();if(a){a.endTime=le();let d=a.endTime-a.startTime;n.freezeTimeline.push(a),n.renderFreezeTotal+=Math.min(5e3,d)}}})}onPlayTrackStart({track:i}){if(!i.isRemote||!this.hitTest(i.room)||i.kind!==S.VIDEO||!i.isRemotePublished)return;let e=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(i){let e={dataFreeze:0,count:0},t=this._dataFreezeMap.get(i);if(t){if(t.isFreezing()){let r=t.durationItemList[t.durationItemList.length-1];r.stop(),r.getDuration()<Ma&&t.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(t.durationItemList),e.count=t.durationItemList.length}return e}getRenderFreezeDuration(i){let e=this._renderFreezeMap.get(i),t=0,r=0;if(e)if(!e.isFreeze)t=e.renderFreezeTotal;else{let o=le(),n=e.freezeTimeline[e.freezeTimeline.length-1],a=o-n.startTime;t=e.renderFreezeTotal+Math.min(a,5e3),r=e.freezeTimeline.length}return{renderFreeze:t,count:r}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(i){return this._isVideoPlayingEventFiredMap.has(i)?!this._isVideoPlayingEventFiredMap.get(i):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(i){return i===this._room}destroy(){this.uninstallEvents()}},f_=tm;var g_=gt(Mt(),1);var PS=[1,0,0,0,1,1,0,1],Uc=class extends Bt{constructor(i,e){if(super(i,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"mirror",logger:e}),i instanceof mt)try{this.setTexBuffer(PS)}catch(t){i.destroy(new Q({code:H.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${t.message||t}`}))}}draw2d(i,e,t,r,o){if(this.ctx2d){this.ctx2d.save(),this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0);let n=super.draw2d(i,e,t,r,o);return this.ctx2d.restore(),n}return!1}render(i){var e;return(e=this.input)!=null&&e.requestFrame(i)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}};var im=class{constructor(i,e){this.node=i;this.layout=e;l(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}},Vc=class extends Bt{constructor(e,t){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:t});l(this,"inputs",[])}addInput(e,t){if(this.inputs[t.zIndex])throw new Error("input already exists");let r=new im(e,t);this.inputs[t.zIndex]=r}resize(e,t){let r=this.inputs.reduce((o,n)=>n?Object.assign(o,{width:Math.max(o.width,n.right),height:Math.max(o.height,n.bottom)}):o,{width:0,height:0});super.resize(r.width,r.height),this.context instanceof mt&&this.inputs.forEach(o=>{if(o){let n=this.layout2texCoords(o);o.positionBuffer?this.changeBufferData(o.positionBuffer,n):o.positionBuffer=this.createBuffer(n)}})}connect(e,...t){return super.connect(e,...t),this.resize(0,0),e}removeInput(e){this.inputs[this.inputs.findIndex(t=>(t==null?void 0:t.node)===e)]=void 0}render(e){let t=this.context.ctx;if(t.clearColor(0,0,0,0),!this.inputs.reduce((o,n)=>(!n||!n.node.requestFrame(e))&&o,!0)&&t){this.useProgram(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let o=0;o<this.inputs.length;o++){let n=this.inputs[o];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(!this.inputs.reduce((r,o)=>(!o||!o.node.requestFrame(e))&&r,!0)&&this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height);for(let r=0;r<this.inputs.length;r++){let o=this.inputs[r];o&&this.draw2d(o.node.image,o.x,o.y,o.width,o.height)}return!0}return!1}getInfo(){let{totalFrames:e,x:t,y:r,width:o,height:n,name:a}=this,d=Date.now(),c=(e-this.lastInfo.totalFrames)/((d-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:o,height:n,timestamp:d,fps:c,name:a},K({parent:this.inputs.filter(h=>h).map(h=>h.node.getInfo())},this.lastInfo)}close(){super.close(),this.inputs.forEach(e=>{var t,r;if(e&&((t=e.node)==null||t.disconnect(),e.positionBuffer&&this.context instanceof mt))try{(r=this.context.ctx)==null||r.deleteBuffer(e.positionBuffer)}catch(o){}})}};var US=`#version 300 es
69
+ `),e}removeBandwidthRestriction(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}removeVideoOrientation(e){return e.replace(/urn:3gpp:video-orientation/,"")}connect(){return p(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return p(this,null,function*(){try{yield this.createOffer(),this._log.info("createOffer success, sending offer to remote server"),yield this.doExchangeSDP()}catch(e){throw e}})}createOffer(){return p(this,null,function*(){try{let e=yield this._peerConnection.createOffer(pp);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:Y.PUBLISH,responseCommand:G.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof at||this.localAuxVideoTrack instanceof at,state:this.publishState,constraintConfig:this._mediaSettings},enableLog:!1};return this._log.debug(`sending sdp offer: ${e.data.sdp}`),this._signalChannel.sendWaitForResponse(e).then(t=>{let{code:r,message:o,data:n}=t.data;return r===0?this.acceptAnswer(n):this.checkPublishResultCode(r,o)})}setSDPDirection(e,t,r="all"){let o=Ae(e);return o.media.forEach(n=>{(r==="all"||n.type===r)&&(n.direction=t)}),Ct(o)}acceptAnswer(e){return p(this,null,function*(){var t,r,o,n,a;try{let c;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let h=((t=this._publishingLocalVideoTrack)==null?void 0:t.profile.bitrate)||((r=this.localMainVideoTrack)==null?void 0:r.profile.bitrate),f=((o=this._publishingLocalAudioTrack)==null?void 0:o.profile.bitrate)||((n=this.localMainAudioTrack)==null?void 0:n.profile.bitrate);if(h){let _=this._isPublishingAux?m.AUXILIARY:m.BIG;c=yield this.setBandwidth({bandwidth:h,type:m.VIDEO,sdp:c,videoType:_})}f&&(c=yield this.setBandwidth({bandwidth:f,type:m.AUDIO,sdp:c}))}if(c=this.removeVideoOrientation(e.sdp),(a=this._publishingLocalVideoTrack)!=null&&a.small){let{smallStreamConfig:h}=this._room;c=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||h.bitrate,type:m.VIDEO,videoType:m.SMALL,sdp:c})}let u={type:e.type,sdp:c};yield this.setAnswer(u),this._log.debug(`accepted answer: ${c}`)}catch(c){throw this._log.error(`failed to accept remote answer ${c}`),c}})}sendMutedFlag(e){var o,n,a;if(e===this.localAuxAudioTrack||e===this.localAuxVideoTrack)return;let r={audio:!!((o=this.localMainAudioTrack)!=null&&o.muted),bigVideo:!!((n=this.localMainVideoTrack)!=null&&n.muted),auxVideo:!!((a=this.localAuxVideoTrack)!=null&&a.muted)};this._log.info(`send muted state: ${JSON.stringify(r)}`),this._signalChannel.send(Y.UPDATE_MUTE_STAT,r)}getIsReconnecting(){return this._isReconnecting}reconnect(){return p(this,null,function*(){if(!(Fe(ws.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,responseCommand:G.UNPUBLISH_RESULT,enableLog:!1}),this.closePeerConnection(),this.initialize(),this.isMainStreamPublished&&(yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0})),this._log.warn("reconnect() uplink reconnect successfully"),this.stopReconnection()}catch(t){let r=vt(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&E.emit(I.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{Ae(e).media.forEach((r,o)=>{if(r.type===m.AUDIO){let n=r.ssrcs&&r.ssrcs[0];n&&(this.ssrc.audio=Number(n.id))}else{if(this._sdpSemantics===qr&&r.ssrcGroups){r.ssrcGroups.forEach((a,c)=>{let l=Number(a.ssrcs.split(" ")[0]);c===0?this.ssrc.video=l:c===1&&(this.ssrc.small=l)});return}let n=r.ssrcs&&r.ssrcs[0];if(!n)return;switch(o){case 1:this.ssrc.video=Number(n.id);break;case 2:this.ssrc.small=Number(n.id);break;case 3:this.ssrc.auxiliary=Number(n.id);break;default:break}}})}catch(t){}}getVideoTrackId(e=m.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===m.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===m.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===m.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===m.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===ur?(this._log.error(xe.NOT_SUPPORTED_H264ENCODE),new y({code:S.NOT_SUPPORTED_H264,message:P({key:L.NOT_SUPPORTED_H264ENCODE})})):new y({code:S.UNKNOWN,message:P({key:L.SIGNAL_RESPONSE_FAILED,data:{signalResponse:G.PUBLISH_RESULT,code:e,message:t}})})}};N([Q(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new y({code:S.API_CALL_ABORTED,message:P({key:L.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],ws.prototype,"publish",1),N([nt(521715,!1)],ws.prototype,"unpublish",1),N([Ze(it.prototype.afterConnect),Ia(it.prototype.beforeConnect)],ws.prototype,"connect",1);var Tu=ws,tn=Tu;var rn=class{constructor(i,e){this.room=i;d(this,"_log");d(this,"_prevReportTime",0);d(this,"_prevReport",{});d(this,"_prevStats",null);d(this,"_prevEncoderImplementation","");d(this,"_prevAuxEncoderImpl","");d(this,"_prevQualityLimitationReason","");d(this,"_prevAuxQualityLimitationReason","");d(this,"_prevDecoderImplementationMap",new Map);d(this,"totalBytesSent",0);d(this,"totalBytesReceived",0);d(this,"_spcStats",null);this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(i){return p(this,null,function*(){var o;let e={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},small:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},auxiliary:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},rtt:0},t=i.getPeerConnection(),r=i.getSSRC();if(t)try{if((this._spcStats||(yield t.getStats())).forEach(a=>{var u,h,f;let c,l;if(a.type==="outbound-rtp")if((a.mediaType||a.kind)===m.VIDEO){if(a.ssrc===r.video?(c=m.VIDEO,l=i.localMainVideoTrack):a.ssrc===r.small?c=m.SMALL:a.ssrc===r.auxiliary&&(l=i.localAuxVideoTrack,c=m.AUXILIARY),!c)return;if(e[c].bytesSent=a.bytesSent,e[c].packetsSent=a.packetsSent,e[c].framesEncoded=a.framesEncoded,T(a.keyFramesEncoded)||(e[c].keyFramesEncoded=a.keyFramesEncoded),T(a.nackCount)||(e[c].nackCount=a.nackCount),T(a.pliCount)||(e[c].pliCount=a.pliCount),T(a.retransmittedPacketsSent)||(e[c].retransmittedPacketsSent=a.retransmittedPacketsSent),T(a.totalEncodeTime)||(e[c].totalEncodeTime=a.totalEncodeTime),T(a.totalPacketSendDelay)||(e[c].totalPacketSendDelay=a.totalPacketSendDelay),!T(a.encoderImplementation)&&(c===m.VIDEO&&this._prevEncoderImplementation!==a.encoderImplementation||c===m.AUXILIARY&&this._prevAuxEncoderImpl!==a.encoderImplementation)){let D=2,g=this._prevEncoderImplementation;c===m.AUXILIARY&&(D=7,g=this._prevAuxEncoderImpl),E.emit("262",{userId:i.userId,streamType:D,prevImplementation:g,implementation:a.encoderImplementation,codec:i.videoCodec,isHWCodec:a.powerEfficientEncoder}),this[c===m.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=a.encoderImplementation,this._log.info(`${c===m.AUXILIARY?"aux ":""}encoderImplementation change to ${a.encoderImplementation}(${i.videoCodec}) HWEncoder: ${a.powerEfficientEncoder}`)}a.ssrc===r.video?!T(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`qualityLimitationReason change to ${a.qualityLimitationReason}`),E.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(u=i.localMainVideoTrack)==null?void 0:u.isQosClearFirst}),this._prevQualityLimitationReason=a.qualityLimitationReason):a.ssrc===r.auxiliary&&!T(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevAuxQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`aux qualityLimitationReason change to ${a.qualityLimitationReason}`),E.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(h=i.localAuxVideoTrack)==null?void 0:h.isQosClearFirst}),this._prevAuxQualityLimitationReason=a.qualityLimitationReason)}else e.audio.bytesSent=a.bytesSent,e.audio.packetsSent=a.packetsSent;else a.type==="candidate-pair"?Zi(a)&&(this.totalBytesSent=a.bytesSent,j(a.currentRoundTripTime)&&(e.rtt=Math.floor(a.currentRoundTripTime*1e3))):a.type==="media-source"&&(a.kind===m.AUDIO?(e.audio.audioLevel=a.audioLevel||0,e.audio.totalAudioEnergy=a.totalAudioEnergy||0,a.echoReturnLoss,a.totalSamplesDuration&&(e.audio.totalSamplesDuration=a.totalSamplesDuration)):a.kind===m.VIDEO&&(a.trackIdentifier===i.getVideoTrackId(m.VIDEO)?e.video.fpsCapture=a.framesPerSecond:a.trackIdentifier===i.getVideoTrackId(m.AUXILIARY)?e.auxiliary.fpsCapture=a.framesPerSecond:e.small.fpsCapture=a.framesPerSecond));if(!T(a.audioLevel)&&((f=i.localMainAudioTrack)!=null&&f.mediaTrack)&&a.trackIdentifier===i.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=a.audioLevel||0),!T(a.frameWidth)){let _=m.SMALL;a.trackIdentifier===i.getVideoTrackId(m.VIDEO)||a.ssrc===r.video?_=m.VIDEO:(a.trackIdentifier===i.getVideoTrackId(m.AUXILIARY)||a.ssrc===r.auxiliary)&&(_=m.AUXILIARY),e[_].frameWidth=a.frameWidth,e[_].frameHeight=a.frameHeight,e[_].framesSent=a.framesSent}}),i.localMainAudioTrack){let a=i.localMainAudioTrack.getInternalAudioLevel();e.audio.micAudioLevel=a,e.audio.audioLevel===0&&(e.audio.audioLevel=a)}this.totalBytesSent||(this.totalBytesSent+=e.audio.bytesSent+e.video.bytesSent+e.auxiliary.bytesSent),Object.keys(e).forEach(a=>{a===m.AUDIO?(i.localMainAudioTrack&&(i.localMainAudioTrack.stat=e[a]),i.localAuxAudioTrack&&(i.localAuxAudioTrack.stat=e[a])):a===m.VIDEO?i.localMainVideoTrack&&(i.localMainVideoTrack.stat=e[a]):a===m.AUXILIARY&&i.localAuxVideoTrack&&(i.localAuxVideoTrack.stat=e[a])})}catch(n){this._log.warn(`failed to getStats on sender connection ${n}`)}return e.rtt===0&&(e.rtt=((o=this.room.networkQuality)==null?void 0:o.uplinkRTT)||0),e})}getReceiverStats(i){return p(this,null,function*(){var r,o,n;let e={tinyId:i.tinyId,userId:i.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,p2pDelay:0,totalJitter:0,totalJitterCount:0,audioLevel:0,totalAudioEnergy:0,insertedSamplesForDeceleration:0,removedSamplesForAcceleration:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,freezeCount:0,totalFreezesDuration:0,totalJitter:0,totalJitterCount:0,p2pDelay:0},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,totalJitter:0,totalJitterCount:0,p2pDelay:0}},t=i.getPeerConnection();if(t)try{let{ssrc:a}=i,{muteState:c,subscribeState:l}=i;(this._spcStats||(yield t.getStats())).forEach(h=>{if(h.type==="inbound-rtp"){let f=(h.mediaType||h.kind)===m.AUDIO;if(f){if(h.ssrc!==a.audio||!c.hasAudio)return;e.audio.packetsReceived=h.packetsReceived,e.audio.bytesReceived=h.bytesReceived,e.audio.packetsLost=h.packetsLost,h.insertedSamplesForDeceleration&&(e.audio.insertedSamplesForDeceleration=h.insertedSamplesForDeceleration),h.removedSamplesForAcceleration&&(e.audio.removedSamplesForAcceleration=h.removedSamplesForAcceleration),h.totalSamplesDuration&&(e.audio.totalSamplesDuration=h.totalSamplesDuration),h.totalSamplesReceived&&(e.audio.totalSamplesReceived=h.totalSamplesReceived),h.concealedSamples&&(e.audio.concealedSamples=h.concealedSamples);let{remoteAudioTrack:_}=i;_.stat.packetsReceived=h.packetsReceived,_.stat.bytesReceived=h.bytesReceived,_.stat.packetsLost=h.packetsLost,e.audio.p2pDelay=_.stat.end2EndDelay,e.hasAudio=!0}else{if(ne&&h.bytesReceived===0)return;let _;h.ssrc===a.video&&c.hasVideo&&(e.video.packetsReceived=h.packetsReceived,e.video.bytesReceived=h.bytesReceived,e.video.packetsLost=h.packetsLost,e.video.framesReceived=h.framesReceived,e.video.framesDecoded=h.framesDecoded,e.video.fpsDecoded=h.framesPerSecond,e.hasVideo=!0,_=i.remoteVideoTrack,c.hasSmall&&l.smallVideo&&(e.isSmallSubscribed=!0),h.decoderImplementation&&(!this._prevDecoderImplementationMap.has(e.userId)||this._prevDecoderImplementationMap.get(e.userId)!==h.decoderImplementation)&&(this._log.info(`${e.userId} decoderImplementation change to ${h.decoderImplementation} HWDecoder: ${h.powerEfficientDecoder}`),E.emit("262",{userId:this.room.userId,remoteUserId:e.userId,prevImplementation:this._prevDecoderImplementationMap.get(e.userId),implementation:h.decoderImplementation,codec:i.videoCodec,isHWCodec:h.powerEfficientDecoder}),this._prevDecoderImplementationMap.set(e.userId,h.decoderImplementation))),h.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.packetsReceived=h.packetsReceived,e.auxiliary.bytesReceived=h.bytesReceived,e.auxiliary.packetsLost=h.packetsLost,e.auxiliary.framesReceived=h.framesReceived,e.auxiliary.framesDecoded=h.framesDecoded,e.auxiliary.fpsDecoded=h.framesPerSecond,_=i.remoteAuxiliaryTrack,e.auxiliary.p2pDelay=_.stat.end2EndDelay,e.hasAuxiliary=!0),_&&(_.stat.packetsReceived=h.packetsReceived,_.stat.bytesReceived=h.bytesReceived,_.stat.packetsLost=h.packetsLost,_.stat.framesReceived=h.framesReceived,_.stat.framesDecoded=h.framesDecoded,h.jitterBufferDelay&&(_.stat.jitterBufferDelay=Math.floor(h.jitterBufferDelay/h.jitterBufferEmittedCount*1e3)),e.video.p2pDelay=_.stat.end2EndDelay)}h.jitterBufferDelay&&(f?(e.audio.totalJitter=h.jitterBufferDelay,e.audio.totalJitterCount=h.jitterBufferEmittedCount):h.ssrc===a.video&&c.hasVideo?(e.video.totalJitter=h.jitterBufferDelay,e.video.totalJitterCount=h.jitterBufferEmittedCount):h.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.totalJitter=h.jitterBufferDelay,e.auxiliary.totalJitterCount=h.jitterBufferEmittedCount))}else h.type==="candidate-pair"&&Zi(h)&&(this.totalBytesReceived=h.bytesReceived,j(h.currentRoundTripTime)&&(e.rtt=Math.floor(h.currentRoundTripTime*1e3)));T(h.frameWidth)||((h.trackIdentifier===i.getMainStreamVideoTrackId()||h.ssrc===a.video)&&(e.video.frameWidth=h.frameWidth,e.video.frameHeight=h.frameHeight,i.remoteVideoTrack.stat.frameWidth=h.frameWidth,i.remoteVideoTrack.stat.frameHeight=h.frameHeight),(h.trackIdentifier===i.getAuxStreamVideoTrackId()||h.ssrc===a.auxiliary)&&(e.auxiliary.frameWidth=h.frameWidth,e.auxiliary.frameHeight=h.frameHeight,i.remoteAuxiliaryTrack.stat.frameWidth=h.frameWidth,i.remoteAuxiliaryTrack.stat.frameHeight=h.frameHeight)),!T(h.audioLevel)&&i.muteState.audioAvailable&&i.remoteAudioTrack.mediaTrack&&h.trackIdentifier===i.remoteAudioTrack.mediaTrack.id&&(e.audio.audioLevel=h.audioLevel||0,e.audio.totalAudioEnergy=h.totalAudioEnergy||0)}),e.audio.audioLevel===0&&i.muteState.audioAvailable&&(e.audio.audioLevel=i.remoteAudioTrack.getInternalAudioLevel()||0),this.totalBytesReceived||(this.totalBytesReceived+=e.audio.bytesReceived+e.video.bytesReceived+e.auxiliary.bytesReceived),T((r=i.remoteVideoTrack.player.stat)==null?void 0:r.fps)||(e.video.fpsRender=i.remoteVideoTrack.player.stat.fps),T((o=i.remoteAuxiliaryTrack.player.stat)==null?void 0:o.fps)||(e.auxiliary.fpsRender=i.remoteAuxiliaryTrack.player.stat.fps)}catch(a){this._log.warn(`failed to getStats on receiver connection ${a}`)}return e.rtt===0&&(e.rtt=((n=this.room.networkQuality)==null?void 0:n.uplinkRTT)||0),e})}getStats(i,e){return p(this,null,function*(){let t={},r=[];if(this.room.singlePC){let o=this.room.singlePC.getPeerConnection();if(!o)return{senderStats:t,receiverStats:r};let n=w(),a=yield o.getStats(),c=w();c-n>2e3&&this._log.warn(`getStats cost ${c-n}ms`);let l=[],u=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source"]);a.forEach(h=>u.has(h.type)&&l.push(h)),this._spcStats=l}i&&(t=yield this.getSenderStats(i));for(let[o,n]of e){let a=yield this.getReceiverStats(n);r.push(a)}return{senderStats:t,receiverStats:r}})}getDifferenceValue(i,e){if(oi(i))return e;let t=e-i;return t<0?0:t}prepareReport({stats:i,report:e,freezeMap:t}){var f,_,D;if(!oi(i.senderStats)){let g={uint32_audio_level:i.senderStats.audio.audioLevel*Et,uint32_audio_energy:(i.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent};i.senderStats.audio.micAudioLevel&&(g.uint32_mic_audio_level=i.senderStats.audio.micAudioLevel*Et),i.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=i.senderStats.audio.totalSamplesDuration);let A=[];if(i.senderStats.video.bytesSent){let ie={uint32_video_stream_type:2,uint32_video_codec_fps:i.senderStats.video.framesSent,uint32_video_capture_fps:i.senderStats.video.fpsCapture,uint32_video_width:i.senderStats.video.frameWidth,uint32_video_height:i.senderStats.video.frameHeight,uint32_video_codec_bitrate:i.senderStats.video.bytesSent,uint32_video_enc_fps:i.senderStats.video.framesEncoded,uint32_key_frame_count:i.senderStats.video.keyFramesEncoded,uint32_nack_count:i.senderStats.video.nackCount,uint32_pli_count:i.senderStats.video.pliCount,uint32_encode_cost:(i.senderStats.video.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.video.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.video.retransmittedPacketsSent};A.push(ie)}if(i.senderStats.small.bytesSent){let ie={uint32_video_stream_type:3,uint32_video_codec_fps:i.senderStats.small.framesSent||0,uint32_video_capture_fps:i.senderStats.small.fpsCapture||0,uint32_video_width:i.senderStats.small.frameWidth||0,uint32_video_height:i.senderStats.small.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.small.bytesSent,uint32_video_enc_fps:i.senderStats.small.framesEncoded||0,uint32_key_frame_count:i.senderStats.small.keyFramesEncoded,uint32_nack_count:i.senderStats.small.nackCount,uint32_pli_count:i.senderStats.small.pliCount,uint32_encode_cost:(i.senderStats.small.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.small.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.small.retransmittedPacketsSent};A.push(ie)}if(i.senderStats.auxiliary.bytesSent){let ie={uint32_video_stream_type:7,uint32_video_codec_fps:i.senderStats.auxiliary.framesSent||0,uint32_video_capture_fps:i.senderStats.auxiliary.fpsCapture||0,uint32_video_width:i.senderStats.auxiliary.frameWidth||0,uint32_video_height:i.senderStats.auxiliary.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.auxiliary.bytesSent,uint32_video_enc_fps:i.senderStats.auxiliary.framesEncoded||0,uint32_key_frame_count:i.senderStats.auxiliary.keyFramesEncoded,uint32_nack_count:i.senderStats.auxiliary.nackCount,uint32_pli_count:i.senderStats.auxiliary.pliCount,uint32_encode_cost:(i.senderStats.auxiliary.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.auxiliary.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.auxiliary.retransmittedPacketsSent};A.push(ie)}let M={uint32_bitrate:0,uint32_lost:0,uint32_rtt:i.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:g,msg_video_status:A,msg_network_status:M}}let r=(f=Ce())==null?void 0:f.playoutStats;r&&(e.msg_device_info.uint32_audio_play_cost=r.totalFramesDuration);let{statInterval:o}=this;e.msg_down_stream_info=[],i.receiverStats.forEach(g=>{let A={msg_user_info:{str_identifier:g.userId,uint64_tinyid:g.tinyId},msg_network_status:{uint32_rtt:g.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(g.hasAudio){let M={uint32_audio_p2p_delay:g.audio.p2pDelay,uint32_audio_cache_ms:g.audio.totalJitter,uint32_audio_cache_ms_count:g.audio.totalJitterCount,uint32_audio_codec_bitrate:g.audio.bytesReceived,uint32_audio_total_bitrate:g.audio.bytesReceived,uint32_audio_level:g.audio.audioLevel*1e8,uint32_audio_energy:g.audio.totalAudioEnergy*1e6,uint32_audio_receive:g.audio.packetsReceived,uint32_audio_origin_lost:g.audio.packetsLost};A.msg_audio_status=M}if(g.hasVideo){let M=t.get(`${g.userId}_${Lc}`),ie=M?M.duration:0,F={uint32_video_stream_type:g.isSmallSubscribed?3:2,uint32_video_receive_fps:g.video.framesReceived,uint32_video_width:g.video.frameWidth,uint32_video_height:g.video.frameHeight,uint32_video_codec_bitrate:g.video.bytesReceived,uint32_video_receive:g.video.packetsReceived,uint32_video_origin_lost:g.video.packetsLost,uint32_video_block_time:ie,uint32_video_dec_fps:g.video.framesDecoded,uint32_video_codec_fps:g.video.fpsRender,uint32_video_cache_ms:g.video.totalJitter,uint32_video_cache_ms_count:g.video.totalJitterCount,uint32_video_p2p_delay:g.video.p2pDelay};A.msg_video_status.push(F)}if(g.hasAuxiliary){let M=t.get(`${g.userId}_${Pc}`),ie=M?M.duration:0,F={uint32_video_stream_type:7,uint32_video_receive_fps:g.auxiliary.framesReceived,uint32_video_width:g.auxiliary.frameWidth,uint32_video_height:g.auxiliary.frameHeight,uint32_video_codec_bitrate:g.auxiliary.bytesReceived,uint32_video_receive:g.auxiliary.packetsReceived+g.auxiliary.packetsLost,uint32_video_origin_lost:g.auxiliary.packetsLost,uint32_video_block_time:ie,uint32_video_dec_fps:g.auxiliary.framesDecoded,uint32_video_codec_fps:g.video.fpsRender,uint32_video_cache_ms:g.auxiliary.totalJitter,uint32_video_cache_ms_count:g.auxiliary.totalJitterCount,uint32_video_p2p_delay:g.auxiliary.p2pDelay};A.msg_video_status.push(F)}e.msg_down_stream_info.push(A)});let n=this._prevReport,a=this._prevStats;if(this._prevReport=JSON.parse(JSON.stringify(e)),this._prevStats=JSON.parse(JSON.stringify(i)),e.msg_up_stream_info.msg_audio_status&&n.msg_up_stream_info.msg_audio_status){let g=n.msg_up_stream_info.msg_audio_status,A=e.msg_up_stream_info.msg_audio_status;if(g.uint32_audio_codec_bitrate===0)A.uint32_audio_codec_bitrate=0;else{let M=this.getDifferenceValue(g.uint32_audio_codec_bitrate,A.uint32_audio_codec_bitrate);A.uint32_audio_codec_bitrate=Math.round(M*8/o),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=A.uint32_audio_codec_bitrate}(_=n.msg_device_info)!=null&&_.uint32_audio_capture_cost?e.msg_device_info.uint32_audio_capture_cost=2*Math.floor(this.getDifferenceValue(n.msg_device_info.uint32_audio_capture_cost,e.msg_device_info.uint32_audio_capture_cost)*1e3/o):delete e.msg_device_info.uint32_audio_capture_cost}let c=n.msg_up_stream_info.msg_video_status;e.msg_up_stream_info.msg_video_status.forEach(g=>{let A=c.find(U=>U.uint32_video_stream_type===g.uint32_video_stream_type);if(!A||A.uint32_video_codec_bitrate===0){g.uint32_video_codec_bitrate=0,g.uint32_video_enc_fps=0,g.uint32_video_codec_fps=0;return}let M=0,ie=0,F=0;A&&g.uint32_video_codec_bitrate>=A.uint32_video_codec_bitrate&&(M=A.uint32_video_codec_bitrate,ie=A.uint32_video_enc_fps,F=A.uint32_video_codec_fps);let Oe=this.getDifferenceValue(M,g.uint32_video_codec_bitrate);g.uint32_video_codec_bitrate=Math.round(Oe*8/o),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=g.uint32_video_codec_bitrate,g.uint32_video_enc_fps=Math.round(this.getDifferenceValue(ie,g.uint32_video_enc_fps)/o),g.uint32_video_codec_fps=Math.round(this.getDifferenceValue(F,g.uint32_video_codec_fps)/o),A.uint32_video_width===0&&A.uint32_video_height===0&&A.uint32_video_codec_fps===0&&(g.uint32_video_codec_fps=g.uint32_video_enc_fps),T(A.uint32_key_frame_count)||(g.uint32_key_frame_count=Math.round(this.getDifferenceValue(A.uint32_key_frame_count,g.uint32_key_frame_count))),T(A.uint32_nack_count)||(g.uint32_nack_count=Math.round(this.getDifferenceValue(A.uint32_nack_count,g.uint32_nack_count))),T(A.uint32_pli_count)||(g.uint32_pli_count=Math.round(this.getDifferenceValue(A.uint32_pli_count,g.uint32_pli_count))),T(A.uint32_video_arq_packets)||(g.uint32_video_arq_packets=Math.round(this.getDifferenceValue(A.uint32_video_arq_packets,g.uint32_video_arq_packets))),T(A.uint32_encode_cost)||(g.uint32_encode_cost=Math.round(this.getDifferenceValue(A.uint32_encode_cost,g.uint32_encode_cost)/o)),T(A.uint32_send_packet_cost)||(g.uint32_send_packet_cost=Math.round(this.getDifferenceValue(A.uint32_send_packet_cost,g.uint32_send_packet_cost)/o))});let u=n.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(g=>u.find(A=>A.msg_user_info.uint64_tinyid===g.msg_user_info.uint64_tinyid));let h=e.msg_down_stream_info;return h.forEach(g=>{let A=u.find(M=>M.msg_user_info.uint64_tinyid===g.msg_user_info.uint64_tinyid);if(!oi(g.msg_audio_status)&&!oi(A.msg_audio_status)){let M=g.msg_audio_status,ie=A.msg_audio_status,F=this.getDifferenceValue(ie.uint32_audio_cache_ms_count,M.uint32_audio_cache_ms_count);delete M.uint32_audio_cache_ms_count,M.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(ie.uint32_audio_cache_ms,M.uint32_audio_cache_ms)/F)||0;let Oe=this.room.remotePublishedUserMap.get(g.msg_user_info.str_identifier);Oe&&(Oe.remoteAudioTrack.stat.jitterBufferDelay=M.uint32_audio_cache_ms),M.uint32_audio_origin_lost=this.getDifferenceValue(ie.uint32_audio_origin_lost,M.uint32_audio_origin_lost),M.uint32_audio_receive=this.getDifferenceValue(ie.uint32_audio_receive,M.uint32_audio_receive),M.uint32_audio_receive+=M.uint32_audio_origin_lost;let U=this.getDifferenceValue(ie.uint32_audio_codec_bitrate,M.uint32_audio_codec_bitrate);M.uint32_audio_codec_bitrate=Math.round(U*8/o),M.uint32_audio_total_bitrate=Math.round(U*8/o)}else g.msg_audio_status={};if(g.msg_video_status&&A.msg_video_status){let M=A.msg_video_status;g.msg_video_status=g.msg_video_status.filter(F=>M.find(Oe=>Oe.uint32_video_stream_type===F.uint32_video_stream_type)),g.msg_video_status.forEach(F=>{let Oe=M.find(Yp=>Yp.uint32_video_stream_type===F.uint32_video_stream_type),U=Oe.uint32_video_receive,Wp=Oe.uint32_video_origin_lost,Jp=Oe.uint32_video_codec_bitrate,jp=Oe.uint32_video_receive_fps,qp=Oe.uint32_video_dec_fps;F.uint32_video_origin_lost=this.getDifferenceValue(Wp,F.uint32_video_origin_lost),F.uint32_video_receive=this.getDifferenceValue(U,F.uint32_video_receive)+F.uint32_video_origin_lost;let Xp=this.getDifferenceValue(Jp,F.uint32_video_codec_bitrate);F.uint32_video_codec_bitrate=Math.round(Xp*8/o);let zp=this.getDifferenceValue(jp,F.uint32_video_receive_fps);F.uint32_video_receive_fps=Math.round(zp/o),F.uint32_video_dec_fps=Math.round(this.getDifferenceValue(qp,F.uint32_video_dec_fps)/o);let Qp=this.getDifferenceValue(Oe.uint32_video_cache_ms_count,F.uint32_video_cache_ms_count);delete F.uint32_video_cache_ms_count,F.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(Oe.uint32_video_cache_ms,F.uint32_video_cache_ms)/Qp)||0})}}),(D=n.msg_device_info)!=null&&D.uint32_audio_play_cost?e.msg_device_info.uint32_audio_play_cost=2*Math.floor(this.getDifferenceValue(n.msg_device_info.uint32_audio_play_cost,e.msg_device_info.uint32_audio_play_cost)/o):delete e.msg_device_info.uint32_audio_play_cost,a&&i.receiverStats.forEach(g=>{if(g.audio.concealedSamples&&g.audio.totalSamplesReceived){let A=a.receiverStats.find(M=>M.userId===g.userId);if(A&&A.audio.concealedSamples&&A.audio.totalSamplesReceived){let M=g.audio.concealedSamples-A.audio.concealedSamples,ie=g.audio.totalSamplesReceived-A.audio.totalSamplesReceived,F=Math.floor(M/ie*1e3*o);if(F>o*1e3/5){let Oe=h.find(U=>U.msg_user_info.str_identifier===g.userId);Oe&&(Oe.msg_audio_status.uint32_audio_block_time=F)}}}}),e}getStatsReport(r){return p(this,arguments,function*({uplinkConnection:i,downlinkConnections:e,freezeMap:t}){let o={msg_device_info:{},msg_up_stream_info:{msg_audio_status:{uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0},msg_video_status:[],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:0},msg_audio_status:{uint32_audio_cache_ms:0,uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0},msg_video_status:[{uint32_video_cache_ms:0,uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}}]},n=yield this.getStats(i,e);return JSON.stringify(this._prevReport)==="{}"&&(this._prevReport=JSON.parse(JSON.stringify(o))),this.prepareReport({stats:n,report:o,freezeMap:t}),this._prevReportTime=Date.now(),o})}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map}};var gp=Be(Qe());function fp(s){let i={totalCost:0,local:0,redirect:0,httpCache:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let e=performance.getEntriesByType("resource").reverse();for(let t of e)if(t.name===s){let r=Math.round(t.duration),o=Math.max(Math.round(t.domainLookupStart-t.startTime),0),n=t.redirectStart>0?Math.max(Math.round(t.redirectEnd-t.redirectStart),0):0,a=t.fetchStart>0?Math.max(Math.round(t.domainLookupStart-t.fetchStart),0):0,c=Math.round(t.domainLookupEnd-t.domainLookupStart),l=Math.round(t.requestStart-t.secureConnectionStart),u=Math.round(t.secureConnectionStart-t.connectStart),h=Math.round(t.responseStart-t.requestStart),f=Math.round(t.responseEnd-(t.responseStart||t.startTime));i=x(v({},i),{totalCost:r,local:o,redirect:n,httpCache:a,dns:c,tcp:u,tls:l,request:h,response:f});break}}catch(e){}return i}function _p(s){return new Promise(i=>p(this,null,function*(){let e=setTimeout(()=>{i({totalCost:1e4,local:0,dns:0,tcp:0,tls:0,request:0,response:0})},1e4),t=Date.now(),r=`https://${s}/?t=${t}`;try{yield fetch(r)}catch(n){}clearTimeout(e);let o=fp(r);o.totalCost===0&&(o.totalCost=Date.now()-t),i(o)}))}var $T=700,$r=class $r extends gp.default{constructor({signalChannel:e,room:t}){super();d(this,"_room");d(this,"_signalChannel");d(this,"_log");d(this,"uplinkRTT",0);d(this,"uplinkLoss",0);d(this,"downlinkRTT",0);d(this,"downlinkLoss",0);d(this,"pingResults",{});d(this,"_downlinkPrevStatMap",new Map);d(this,"_downlinkLossAndRTTMap",new Map);d(this,"_interval",-1);d(this,"_uplinkNetworkQuality",0);d(this,"_downlinkNetworkQuality",0);this._room=t,this._signalChannel=e,this._log=R.createLogger({id:"q",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this.initialize()}get uplinkNetworkQuality(){return this._uplinkNetworkQuality}set uplinkNetworkQuality(e){e!==this._uplinkNetworkQuality&&this._log.info(`uplink ${this.uplinkNetworkQuality} -> ${e}, rtt: ${this.uplinkRTT}, loss: ${this.uplinkLoss} ws-rtt: ${this._signalChannel.rtt}`),this._uplinkNetworkQuality=e}get downlinkNetworkQuality(){return this._downlinkNetworkQuality}set downlinkNetworkQuality(e){if(e!==this._downlinkNetworkQuality){let{rtt:t,loss:r}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this._log.info(`downlink ${this.downlinkNetworkQuality} -> ${e}, rtt: ${t}, loss: ${r} ws-rtt: ${this._signalChannel.rtt}`)}this._downlinkNetworkQuality=e}initialize(){this._signalChannel.on(G.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(ye.CONNECTION_STATE_CHANGED,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var c,l;if(e.data.code!==0)return;let t=e.data.data;if(t.delay&&this.updateDelay(t.delay),this._room.signalChannel&&t.wsRtt&&(this._room.signalChannel.rtt=t.wsRtt),!this._room.uplinkConnection){this.uplinkNetworkQuality=0,this.uplinkLoss=0,this.uplinkRTT=0;return}let r=(l=(c=this._room)==null?void 0:c.uplinkConnection)==null?void 0:l.getPeerConnection();if(r&&this.isPeerConnectionDisconnected(r)){this.uplinkNetworkQuality=6,this.uplinkLoss=0,this.uplinkRTT=0;return}let o=t.expectAudPkg+t.expectVidPkg,n=t.recvAudPkg+t.recvVidPkg,a=o-n;o===0&&n===0||(a<=0?this.uplinkLoss=0:this.uplinkLoss=Math.round(a/o*100),this.uplinkRTT=t.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss,this.uplinkRTT))}handleDownlinkNetworkQuality(){return p(this,null,function*(){if(this._room.remotePublishedUserMap.size===0){this.downlinkNetworkQuality=0;return}let e=[...this._room.remotePublishedUserMap.values()],t=e.filter(a=>{var c;return((c=a.getPeerConnection())==null?void 0:c.connectionState)===me.CONNECTED});if(e.filter(a=>this.isPeerConnectionDisconnected(a.getPeerConnection())).length===e.length){this.downlinkNetworkQuality=6;return}for(let a=0;a<t.length;a++){let c=t[a].getPeerConnection();if(!c)return;let{rtt:l,totalPacketsLost:u,totalPacketsReceived:h}=yield this.getStat(c);if(!this._downlinkPrevStatMap.has(c)){this._downlinkPrevStatMap.set(c,{totalPacketsLost:u,totalPacketsReceived:h});continue}let f=0,_=this._downlinkPrevStatMap.get(c),D=u-_.totalPacketsLost,g=h-_.totalPacketsReceived;D<=0||g<0?f=0:f=Math.round(D/(D+g)*100),this._downlinkPrevStatMap.set(c,{totalPacketsLost:u,totalPacketsReceived:h}),this._downlinkLossAndRTTMap.set(c,{rtt:l,loss:f,userId:t[a].getUserId(),audioDelay:t[a].remoteAudioTrack.stat.end2EndDelay,videoDelay:t[a].remoteVideoTrack.stat.end2EndDelay})}if([...this._downlinkPrevStatMap.keys()].forEach(a=>{this.isPeerConnectionDisconnected(a)&&(this._downlinkPrevStatMap.delete(a),this._downlinkLossAndRTTMap.delete(a))}),this._downlinkLossAndRTTMap.size===0){this.downlinkRTT=0,this.downlinkLoss=0,this.downlinkNetworkQuality=0;return}let{rtt:o,loss:n}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=o,this.downlinkLoss=n,this.downlinkNetworkQuality=this.getNetworkQuality(n,o)})}getStat(e){return p(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!yr())return t;let r=e.getReceivers();try{for(let o=0;o<r.length;o++)(yield r[o].getStats()).forEach(c=>{c.type==="candidate-pair"&&j(c.currentRoundTripTime)&&(t.rtt=Math.round(c.currentRoundTripTime*1e3)),c.type==="inbound-rtp"&&(c.mediaType===m.AUDIO||c.mediaType===m.VIDEO)&&(t.totalPacketsLost+=c.packetsLost,t.totalPacketsReceived+=c.packetsReceived)});return t.rtt===0&&(t.rtt=this.uplinkRTT),t}catch(o){return t}})}getAverageLossAndRTT(e){let t={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach(r=>{t.rtt+=r.rtt,t.loss+=r.loss}),Object.keys(t).forEach(r=>{t[r]=Math.round(t[r]/e.length)})),t}getNetworkQuality(e,t){return e>50||t>500?5:e>30||t>350?4:e>20||t>200?3:e>10||t>100?2:e>=0||t>=0?1:0}handleSignalConnectionStateChange(e){e.state==="DISCONNECTED"?(this.uplinkRTT=0,this.uplinkLoss=0,this.uplinkNetworkQuality=6):e.state==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}handleUplinkConnectionStateChange({state:e}){e==="DISCONNECTED"?(this.uplinkLoss=0,this.uplinkRTT=0,this.uplinkNetworkQuality=6):e==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}isPeerConnectionDisconnected(e){return!!(e&&(e.connectionState===me.DISCONNECTED||e.connectionState===me.FAILED||e.connectionState===me.CLOSED))}setUplinkConnection(e){this._room.uplinkConnection=e,this._room.uplinkConnection?this._room.uplinkConnection.on("connection-state-changed",this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT=0,this.uplinkLoss=0)}start(){if(this._interval!==-1){this._log.info("network quality calculating is already started");return}this._log.debug("start network quality calculating"),this._interval=se.run("ric",()=>{var n;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];E.emit(I.NETWORK_QUALITY,{room:this._room,uplink:{rtt:this.uplinkRTT,loss:this.uplinkLoss},downlinks:e});let t=(n=this._room.scheduleResult.config)==null?void 0:n.pingDomainInfo,r={uplinkNetworkQuality:this.uplinkNetworkQuality,downlinkNetworkQuality:this.downlinkNetworkQuality,uplinkRTT:this.uplinkRTT,uplinkLoss:this.uplinkLoss,downlinkRTT:this.downlinkRTT,downlinkLoss:this.downlinkLoss};t&&(r=x(v({},r),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit($r.EVENT_NETWORK_QUALITY,r);let o=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&o-$r.lastPingTime>t.interval*1e3){$r.lastPingTime=Date.now();let a=t.domain.map(c=>_p(c).then(l=>({domain:c,cost:l.totalCost})));Promise.all(a).then(c=>{this.pingResults.isPoorNetwork=c.some(l=>l.cost>$T),this.pingResults.timestamp=o,this.pingResults.data=c,c.forEach(l=>{b.addSuccessEvent({key:521718,cost:l.cost})}),this._log.warn(`All ping results: ${JSON.stringify(c)}`)}).catch(c=>{this._log.warn(`Error during pinging domains: ${c}`)})}},{delay:2e3})}stop(){this._log.debug("stopped"),this._interval!==-1&&(se.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:t}=this._room;e.forEach(({srcTinyId:r,videoDelay:o,audioDelay:n})=>{let a=t.get(r);if(a){let c=this._room.remotePublishedUserMap.get(a);c==null||c.setDelay({videoDelay:o,audioDelay:n})}})}};d($r,"EVENT_NETWORK_QUALITY","0"),d($r,"lastPingTime",0);var Us=$r;function HT({fn:s,context:i}){return function(...e){try{let t=s.apply(i,e);return Xi(t)?t.catch(r=>R.error(`${s.name}() error observed ${r}`)):t}catch(t){R.error(`${s.name}() error observed ${t}`)}}}var uc=class{constructor(i){d(this,"_frameWorkType");d(this,"_component");d(this,"_language");d(this,"connectionType");d(this,"_room");d(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});d(this,"_keyPrefix");d(this,"_log");d(this,"_intervalId");d(this,"_firstPublishedUserList");d(this,"_networkQuality");d(this,"_basicInfo");d(this,"_pathJoinRoom");d(this,"_pathLeaveRoom");d(this,"_pathMainVideoMap");d(this,"_pathMainAudioMap");d(this,"_pathAuxiliaryMap");d(this,"_remoteStreamStatMap");d(this,"_localStreamStat");d(this,"_eventMap",new Map);d(this,"_captureCostSum",0);d(this,"_captureCostCount",0);d(this,"isDestroyed",!1);this._frameWorkType=i.frameWorkType||30,this._component=i.component||0,this.connectionType=i.connectionType||1,this._language=i.language||0,this._room=i.room,this._keyPrefix="key_point",this._log=R.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&oe(this[e])&&(this[e]=HT({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:Me,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,po().then(i=>{this._basicInfo.string_os_version=bi(),i?this._basicInfo.string_device_name=i.mobile?i.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(i,e){return this._eventMap.set(i,e),E.on(i,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(I.JOIN_START,this.handleJoinStart).addEvent(I.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(I.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(I.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(I.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(I.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(I.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(I.JOIN_FAILED,this.handleJoinFailed).addEvent(I.LEAVE_START,this.handleLeaveStart).addEvent(I.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(I.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(I.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(I.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(I.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(I.PUBLISH_START,this.handlePublishStart).addEvent(I.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(I.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(I.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(I.PLAY_TRACK_START,this.handlePlayStart).addEvent(I.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(I.PLAYER_STATE_CHANGED,({track:i,state:e,type:t})=>{!i.isRemote||!this.hitTest(i.room)||e==="PLAYING"&&(t===m.AUDIO?this.handleAudioPlaying(i):this.handleVideoPlaying(i))}).addEvent(I.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(I.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(I.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(I.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let r=e.hasAudio||e.hasVideo||e.hasSmall,o=e.hasAuxiliary,n=t.hasAudio||t.hasVideo||t.hasSmall,a=t.hasAuxiliary;!r&&n&&this.handleRemoteStreamAdded(t.userId,"main"),!o&&a&&this.handleRemoteStreamAdded(t.userId,"auxiliary")}).addEvent(I.SINGLE_CONNECTION_STAT,({room:i,stat:e})=>{this.hitTest(i)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((i,e)=>E.off(e,i)),this._eventMap.clear()}destroy(){this.uninstallEvents(),se.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(i){this.hitTest(i.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),i.params&&(T(i.params.frameWorkType)||(this._frameWorkType=i.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),T(i.params.component)||(this._component=i.params.component,this._basicInfo.uint32_component=this._component),T(i.params.language)||(this._language=i.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:i,detailCost:e}){if(this.hitTest(i)&&e){let{totalCost:t,local:r,dns:o,tcp:n,tls:a,request:c,response:l}=e;this._pathJoinRoom.int32_schedule_cost=t,this._pathJoinRoom.int32_schedule_local=r,this._pathJoinRoom.int32_schedule_dns=o,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=a,this._pathJoinRoom.int32_schedule_request=c,this._pathJoinRoom.int32_schedule_response=l}}handleSignalConnectionStart({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:i,error:e}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof y?Number(e.getExtraCode()||e.getCode()):S.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=i.code,i.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=i.room.getSignalInfo())}handleJoinFailed({room:i,error:e}){this.hitTest(i)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=i.publishedUserList||[])}handleSendFirstVideoFrame({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(i){this.hitTest(i.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleRemoteStreamAdded(i,e){var r;let t=`${i}_${e}`;if(!this._remoteStreamStatMap.has(t)){let o={userId:i,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:x(v({},GT),{msg_user_info:new sn({userId:i,tinyId:(r=this._room.remotePublishedUserMap.get(i))==null?void 0:r.tinyId,role:20})})};o.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(t,o)}}handleSubscribeStart({room:i,remotePublishedUser:e,streamType:t,subscribeState:r}){if(!this.hitTest(i))return;let{userId:o,tinyId:n,role:a}=e,c=new sn({userId:o,tinyId:n,role:a==="anchor"?20:21}),l=Date.now(),u=`${o}_${t}`,h=this._remoteStreamStatMap.get(u);h&&h.subscribeStartTime===0&&(h.subscribeStartTime=l),t==="main"?(e.muteState.hasVideo&&(r.video||r.smallVideo)&&!this._pathMainVideoMap.has(u)&&this._pathMainVideoMap.set(u,{statsToReport:{msg_user_info:c,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:o,sendSubscribeCMDTime:l}),e.muteState.hasAudio&&r.audio&&!this._pathMainAudioMap.has(u)&&this._pathMainAudioMap.set(u,{statsToReport:{msg_user_info:c,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:o,sendSubscribeCMDTime:l})):e.muteState.hasAuxiliary&&r.auxiliary&&!this._pathAuxiliaryMap.has(u)&&this._pathAuxiliaryMap.set(u,{sendSubscribeCMDTime:l})}handleSubscribed({room:i,remotePublishedUser:e,streamType:t}){if(this.hitTest(i)){let r=`${e.userId}_${t}`,o=this._remoteStreamStatMap.get(r);o&&o.subscribedTime===0&&(o.subscribedTime=Date.now())}}handlePlayStart({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._remoteStreamStatMap.get(e);(t==null?void 0:t.playStreamTime)===0&&(t.playStreamTime=Date.now())}handleVideoLoadedData({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._pathMainVideoMap.get(e);t&&t.statsToReport.uint64_combine_first_frame_time===0&&(t.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(i){let e=`${i.userId}_${i.streamType}`,t=Date.now(),r=this._pathMainVideoMap.get(e),o=this._remoteStreamStatMap.get(e);if(o){let{statsToReport:n}=o;if(!n.uint32_video_render_first&&i.streamType==="main"?this.hasVideoFlag(i.userId):this.hasAuxFlag(i.userId)){let a=t-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=a,b.addNumber({key:516820,value:a})}}(r==null?void 0:r.statsToReport.uint64_render_first_frame_time)===0&&(r.statsToReport.uint64_render_first_frame_time=t)}handleAudioPlaying(i){let e=`${i.userId}_${i.streamType}`,t=this._pathMainAudioMap.get(e);t&&t.statsToReport.uint64_play_first_frame_time===0&&(t.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(i){this.hitTest(i.room)&&(this._networkQuality.totalUplinkLoss+=i.uplink.loss,this._networkQuality.totalUplinkRTT+=i.uplink.rtt,this._networkQuality.count++,i.downlinks.forEach(({rtt:e,loss:t,userId:r,videoDelay:o,audioDelay:n})=>{let a=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(a)a.totalRTT+=e,a.totalLoss+=t,o&&(a.totalVideoDelay=(a.totalVideoDelay||0)+o,a.videoDelayCount=(a.videoDelayCount||0)+1),n&&(a.totalAudioDelay=(a.totalAudioDelay||0)+n,a.audioDelayCount=(a.audioDelayCount||0)+1),a.count++;else{let c,l,u,h;o&&(l=o,u=1),n&&(c=n,h=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(r,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:c,totalVideoDelay:l,audioDelayCount:h,videoDelayCount:u})}}))}handleHeartbeatStats(i){if(this.hitTest(i.room)){let{msg_device_info:e,msg_up_stream_info:t,msg_down_stream_info:r}=i.report;if(t.msg_video_status[0]){let{uint32_video_codec_bitrate:o,uint32_video_enc_fps:n,uint32_video_width:a,uint32_video_height:c}=t.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=o,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=a,this._localStreamStat.totalVideoHeight+=c,this._localStreamStat.videoCount++}if(t.msg_audio_status){let{uint32_audio_level:o}=t.msg_audio_status;Math.floor(o/Et*100)>0&&(this._localStreamStat.totalAudioLevel+=o/Et,this._localStreamStat.audioLevelCount++)}r.forEach(o=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:c}=o,l=n.str_identifier,u=this._room.remotePublishedUserMap.get(l);if(c.forEach(h=>{let f=h.uint32_video_stream_type===2,_=h.uint32_video_stream_type===7,D=`${l}_${f?"main":"auxiliary"}`,g=this._remoteStreamStatMap.get(D);if(g&&(f&&(u!=null&&u.remoteVideoTrack.isSubscribed)||_&&(u!=null&&u.remoteAuxiliaryTrack))){g.totalVideoFPS+=h.uint32_video_receive_fps,g.totalVideoBitrate+=h.uint32_video_codec_bitrate,g.videoCount++,g.statsToReport.uint32_video_width===0&&(g.statsToReport.uint32_video_width=h.uint32_video_width),g.statsToReport.uint32_video_height===0&&(g.statsToReport.uint32_video_height=h.uint32_video_height);let A=f?u.remoteVideoTrack:u.remoteAuxiliaryTrack;A.stat.jitterBufferDelay&&(g.videoJitterBufferDelay=A.stat.jitterBufferDelay),A.stat.framesReceived&&(g.statsToReport.uint32_video_consume_render_rate=Math.floor(A.stat.framesDecoded/A.stat.framesReceived*Gi(10,6)))}}),!Yr(a)){let h=`${l}_main`,f=this._remoteStreamStatMap.get(h);this._remoteStreamStatMap.has(h)&&f&&u!=null&&u.remoteAudioTrack.isSubscribed&&(f.totalAudioBitrate+=a.uint32_audio_codec_bitrate,f.audioCount++,u.remoteAudioTrack.stat.jitterBufferDelay&&(f.audioJitterBufferDelay=u.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/Et*100)>0&&(f.totalAudioLevel+=a.uint32_audio_level/Et,f.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:i}){this.hitTest(i)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:i,error:e}){let r={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof y?e.getExtraCode()||e.getCode():S.UNKNOWN);i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=r,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=r,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Ji)>=0}hasAudioFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&ji)>=0}hasAuxFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&lr)>=0}hitTest(i){return i===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let i=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=i<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((i,e)=>{let{userId:t}=i,r=this._networkQuality.totalDownlinkRTTAndLossMap.get(t);if(r){let{totalLoss:u,count:h,audioDelayCount:f,videoDelayCount:_,totalAudioDelay:D,totalVideoDelay:g}=r;i.statsToReport.uint32_avg_down_loss=Math.floor(u/h),f&&D&&(i.statsToReport.uint32_audio_network_p2p_delay=Math.floor(D/f),i.audioJitterBufferDelay&&(i.statsToReport.uint32_p2p_delay=Math.floor(i.statsToReport.uint32_audio_network_p2p_delay+i.audioJitterBufferDelay))),_&&g&&(i.statsToReport.uint32_video_network_p2p_delay=Math.floor(g/_))}i.videoCount>0&&(i.statsToReport.uint32_video_avg_fps=Math.floor(i.totalVideoFPS/i.videoCount),i.statsToReport.uint32_video_avg_bitrate=Math.floor(i.totalVideoBitrate/i.videoCount)),i.audioCount>0&&(i.statsToReport.uint32_audio_recv_bitrate=i.statsToReport.uint32_audio_bitrate=Math.floor(i.totalAudioBitrate/i.audioCount)),i.audioLevelCount>0&&(i.statsToReport.uint32_audio_play_db=Math.floor(i.totalAudioLevel/i.audioLevelCount*100));let{callDurationCalculator:o}=this._room;o&&(i.statsToReport.uint32_audio_play_time=o.getDuration(e,m.AUDIO),i.statsToReport.uint32_video_play_time=o.getDuration(e,m.VIDEO)),i.statsToReport.uint32_video_render_first&&(i.statsToReport.uint32_video_render_first=Math.min(i.statsToReport.uint32_video_render_first,Hr));let{badCaseDetector:n}=this._room,{dataFreeze:a,count:c}=n.getDataFreezeDuration(e),{renderFreeze:l}=n.getRenderFreezeDuration(e);i.statsToReport.uint32_video_block_count=c,i.statsToReport.uint32_video_block_time=Math.min(a,i.statsToReport.uint32_video_play_time),i.statsToReport.uint32_video_external_block_time=Math.min(l,i.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&i.statsToReport.uint32_video_avg_fps===0?i.statsToReport.uint32_video_black_screen_subjective=1:i.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((i,e)=>{if(!this.hasAudioFlag(i.userId)){this._pathMainAudioMap.delete(e);return}i.statsToReport.uint64_play_first_frame_time-i.statsToReport.uint64_start_enter_time>Hr&&(i.statsToReport.uint64_play_first_frame_time=i.statsToReport.uint64_start_enter_time+Hr)}),this._pathMainVideoMap.forEach((i,e)=>{if(!this.hasVideoFlag(i.userId)){this._pathMainVideoMap.delete(e);return}i.statsToReport.uint64_render_first_frame_time-i.statsToReport.uint64_start_enter_time>Hr&&(i.statsToReport.uint64_render_first_frame_time=i.statsToReport.uint64_start_enter_time+Hr)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>Hr&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+Hr)}getReportData(){this._basicInfo.uint32_networkType=fr();let i={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new sn({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Kr(this._signalInfo.relayIp),uint32_client_ip:Kr(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*Gi(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:Kr(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return eo(i),i}report(){return p(this,null,function*(){try{this.prepareReport();let i=this.getReportData();yield this.upload(i),this.initData()}catch(i){this._log.warn(i)}finally{this.isDestroyed&&(this._room=null)}})}upload(i){return p(this,null,function*(){if(i.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=yield Wc(i),r=t instanceof ArrayBuffer,o=`${Ei(e,Wi.KEY_POINT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(o,t));let a=[this.uploadKVStat(b),this.uploadKVStat(Rr)];n||a.push(Ai({url:o,body:t,priority:"low"})),yield Promise.all(a)})}setConnectionType(i){this.connectionType=i,this._basicInfo.uint32_connection_type=i}uploadKVStat(i){return p(this,null,function*(){let e=i.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=x(v({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let t=yield Wc(e),r=`${Ei(+this._room.sdkAppId,Wi.KV_STAT)}&gzip=${+(t instanceof ArrayBuffer)}`,o=!1;navigator.sendBeacon&&(o=navigator.sendBeacon(r,t)),o||Ai({url:r,body:t})})}};N([mt({settings:{timeout:500,retries:3}})],uc.prototype,"upload",1);var Hr=5e3,GT={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},sn=class{constructor(i){d(this,"str_identifier");d(this,"str_tinyid");d(this,"uint32_role");this.str_identifier=String(i.userId),this.str_tinyid=String(i.tinyId||0),this.uint32_role=i.role}},Tp=uc;var Eu=class{constructor(){d(this,"_startTime");d(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=w())}stop(){this._endTime===0&&(this._endTime=w())}getDuration(){return this._endTime===0?w()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},hc=Eu;var Su=class{constructor(i){d(this,"_room",null);d(this,"_durationMap");d(this,"_eventMap",new Map);this._room=i.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(I.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(I.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(I.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{var n;let{userId:r}=t;if(!this.hitTest(i))return;e.hasAudio&&!t.hasAudio&&this.stopDurationItem(`${r}_main`,m.AUDIO),e.hasVideo&&!t.hasVideo&&this.stopDurationItem(`${r}_main`,m.VIDEO),e.hasAuxiliary&&!t.hasAuxiliary&&this.stopDurationItem(`${r}_auxiliary`,m.VIDEO);let o=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(r);o&&(!e.hasAudio&&t.hasAudio&&o.remoteAudioTrack.isSubscribed&&this.addDuractionItem(r,m.AUDIO,"main"),!e.hasVideo&&t.hasVideo&&o.remoteVideoTrack.isSubscribed&&this.addDuractionItem(r,m.VIDEO,"main"),!e.hasAuxiliary&&t.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(r,m.VIDEO,"auxiliary"))}),this._eventMap.forEach((i,e)=>E.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>E.off(e,i,this)),this._eventMap.clear()}handleSubscribed({track:i}){if(!this.hitTest(i.room))return;let{userId:e,streamType:t,kind:r}=i;i.isSubscribed?this.addDuractionItem(e,r,t):this.stopDurationItem(`${e}_${t}`,r)}handleUnsubscribed({track:i}){this.hitTest(i.room)&&this.stopDurationItem(`${i.userId}_${i.streamType}`,i.kind)}isRecording(i){return i.findIndex(e=>e.endTime===0)>=0}addDuractionItem(i,e,t){let r=`${i}_${t}`,o=new hc,n=this._durationMap.get(r);n?this.isRecording(n[e])||n[e].push(o):this._durationMap.set(r,{userId:i,type:t,audio:e===m.AUDIO?[o]:[],video:e===m.AUDIO?[]:[o]})}stopDurationItem(i,e){if(this._durationMap.has(i)){let r=this._durationMap.get(i)[e].find(o=>o.endTime===0);r&&r.stop()}}hitTest(i){return this._room===i}getDuration(i,e){return this._durationMap.has(i)?this._durationMap.get(i)[e].reduce((r,o)=>r+o.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},Ep=Su;var Iu=class{constructor(i){d(this,"_room");d(this,"_renderFreezeMap",new Map);d(this,"_isVideoPlayingEventFiredMap",new Map);d(this,"_dataFreezeMap",new Map);d(this,"_monitorFreezeData",new Map);d(this,"_eventMap",new Map);this._room=i.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(I.LEAVE_SUCCESS,({room:i})=>{this.hitTest(i)&&this.stop()}).set(I.PLAY_TRACK_START,this.onPlayTrackStart).set(I.UNSUBSCRIBE_SUCCESS,({room:i,streamType:e,remotePublishedUser:t})=>{if(!this.hitTest(i))return;let{userId:r}=t,o=`${r}_${e}`;this.stopDataFreeze({key:o,userId:r,type:e})}).set(I.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let{userId:r}=t;if(e.hasVideo&&!t.hasVideo){let o="main",n=`${t.userId}_${o}`;this.stopDataFreeze({key:n,userId:r,type:o})}if(e.hasAuxiliary&&!t.hasAuxiliary){let o="auxiliary",n=`${t.userId}_${o}`;this.stopDataFreeze({key:n,userId:r,type:o})}}).set(I.PLAYER_STATE_CHANGED,({track:i,state:e,reason:t,type:r})=>{if(!(!i.isRemote||!i.room||!this.hitTest(i.room)||r!==m.VIDEO)){if(e==="PLAYING"){let o=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.set(o,!0)}t===m.MUTE?this.onVideoTrackMuted(i):t===m.UNMUTE&&this.onVideoTrackUnmuted(i)}}).set(I.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((i,e)=>E.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>E.off(e,i,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`,o=this._dataFreezeMap.get(r),n=new hc;o?o.durationItemList.push(n):this._dataFreezeMap.set(r,{userId:e,type:t,durationItemList:[n],isFreezing(){let a=this.durationItemList[this.durationItemList.length-1];return a&&a.endTime===0}})}onVideoTrackUnmuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`;this.stopDataFreeze({key:r,userId:e,type:t})}onHearBeatReport({room:i,report:e}){this.hitTest(i)&&e.msg_down_stream_info.forEach(t=>{let r=this._room.remotePublishedUserMap.get(t.msg_user_info.str_identifier);if(!r)return;let{userId:o,muteState:n}=r;t.msg_video_status.forEach(a=>{a.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&r.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:o,fps:a.uint32_video_dec_fps,type:"main"}),a.uint32_video_stream_type===7&&n.hasAuxiliary&&r.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:o,fps:a.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:i,userId:e,type:t}){let r=this._dataFreezeMap.get(i);if(!r||!r.isFreezing())return;let o=r.durationItemList[r.durationItemList.length-1];o.stop();let n=o.getDuration();n>In?this._monitorFreezeData.set(i,{userId:e,type:t,duration:n}):r.durationItemList.pop()}getTotalDuration(i){return i.reduce((e,t)=>{let r=t.getDuration();return e+Math.min(r,5e3)},0)}handleRenderFreeze(r){return p(this,arguments,function*({userId:i,fps:e,type:t}){let o=`${i}_${t}`,n=this._renderFreezeMap.get(o);if(e<=2){let a=w();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:a,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(o,{userId:i,type:t,isFreeze:!0,freezeTimeline:[{startTime:a,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let a=n.freezeTimeline.pop();if(a){a.endTime=w();let c=a.endTime-a.startTime;n.freezeTimeline.push(a),n.renderFreezeTotal+=Math.min(5e3,c)}}})}onPlayTrackStart({track:i}){if(!i.isRemote||!this.hitTest(i.room)||i.kind!==m.VIDEO||!i.isRemotePublished)return;let e=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(i){let e={dataFreeze:0,count:0},t=this._dataFreezeMap.get(i);if(t){if(t.isFreezing()){let r=t.durationItemList[t.durationItemList.length-1];r.stop(),r.getDuration()<In&&t.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(t.durationItemList),e.count=t.durationItemList.length}return e}getRenderFreezeDuration(i){let e=this._renderFreezeMap.get(i),t=0,r=0;if(e)if(!e.isFreeze)t=e.renderFreezeTotal;else{let o=w(),n=e.freezeTimeline[e.freezeTimeline.length-1],a=o-n.startTime;t=e.renderFreezeTotal+Math.min(a,5e3),r=e.freezeTimeline.length}return{renderFreeze:t,count:r}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(i){return this._isVideoPlayingEventFiredMap.has(i)?!this._isVideoPlayingEventFiredMap.get(i):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(i){return i===this._room}destroy(){this.uninstallEvents()}},Sp=Iu;var Ap=Be(Qe(),1);var WT=[1,0,0,0,1,1,0,1],mc=class extends tt{constructor(i,e){if(super(i,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"mirror",logger:e}),i instanceof De)try{this.setTexBuffer(WT)}catch(t){i.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${t.message||t}`}))}}draw2d(i,e,t,r,o){if(this.ctx2d){this.ctx2d.save(),this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0);let n=super.draw2d(i,e,t,r,o);return this.ctx2d.restore(),n}return!1}render(i){var e;return(e=this.input)!=null&&e.requestFrame(i)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}};var Au=class{constructor(i,e){this.node=i;this.layout=e;d(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}},on=class extends tt{constructor(e,t){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:t});d(this,"inputs",[])}addInput(e,t){if(this.inputs[t.zIndex])throw new Error("input already exists");let r=new Au(e,t);this.inputs[t.zIndex]=r}changeInputLayout(e,t){let r=this.inputs.findIndex(o=>o?o.node===e:!1);r<0||Object.entries(t).forEach(([o,n])=>{T(n)||(this.inputs[r].layout[o]=n)})}resize(e,t){let r=this.inputs.reduce((o,n)=>n?Object.assign(o,{width:Math.max(o.width,n.right),height:Math.max(o.height,n.bottom)}):o,{width:0,height:0});super.resize(r.width,r.height),this.context instanceof De&&this.inputs.forEach(o=>{if(o){let n=this.layout2texCoords(o);o.positionBuffer?this.changeBufferData(o.positionBuffer,n):o.positionBuffer=this.createBuffer(n)}})}connect(e,...t){return super.connect(e,...t),this.resize(0,0),e}removeInput(e){this.inputs[this.inputs.findIndex(t=>(t==null?void 0:t.node)===e)]=void 0}render(e){let t=this.context.ctx;if(t.clearColor(0,0,0,0),this.inputs.reduce((o,n)=>n!==void 0&&n.node.requestFrame(e)||o,!1)&&t){this.useProgram(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let o=0;o<this.inputs.length;o++){let n=this.inputs[o];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(this.inputs.reduce((r,o)=>(o==null?void 0:o.node.requestFrame(e))||r,!1)&&this.ctx2d){this.ctx2d.fillStyle="black",this.ctx2d.fillRect(0,0,this.width,this.height);for(let r=0;r<this.inputs.length;r++){let o=this.inputs[r];o&&this.draw2d(o.node.image,o.x,o.y,o.width,o.height)}return!0}return!1}getInfo(){let{totalFrames:e,x:t,y:r,width:o,height:n,name:a}=this,c=Date.now(),l=(e-this.lastInfo.totalFrames)/((c-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:o,height:n,timestamp:c,fps:l,name:a},v({parent:this.inputs.filter(u=>u).map(u=>u.node.getInfo())},this.lastInfo)}close(){super.close(),this.inputs.forEach(e=>{var t,r;if(e&&((t=e.node)==null||t.disconnect(),e.positionBuffer&&this.context instanceof De))try{(r=this.context.ctx)==null||r.deleteBuffer(e.positionBuffer)}catch(o){}})}};var pc=class{constructor(i,e,t,r=4/3){this.vbMode=i;this.faceDetector=e;this.logger=t;d(this,"animationState");d(this,"originalAspect");d(this,"totalOffsetX",0);d(this,"totalOffsetY",0);d(this,"defaultScaleRatio",.1);d(this,"isRecovering",!1);d(this,"boundaryY",280);d(this,"lastActionTime",0);d(this,"restTime",1e3);this.animationState={current:null,target:null,animating:!1,debounceTimer:null,startTime:0,duration:3e3,debounceTime:150,movementThreshold:30,debounceThreshold:15},this.addEvent(this.vbMode,!!this.faceDetector),this.originalAspect=r||4/3}addEvent(i,e,t){let o=[{key:570704,error:t!=null?t:e?void 0:11},{key:570705,error:t!=null?t:e?void 0:22}][i-1];o&&(e?b.addSuccessEvent({key:o.key}):b.addFailedEvent({key:o.key,error:o.error}))}actionCentering(i){let e=Date.now();if(this.animation(),!this.faceDetector||e-this.lastActionTime<this.restTime||this.animationState.animating)return;let{videoWidth:t,videoHeight:r}=i;this.animationState.debounceThreshold=t/30,this.animationState.movementThreshold=t/20;try{let o=this.faceDetector.detectForVideo(i,Date.now());if(o.detections.length<=0){this.recoverOriginal(t,r);return}let n=o.detections[0].boundingBox,a=n.originX,c=n.originY,l=n.width,u=n.height;this.vbMode===1?this.dualStageCropping(t,r,a,c,l,u):this.vbMode===2&&this.movingPortrait(t,r,a,c,l,u)}catch(o){this.logger.error(o)}this.lastActionTime=e}calculateBoundary(i,e,t,r){let o,n;return i>e/2?(o=e-t-r,n=t-o):(o=t,n=0),{min:o,offset:n}}calculateTargetPosition(i,e,t,r,o,n,a=.4){let c=i+t/2,l=e+r/2,u,h,{min:f,offset:_}=this.calculateBoundary(c,o,i,t),{min:D,offset:g}=this.calculateBoundary(l,n,e,r);return u=2*f+t,h=2*D+r,u/h>this.originalAspect?(u=h*this.originalAspect,_=c-u/2):(h=u/this.originalAspect,g=l-h/2),t/o>a&&(_=0,g=0,u=o,h=n),_=Math.max(0,Math.min(_,o-u)),g=Math.max(0,Math.min(g,n-h)),{sx:_,sy:g,cropWidth:u,cropHeight:h,timestamp:Date.now()}}processFacePositionCrop(i,e){if(!this.animationState.current||!this.animationState.target){this.animationState.current=v({},i),this.animationState.target=v({},i);return}let t=this.positionDistance(this.animationState.target,i),r=this.positionDistance(this.animationState.current,i),o=this.animationState.current.cropWidth/e;t>this.animationState.debounceThreshold*o&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&r>this.animationState.movementThreshold*o&&(this.animationState.target=i,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}processFacePositionPortrait(i){if(!this.animationState.current||!this.animationState.target){this.animationState.current=v({},i),this.animationState.target=v({},i);return}let e=this.positionDistance(this.animationState.current,i),t=this.positionDistance(this.animationState.target,i);e>this.animationState.debounceThreshold&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&t>this.animationState.movementThreshold&&(this.animationState.current=i,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}animation(){if(!this.animationState.animating)return;let i=Date.now()-this.animationState.startTime,e=Math.min(i/this.animationState.duration,1),t=r=>r<.5?2*r*r:-1+(4-2*r)*r;if(this.animationState.current&&this.animationState.target){let r=(this.animationState.target.sx-this.animationState.current.sx)*t(e);this.animationState.current.sx+=r,this.totalOffsetX+=r;let o=(this.animationState.target.sy-this.animationState.current.sy)*t(e);if(this.animationState.current.sy+=o,this.totalOffsetY+=o,this.animationState.current.cropWidth+=(this.animationState.target.cropWidth-this.animationState.current.cropWidth)*t(e),this.animationState.current.cropHeight+=(this.animationState.target.cropHeight-this.animationState.current.cropHeight)*t(e),this.animationState.current.scaleRatio&&this.animationState.target.scaleRatio&&(this.animationState.current.scaleRatio+=(this.animationState.target.scaleRatio-this.animationState.current.scaleRatio)*t(e)),j(this.animationState.current.scaleOffsetX)&&j(this.animationState.target.scaleOffsetX)&&j(this.animationState.current.scaleOffsetY)&&j(this.animationState.target.scaleOffsetY)){let n=(this.animationState.target.scaleOffsetX-this.animationState.current.scaleOffsetX)*t(e);this.animationState.current.scaleOffsetX+=n;let a=(this.animationState.target.scaleOffsetY-this.animationState.current.scaleOffsetY)*t(e);this.animationState.current.scaleOffsetY+=a}}e>=1&&(this.animationState.animating=!1,this.animationState.current=this.animationState.target,this.isRecovering=!1)}positionDistance(i,e){return Math.sqrt(Gi(i.sx-e.sx,2)+Gi(i.sy-e.sy,2))}recoverOriginal(i,e){this.animationState.target={sx:0,sy:0,cropWidth:i,cropHeight:e,timestamp:Date.now()},this.animationState.animating=!0,this.animationState.startTime=Date.now(),this.isRecovering=!0}dualStageCropping(i,e,t,r,o,n,a=.55){if(this.isRecovering)return;let c=this.calculateTargetPosition(t,r,o,n,i,e,a);this.processFacePositionCrop(c,i),o/c.cropWidth>a&&this.recoverOriginal(i,e)}movingPortrait(i,e,t,r,o,n){var c,l,u,h,f,_,D,g,A,M,ie,F;let a={sx:t+o/2+this.totalOffsetX,sy:r+n/2+this.totalOffsetY,cropWidth:i,cropHeight:e,scaleRatio:(l=(c=this.animationState.current)==null?void 0:c.scaleRatio)!=null?l:1,scaleOffsetX:(h=(u=this.animationState.current)==null?void 0:u.scaleOffsetX)!=null?h:0,scaleOffsetY:(_=(f=this.animationState.current)==null?void 0:f.scaleOffsetY)!=null?_:0,timestamp:Date.now()};this.animationState.target={sx:i/2,sy:r+n/2,cropWidth:i,cropHeight:e,scaleRatio:(g=(D=this.animationState.target)==null?void 0:D.scaleRatio)!=null?g:1,scaleOffsetX:(M=(A=this.animationState.target)==null?void 0:A.scaleOffsetX)!=null?M:0,scaleOffsetY:(F=(ie=this.animationState.target)==null?void 0:ie.scaleOffsetY)!=null?F:0,timestamp:Date.now()},this.animationState.animating||(this.animationState.target.scaleRatio=Math.sqrt(o*n/i/e/this.defaultScaleRatio),this.animationState.target.scaleOffsetX=-this.animationState.target.scaleRatio/2+.5,this.animationState.target.scaleOffsetY=-this.animationState.target.scaleRatio+1,(this.animationState.target.sy-this.animationState.target.scaleOffsetY*this.animationState.target.cropHeight)/this.animationState.target.scaleRatio<this.boundaryY&&(this.animationState.target.scaleOffsetY=(this.animationState.target.sy-this.boundaryY*this.animationState.target.scaleRatio)/this.animationState.target.cropHeight)),this.processFacePositionPortrait(a)}set aspectRatio(i){this.originalAspect=i}get current(){return this.animationState.current}get offset(){return{offsetX:this.totalOffsetX,offsetY:this.totalOffsetY}}get targetCrop(){return this.animationState.target}};var JT=`#version 300 es
82
70
  in vec2 a_position;
83
71
  in vec2 a_texCoord;
84
72
  out vec2 v_texCoord;
85
73
  void main() {
86
74
  gl_Position = vec4(a_position.x, a_position.y, 0, 1);
87
75
  v_texCoord = a_texCoord;
88
- }`,VS=`#version 300 es
76
+ }`,jT=`#version 300 es
89
77
  precision highp float;
90
78
  uniform sampler2D u_texture;
91
79
  uniform sampler2D mask;
@@ -94,7 +82,7 @@ in vec2 v_texCoord;
94
82
  out vec4 outColor;
95
83
  void main() {
96
84
  outColor = vec4(texture(u_texture, v_texCoord).rgb, texture(mask, v_texCoord).a);
97
- }`,Bc=class extends kr{constructor(e,t){super(e,t.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,width:t.width,height:t.height,logger:e.log});l(this,"_bgTexture");l(this,"_waterMarkTexture");l(this,"_lastMaskTexture");l(this,"_lastMaskFbo");l(this,"_textureValid",!1);l(this,"_selfieTextureValid",!1);l(this,"_selfieSegmentation");l(this,"wasm");l(this,"_prePrograme");l(this,"_segmentationMask");l(this,"_weixin",!1);t.selfieSegmentation&&(this._selfieSegmentation=t.selfieSegmentation,this._selfieSegmentation.onResults=this.onPredict.bind(this));try{this.init(t)}catch(r){e.log.error(r),e.destroy(new Q({code:H.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${r.message||r}`}))}}init(e){let t=e.Wasm,r=this.context.ctx;if(this.wasm=new t.AllIn1(r),this.wasm.blurRadius=e.blurRadius||3,this.wasm.mirror=!!e.mirror,this.wasm.vbMode=e.bg==="blur"?1:e.bg instanceof HTMLImageElement?2:e.bg==="green"?3:0,e.waterMark){let{x:o,y:n,width:a,height:d}=e.waterMark;this.wasm.setWaterMark(o,n,a,d)}if(e.beautyParams){let{beauty:o,brightness:n,ruddy:a}=e.beautyParams;this.wasm.setBeauty(o,n,a,e==null?void 0:e.width,e==null?void 0:e.height)}if(this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(r.uniform1i(r.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(r.uniform1i(r.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image)),r.uniform1i(r.getUniformLocation(this.program,"lastMask"),4),this._weixin){let o=this.context.createShader(r.FRAGMENT_SHADER,VS),n=this.context.createShader(r.VERTEX_SHADER,US);this._prePrograme=this.context.createProgram(n,o),r.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this._prePrograme,"mask"),1)}}onPredict(e){var r;let t=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture))),this.useProgram(),this._weixin?this.useTexture():this==null||this._selfieSegmentation.bindTexture(),t.activeTexture(t.TEXTURE1),(r=this._selfieSegmentation)==null||r.bindTexture2d(e),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),this.useBufferFrame(),t.drawArrays(t.TRIANGLE_STRIP,0,4),this._segmentationMask=e,this.totalFrames++}onFirstFrame(){this.waitingFirstFrame=!1;let e=this.context.ctx;this.useTexture(),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image)}render(e){var d,c,h,u;let t=this.context.ctx,{image:r}=this;this.tryVideoFrameCallback();let{videoWidth:o,videoHeight:n}=r;if(o===0||n===0||!this.available)return!1;r.width=o,r.height=n;let a=!1;if(this.totalFrames)this._weixin?this.useTexture():(d=this._selfieSegmentation)==null||d.bindTexture(),a=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;a=this._textureValid,this._textureValid=!0}return this.width!==o||this.height!==n||!a?(this.resize(o,n),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)):t.texSubImage2D(t.TEXTURE_2D,0,0,0,t.RGBA,t.UNSIGNED_BYTE,r),this._weixin&&(t.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask&&(t.activeTexture(t.TEXTURE1),(c=this._selfieSegmentation)==null||c.bindTexture2d(this._segmentationMask),t.bindFramebuffer(t.FRAMEBUFFER,this._lastMaskFbo||null)),t.drawArrays(t.TRIANGLE_STRIP,0,4),(h=this._selfieSegmentation)==null||h.bindTexture(),this._segmentationMask?t.copyTexSubImage2D(t.TEXTURE_2D,0,0,0,0,0,o,n):t.copyTexImage2D(t.TEXTURE_2D,0,t.RGBA,0,0,o,n,0)),this.wasm.vbMode&&((u=this._selfieSegmentation)==null||u.send(o,n)),this.totalFrames||(t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),t.drawArrays(t.TRIANGLE_STRIP,0,4)),!1}close(){var t;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),(t=this.wasm)==null||t.close()}};var $c=class extends Bt{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
85
+ }`,fc=class extends Vi{constructor(e,t){super(e,t.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,width:t.width,height:t.height,logger:e.log});d(this,"_bgTexture");d(this,"_waterMarkTexture");d(this,"_lastMaskTexture");d(this,"_lastMaskFbo");d(this,"_textureValid",!1);d(this,"_selfieTextureValid",!1);d(this,"_selfieSegmentation");d(this,"wasm");d(this,"_prePrograme");d(this,"_segmentationMask");d(this,"_weixin",!1);d(this,"_centerFace");d(this,"_textureMatrixLocation");d(this,"_offsetMatrixLocation");d(this,"_enableFaceCentering",!1);d(this,"_mat4");t.selfieSegmentation&&(this._selfieSegmentation=t.selfieSegmentation,this._selfieSegmentation.onResults=this.onPredict.bind(this));try{this.init(t)}catch(r){e.log.error(r),e.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${r.message||r}`}))}}init(e){var o;let t=e.Wasm,r=this.context.ctx;if(this._mat4=e.mat4,this.wasm=new t.AllIn1(r),this.wasm.blurRadius=e.blurRadius||3,this.wasm.mirror=!!e.mirror,this.wasm.vbMode=e.bg==="blur"?1:e.bg instanceof HTMLImageElement?2:e.bg==="green"?3:0,this._enableFaceCentering=(o=e.enableFaceCentering)!=null?o:!1,e.waterMark){let{x:n,y:a,width:c,height:l}=e.waterMark;this.wasm.setWaterMark(n,a,c,l)}if(e.beautyParams){let{beauty:n,brightness:a,ruddy:c}=e.beautyParams;this.wasm.setBeauty(n,a,c,e==null?void 0:e.width,e==null?void 0:e.height)}if(this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(r.uniform1i(r.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(r.uniform1i(r.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image)),this._textureMatrixLocation=r.getUniformLocation(this.program,"u_textureMatrix"),r.uniformMatrix4fv(this._textureMatrixLocation,!1,this._mat4.create()),this._offsetMatrixLocation=r.getUniformLocation(this.program,"u_offsetMatrix"),r.uniformMatrix4fv(this._offsetMatrixLocation,!1,this._mat4.create()),r.uniform1i(r.getUniformLocation(this.program,"lastMask"),4),this._weixin){let n=this.context.createShader(r.FRAGMENT_SHADER,jT),a=this.context.createShader(r.VERTEX_SHADER,JT);this._prePrograme=this.context.createProgram(a,n),r.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this._prePrograme,"mask"),1)}this._enableFaceCentering&&(this._centerFace=new pc(this.wasm.vbMode,e.faceDetector,this.context.log))}onPredict(e){var r;let t=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture))),this.useProgram(),this._weixin?this.useTexture():this==null||this._selfieSegmentation.bindTexture(),t.activeTexture(t.TEXTURE1),(r=this._selfieSegmentation)==null||r.bindTexture2d(e),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),this.useBufferFrame(),this._segmentationMask=e,this.totalFrames++,this.centerFace(),t.drawArrays(t.TRIANGLE_STRIP,0,4)}onFirstFrame(){this.waitingFirstFrame=!1;let e=this.context.ctx;this.useTexture(),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image)}render(e){var c,l,u,h;let t=this.context.ctx,{image:r}=this;this.tryVideoFrameCallback();let{videoWidth:o,videoHeight:n}=r;if(o===0||n===0||!this.available)return!1;r.width=o,r.height=n;let a=!1;if(this.totalFrames)this._weixin?this.useTexture():(c=this._selfieSegmentation)==null||c.bindTexture(),a=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;a=this._textureValid,this._textureValid=!0}return this.width!==o||this.height!==n||!a?(this.resize(o,n),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)):t.texSubImage2D(t.TEXTURE_2D,0,0,0,t.RGBA,t.UNSIGNED_BYTE,r),this._weixin&&(t.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask&&(t.activeTexture(t.TEXTURE1),(l=this._selfieSegmentation)==null||l.bindTexture2d(this._segmentationMask),t.bindFramebuffer(t.FRAMEBUFFER,this._lastMaskFbo||null)),t.drawArrays(t.TRIANGLE_STRIP,0,4),(u=this._selfieSegmentation)==null||u.bindTexture(),this._segmentationMask?t.copyTexSubImage2D(t.TEXTURE_2D,0,0,0,0,0,o,n):t.copyTexImage2D(t.TEXTURE_2D,0,t.RGBA,0,0,o,n,0)),this.wasm.vbMode&&((h=this._selfieSegmentation)==null||h.send(o,n)),this.totalFrames||(t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),t.drawArrays(t.TRIANGLE_STRIP,0,4)),!1}centerFace(){if(!this._centerFace||!this._enableFaceCentering)return;let e=this.context.ctx;this._centerFace.aspectRatio=e.canvas.width/e.canvas.height,this._centerFace.actionCentering(this.image);let{current:t,offset:r}=this._centerFace;if(t&&(this.wasm.vbMode===1&&this.drawImage(e.canvas.width,e.canvas.height,t.sx,t.sy,t.cropWidth,t.cropHeight),r&&this.wasm.vbMode===2)){let o=this._mat4.create(),{scaleRatio:n=1,scaleOffsetX:a=0,scaleOffsetY:c=0}=t;this._mat4.fromTranslation(o,[-r.offsetX/e.canvas.width+a,c,0]),this._mat4.scale(o,o,[n,n,1]),e.uniformMatrix4fv(this._offsetMatrixLocation,!1,o)}}drawImage(e,t,r,o,n,a){let c=this.context.ctx,l=this._mat4.create();this._mat4.fromTranslation(l,[r/e,1-(o+a)/t,0]),this._mat4.scale(l,l,[n/e,a/t,1]),c.uniformMatrix4fv(this._textureMatrixLocation,!1,l)}close(){var t;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),(t=this.wasm)==null||t.close()}};var _c=class extends tt{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
98
86
  precision highp float;
99
87
  uniform sampler2D ySampler;
100
88
  uniform sampler2D uSampler;
@@ -119,28 +107,13 @@ void main() {
119
107
  void main() {
120
108
  gl_Position = vertexPos;
121
109
  textureCoord = texturePos;
122
- }`});l(this,"yTextureRef");l(this,"uTextureRef");l(this,"vTextureRef");l(this,"Y");l(this,"U");l(this,"V");this.useProgram();let t=this.context.ctx;t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,t){let r=this.context.ctx,o=r.createTexture();return r.bindTexture(r.TEXTURE_2D,o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),r.uniform1i(r.getUniformLocation(this.program,e),t),o}render(e){let t=this.context.ctx,r=this.width,o=this.height;return this.useProgram(),t.viewport(0,0,r,o),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.yTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r,o,t.LUMINANCE,t.UNSIGNED_BYTE,this.Y),t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this.uTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,o/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.U),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this.vTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,o/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,t){super.resize(e,t);let r=this.context.ctx;r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e,t,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null)}};var rm=[s=>{s.codec="avc1.420028"},s=>{delete s.hardwareAcceleration}],__=(s,i)=>{switch(s){case"webCodecs":return i==="videoFrame"?514705:514706;case"wasm":return i==="webgl"?514707:i==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};function BS(s){return s[0]===0&&s[1]===0&&s[2]===0&&s[3]===1}var $S=0,Fc=class{constructor(i){l(this,"id",$S++);l(this,"trackDoneOB");l(this,"startOB");l(this,"stopOB");l(this,"decoder");l(this,"videoContext");l(this,"gop",0);l(this,"gop_helper",0);l(this,"waitFirstKeyFrame",!0);l(this,"startTimestamp",0);l(this,"startTime",0);l(this,"startPerformanceTime",0);l(this,"inputFrameCount",0);l(this,"decodedFrameCount",0);l(this,"decodeFrameCount",0);l(this,"downgradeLevel",0);l(this,"lastDowngradeTime",0);l(this,"lastFrameDiff",0);l(this,"lastDecodeFrameTimestamp",0);l(this,"config");l(this,"gop_before_configure",[]);l(this,"videoElement");l(this,"type","wasm");l(this,"goodType");l(this,"renderer","2d");l(this,"wasmOption");l(this,"createDecoder");l(this,"_decodeSink");l(this,"isReported",!1);l(this,"track");l(this,"stateChangeOB");l(this,"failedReason");let{track:e,createDecoder:t}=i;if(this.stateChangeOB=Vt(),this.track=e,this.createDecoder=t,this.wasmOption={yuvMode:i.renderer==="webgl",wasmPath:i.wasmPath,workerMode:i.workerMode,canvas:i.canvas},this.config=i.config,this.videoElement=i.videoElement,this.renderer=i.renderer,this.trackDoneOB=We(e.availableState,fe.OFF),this.stopOB=Vt(),i.type==="auto"){switch(i.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=i.type;this.changeRenderer(this.renderer),He(this.stateChangeOB,sh((r,o)=>(r!==o&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:r,state:o}),o),"INITIALIZED"),St(this.stopOB),it()),this.start()}start(i=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=He(this.pipe(this.track),St(this.stopOB),Nr());He(e,it(()=>{this.track.stat.framesDecoded++},t=>{if(this.track.log.error(`${this.id} play failed: ${t} retryCount: ${i}`),Y.addFailedEvent({key:__(this.type,this.renderer),error:t}),i>4)this.failedReason=t,this.stateChangeOB.next("FAILED");else{if(this.goodType){this.start(i);return}switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.start(i+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),Y.addSuccessEvent({key:__(this.type,this.renderer)}),Y.addSuccessEvent({key:514704})})),He(e,Dr(1),it(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.start()}close(i){this.stopOB.next(i)}changeRenderer(i){this.renderer=i,this.renderer==="videoFrame"&&!iu()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(i,e=!1){var a,d;if(this.failedReason)return;this.inputFrameCount++;let t=new Uint8Array(i.data);if(!BS(t)||t.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${t.subarray(0,5)}`),i;let r=t[4]&31,o=!1;switch(r){case 5:case 7:o=!0;break}if(((a=this.decoder)==null?void 0:a.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),o&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:i.data,timestamp:i.timestamp,type:i.type}),i;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(c=>this.decode(c,!0)),this.gop_before_configure=[]);let{timestamp:n}=i;if(o?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(o)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=le();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount} ${t.subarray(0,5).join(" ")}`);return}switch(this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}(this.decodeFrameCount<10||this.decodeFrameCount%500===0)&&this.track.log.debug(`decode ${this.decodeFrameCount} gop: ${this.gop} ${n} ${(d=i.getMetadata)==null?void 0:d.call(i).rtpTimestamp}`),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=n,this.decoder.decode({data:i.data,type:i.type,timestamp:this.lastDecodeFrameTimestamp});return}return i}checkDowngradeByFrameDiff(){let i=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==i&&this.track.log.debug(`downgrade level ${i} to ${this.downgradeLevel} ${this.decodeFrameCount} frameDiff: ${e}, lastFrameDiff: ${this.lastFrameDiff}`),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(i){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-i>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug(`downgrade level ${e} to ${this.downgradeLevel}`)}pipe(i){return e=>I(this,null,function*(){this._decodeSink=e;let t,r=i.mediaTrack;e.defer(()=>{var a;r&&(i.player.setCanvas(),i.setInputMediaStreamTrack(r)),t==null||t.close(),(a=this.videoContext)==null||a.destroy(),delete this._decodeSink});let{renderer:o,type:n}=this;i.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(n){case"wasm":t=this.createDecoder(n,this.wasmOption);break;case"webCodecs":for(let d=0;d<=rm.length;d++){let{supported:c}=yield VideoDecoder.isConfigSupported(this.config);if(c)break;if(d===rm.length){e.error(3);return}rm[d](this.config)}t=this.createDecoder(n);break;default:throw new Error("not supported yet")}let a=0;if(t.on("videoFrame",d=>{this.decodedFrameCount++,a++,(a<=10||a%500===0)&&i.log.debug(`frame ${a} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${d.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(d.timestamp)),e.next(d)}),t.on("error",d=>{i.log.error(d),e.error(n==="webCodecs"?4:8)}),yield t.initialize(this.videoElement),!this._decodeSink)return;if(t.configure(this.config),n==="wasm"&&o==="webgl"){this.videoContext=new mt({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create(),this.videoContext.on(mt.UNAVAILABLE,c=>{i.log.error(c),e.error(7)});let d=new $c(this.videoContext);t.on("videoCodecInfo",c=>d.resize(c.width,c.height)),t.on("videoFrame",c=>{({y:d.Y,u:d.U,v:d.V}=c),this.downgradeLevel===1?this.decodedFrameCount%2===0&&d.render(this.decodedFrameCount):d.render(this.decodedFrameCount)}),i.source=d,i.player.setCanvas(this.videoContext._canvas,2)}else if(o==="videoFrame"){i.player.setCanvas();let d=new MediaStreamTrackGenerator({kind:"video"}),c=d.writable.getWriter();i.setInputMediaStreamTrack(d),t.on("videoFrame",h=>c.write(h))}else{this.videoContext=new Dt({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create({alpha:!1});let d=this.videoContext.createVideoImageSource();t.on("videoFrame",h=>{try{d.image=h,d.update()}catch(u){delete this.goodType,i.log.error(u),e.error(11)}});let c=new ks(this.videoContext,{name:"remotePlayer",logger:i.log});d.connect(c),i.source=d,i.player.setCanvas(this.videoContext._canvas,2)}this.decoder=t}catch(a){i.log.error(a),e.error(n==="webCodecs"?2:6)}})}};var ga=class extends g_.EventEmitter{constructor(e){super();this.room=e;l(this,"videoContext");l(this,"_glVideoContext");l(this,"_2dVideoContext");l(this,"destination");l(this,"smallVideoContext");l(this,"smallDestination");l(this,"smallTrackSource");l(this,"smallImageSource");l(this,"_isMirror",!1);l(this,"cameraTrack");l(this,"cameraNode");l(this,"mirrorNode");l(this,"mixNode");l(this,"screenTrack");l(this,"screenNode");l(this,"selfModel",!1);l(this,"blurRadius",3);l(this,"arTrack");l(this,"Wasm");l(this,"waterMarkNode");l(this,"_waterMarkOption");l(this,"watermarkImageList",[]);l(this,"_beautyParams");l(this,"isUsingArTrack",!1);l(this,"_isMixScreen",!1);l(this,"_virtualBackground");l(this,"_virtualBackgroundAbortCallback");l(this,"virtualBackgroundInstance");l(this,"_bgAssetPath");l(this,"log",j.createLogger({id:"vm"}));l(this,"_checkId",0);l(this,"_use2d",!1);l(this,"_autoSwitchRenderMode",!0);l(this,"_selfieSegmentation");l(this,"encodePipeline",[]);l(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new Dt({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let t=e==="2d";this._use2d!==t&&(this._use2d=t,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new Dt({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new mt({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on(mt.UNAVAILABLE,e=>{var t;this.emit("error",e),this.log.warn("video context unavailable",e),(t=this._virtualBackgroundAbortCallback)==null||t.call(this,e),this.update().catch(r=>{this.log.error(r)})})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=Le.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,t;(e=this._2dVideoContext)==null||e.destroy(),(t=this._glVideoContext)==null||t.destroy(),this.smallVideoContext.destroy(),Le.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(jr||this._isMixScreen||this._isMirror||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",t){let r=e==="videoCtxGl"?512700:512701;t?Y.addFailedEvent({key:r,error:t}):Y.addSuccessEvent({key:r})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let t=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(t)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new mt({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}initVirtualBackground(e){return this._selfieSegmentation=e,this._selfieSegmentation.changeModel()}setSmallVideo(e,t){if(e){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new ic(this.smallVideoContext,e,this.log),this.smallVideoContext.on(mt.UNAVAILABLE,r=>{this.log.warn("small video context lost",r)})}if(this.smallVideoContext.frameRate=e.frameRate,this.smallDestination.resolution=e,t)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=t:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(t),this.smallImageSource.resize(t.width,t.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:r,height:o}=this.cameraTrack.settings;this.smallTrackSource.resize(r,o),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(e){var t;try{let r=this.cameraTrack,{small:o,player:n}=r;this.setSmallVideo(o,e),jr&&n.setCanvas(e);let a=e&&((t=this.destination)==null?void 0:t.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),a=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${a?a.label:"no output track"}`),r.setOutputMediaStreamTrack(a)}catch(r){this.log.error("set main output failed",r)}}update(e=!1){return I(this,null,function*(){var o,n,a;if(!this.cameraTrack||!this.initialTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:t,profile:r}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams?(this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),Xt===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof kr?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof kr?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(t.width,t.height)):e&&this.cameraNode&&this.destination?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new tc(this.videoContext,{name:"mainDestination",logger:this.log}),this.cameraNode=new Bc(this.videoContext,{input:this.initialTrack,width:t.width,height:t.height,mirror:this._isMirror,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,selfieSegmentation:this._selfieSegmentation,Wasm:this.Wasm}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute()),this.videoContext.frameRate=r.frameRate,this._use2d){let d=this.cameraNode;d.disconnect(),this._isMirror&&(this.mirrorNode||(this.mirrorNode=new Uc(this.videoContext,this.log)),d=d.connect(this.mirrorNode),d.disconnect(),this.log.info("start mirror")),this.mixNode&&this.mixNode.close(),delete this.mixNode,(this._isMixScreen||this._hasWaterMark)&&(this.mixNode=new Vc(this.videoContext,this.log),d.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption?(this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y):(o=this.waterMarkNode)==null||o.resize(t.width,t.height),(n=this.waterMarkNode)==null||n.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&!this.screenNode&&(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource")),(a=this.screenNode)==null||a.connect(this.mixNode,{zIndex:0}),d=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)),d.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}changeInput(e){var t,r,o,n;if(e instanceof jt)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof Nt)return this.log.info("change video input",(r=e.mediaTrack)==null?void 0:r.label),this.setCameraTrack(e);if(e instanceof er){this.log.info("change remote input",(o=e.mediaTrack)==null?void 0:o.label);let a=e.mediaTrack;return e.setOutputMediaStreamTrack(a)}this.log.warn("change unknown input",(n=e.mediaTrack)==null?void 0:n.label)}removeInput(e){var t;e instanceof jt?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Nt?(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof er&&e.source&&e.source.context.destroy()}setCameraTrack(e){return I(this,null,function*(){this.cameraTrack=e,this.update(!0)})}setScreenTrack(e){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)}getWatermarkImage(e,t){return I(this,null,function*(){let r=document.createElement("canvas");t&&e&&(r.height=t,r.width=e);let o=r.getContext("2d");if(!o)throw new Q({code:H.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,a)=>n.zIndex-a.zIndex),this.watermarkImageList.forEach(({image:n,x:a,y:d,width:c,height:h})=>{o.drawImage(n,a,d,c,h)}),Ys(r.toDataURL())})}pushWaterMarkImageList(e){let{type:t}=e;this.watermarkImageList.some(o=>o.imageUrl===e.imageUrl&&o.height===e.height&&o.width===e.width&&o.x===e.x&&o.y===e.y&&o.type===e.type&&o.zIndex===e.zIndex)||((t==="mute"||t==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(o=>o.type!==t)),this.watermarkImageList.push(e))}setBeautyParams(e){return I(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return I(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return I(this,null,function*(){var u,m;let t;try{t=yield Ys((e==null?void 0:e.imageElement)||e.imageUrl)}catch(p){throw new Q({code:H.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:r=0,y:o=0,width:n=t.width,height:a=t.height,type:d="watermark",zIndex:c=2}=e;this.watermarkImageList.some(p=>p.type===d)?(this.watermarkImageList=this.watermarkImageList.filter(p=>p.type!==d),this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:c,type:d,imageUrl:e.imageUrl}),t=yield this.getWatermarkImage((u=this.cameraTrack)==null?void 0:u.settings.width,(m=this.cameraTrack)==null?void 0:m.settings.height),this._waterMarkOption={x:0,y:0,width:t.width,height:t.height,image:t},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(t.width,t.height),this.waterMarkNode.image=t):this.update()):(this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:c,type:d,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(p,g)=>p==="imageUrl"?void 0:g))})}deleteWatermark(e="watermark"){return I(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(t=>t.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(t,r)=>t==="imageUrl"?void 0:r)),yield this.freshWatermark()})}freshWatermark(){return I(this,null,function*(){var t,r,o;(t=this.waterMarkNode)==null||t.close(),delete this.waterMarkNode,delete this._waterMarkOption;let e=yield this.getWatermarkImage((r=this.cameraTrack)==null?void 0:r.settings.width,(o=this.cameraTrack)==null?void 0:o.settings.height);this._waterMarkOption={x:0,y:0,width:e.width,height:e.height,image:e},this.update()})}setVirtualBackground(e){return I(this,null,function*(){if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield Ys(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type)}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new Q({code:H.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var t;this._isMixScreen=e,this._isMixScreen||((t=this.screenNode)==null||t.close(),delete this.screenNode),this.update()}set mirror(e){var t;this._isMirror!==e&&(this._isMirror=e,this._isMirror||((t=this.mirrorNode)==null||t.close(),delete this.mirrorNode),this.update())}get mirror(){return this._isMirror}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return I(this,null,function*(){var e;(e=this.cameraTrack)!=null&&e.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}createDecodeContext(e){return new Fc(e)}clear(){var e;(e=this.videoContext)==null||e.disconnect(),delete this.destination,delete this.cameraNode,delete this.mirrorNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};q([Ld(function(e){this.log.error("update failed",e)})],ga.prototype,"update",1);var FS=0;var Hc=class extends fe{constructor(e){super("room");l(this,"seq",++FS);l(this,"sdkAppId");l(this,"userId");l(this,"userSig");l(this,"privateMapKey");l(this,"latencyLevel");l(this,"tinyId");l(this,"scene");l(this,"roomId");l(this,"useStringRoomId");l(this,"role","anchor");l(this,"joinParams",null);l(this,"localTracks",new Set);l(this,"enableAutoPlayDialog",!0);l(this,"autoReceiveAudio",!0);l(this,"autoReceiveVideo",!0);l(this,"proxy_ws");l(this,"proxy_wt");l(this,"proxy_unified");l(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0}});l(this,"keyPointManager");l(this,"audioManager");l(this,"videoManager");l(this,"callDurationCalculator");l(this,"badCaseDetector");l(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});l(this,"videoDecodeFallbackType");l(this,"_isUsingCachedSchedule",!1);l(this,"_log",j.createLogger({id:`r${this.seq}`}));l(this,"_joinedTimestamp",0);l(this,"_sdkType");l(this,"heartbeatReport");l(this,"quality");l(this,"enableSEI");l(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,Qe(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),Qe(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),Qe(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new m_({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new p_({room:this}),this.badCaseDetector=new f_({room:this}),this.audioManager=new $d(this),this.videoManager=new ga(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return I(this,null,function*(){return this.publish(e)})}removeTrack(e){return I(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return I(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(Oe(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Ht(e)){let{websocketProxy:t,webtransportProxy:r,loggerProxy:o,scheduleProxy:n,unifiedProxy:a}=e;this.proxy_ws=t,this.proxy_wt=r,this.proxy_unified=a,a?(ac([a,a]),ns(`https://${a}`)):(o&&ns(o),n&&ac(n))}x.once(V.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:tr.main,sched_back_domain:tr.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return I(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(t=>{e[t.userId]=t.remoteAudioTrack.stat}),e})}getTransportStats(){return I(this,null,function*(){var t;let e={rtt:((t=this.quality)==null?void 0:t.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let r of this.quality.downlinkInfo)e.downlinksRTT[r.userId]=r.rtt;return e})}getRemoteVideoStats(){return I(this,arguments,function*(e="main"){let t={};return this.remotePublishedUserMap.forEach(r=>{let o=e==="auxiliary"?r.remoteAuxiliaryTrack:r.remoteVideoTrack;t[r.userId]=o.stat}),t})}checkDestroy(){if(this.isDestroyed)throw new Q({code:H.INVALID_OPERATION,message:pe({key:he.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(Tt.INVALID_DESTROY),new Q({code:H.INVALID_OPERATION,message:pe({key:he.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,x.emit(V.ROOM_DESTROY,{room:this})}schedule(e,t){return I(this,null,function*(){var o,n,a;let r=le();try{let{isCached:d,result:c,detailCost:h}=yield _h({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:Rt,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:t,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=d,this._log.info(`schedule cache:${+d} ${oi(c,{keysToExclude:["username","credential"]})}`),d&&x.once(V.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=K(K({},this.scheduleResult),c),De((o=c.config)==null?void 0:o.retryCount)&&nl(c.config.retryCount),Oe((n=c.config)==null?void 0:n.loggerDomain)&&ns(c.config.loggerDomain),this.videoDecodeFallbackType=((a=c.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,x.emit(V.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:h}),Y.addSuccessEvent({key:521700,cost:le()-r,split:50})}catch(d){throw Y.addFailedEvent({key:521700,error:d}),d}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}};var D_=gt(Mt());var sm=gt(qh());var E_=s=>{let i=et(s),e={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return i.media.forEach((t,r)=>{var o;if(t.ssrcs&&!L(t.ssrcs[0].id)){let n=Number(t.ssrcs[0].id),a=Number((o=t.ssrcs.filter(d=>d.attribute==="cname")[1])==null?void 0:o.id);switch(r){case 0:e.audioSsrc=n;break;case 1:e.bigVideoSsrc=n,e.bigVideoRtxSsrc=a;break;case 2:e.smallVideoSsrc=n,e.smallVideoRtxSsrc=a;break;case 3:e.auxVideoSsrc=n,e.auxVideoRtxSsrc=a;break}}}),e};function T_(s){var e;let i=[];for(let t=0;t<s.rtp.length;t++){if(["rtx","red","ulpfec"].includes(s.rtp[t].codec))continue;let r=s.fmtp.filter(o=>o.payload===s.rtp[t].payload)[0];i.push({payload:s.rtp[t].payload,codec:s.rtp[t].codec,fmtp:r?r.config:"",rate:s.rtp[t].rate,rtx:((e=s.rtp[t+1])==null?void 0:e.codec)==="rtx"?s.rtp[t+1].payload:0,rtcpfb:((s==null?void 0:s.rtcpFb)||[]).filter(o=>o.payload===s.rtp[t].payload).map(({type:o,subtype:n})=>({id:o,params:n?[n]:[]}))})}return i}function HS(){return I(this,null,function*(){let s=new RTCPeerConnection;s.addTransceiver(S.VIDEO,{direction:S.TRANSCEIVER_DIRECTION_RECVONLY});let i=yield s.createOffer();if(!i.sdp)return[];let e=et(i.sdp),t=T_(e.media[0]);return s.close(),t})}var S_=(s,i)=>I(void 0,null,function*(){var d;let e=et(s),t={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:!1};t.ice.ufrag=String(e.media[0].iceUfrag),t.ice.password=e.media[0].icePwd||"",e.fingerprint&&(t.dtls.hash=e.fingerprint.type,t.dtls.fingerprint=e.fingerprint.hash,t.dtls.setup=e.setup||""),e.media[0].fingerprint&&(t.dtls.hash=e.media[0].fingerprint.type,t.dtls.fingerprint=e.media[0].fingerprint.hash),t.dtls.setup=e.media[0].setup||"";let r=e.media[0],o=e.media[1];r.ext&&(t.audio.extensions=r.ext.map(c=>({id:c.value,uri:c.uri}))),o.ext&&(t.video.extensions=o.ext.map(c=>({id:c.value,uri:c.uri})));let n={codec:r.rtp[0].codec,fmtp:r.fmtp[0].config,payload:r.fmtp[0].payload,rate:r.rtp[0].rate,channels:r.rtp[0].encoding,rtcpfb:[],rtx:0};(d=r.rtcpFb)==null||d.forEach(({payload:c,type:h,subtype:u})=>{if(c===n.payload){let m={id:h,params:[]};u&&m.params.push(u),n.rtcpfb.push(m)}}),t.audio.codecs.push(n);let a=["h264","vp8"];return i&&a.shift(),t.video.codecs=[...T_(o)].filter(c=>a.includes(c.codec.toLocaleLowerCase())),t.video.decoders=(yield HS()).filter(c=>["h264","vp8"].includes(c.codec.toLocaleLowerCase())),t}),I_=({serverAbility:s,clientAbility:i,offerSDP:e,enableCustomMessage:t})=>{let r=et(e),o={extmapAllowMixed:"extmap-allow-mixed",groups:r.groups,icelite:"ice-lite",media:[],msidSemantic:{semantic:"",token:"WMS"},name:"-",origin:{address:"127.0.0.1",username:"-",sessionId:String(Date.now()),sessionVersion:1,netType:"IN",ipVer:4},timing:{start:0,stop:0},version:0},n={candidates:s.candidates.map(a=>({component:1,foundation:"1",generation:0,ip:a.ip,port:a.port,priority:a.priority,transport:a.foundation,type:a.type})),connection:{version:4,ip:"0.0.0.0"},direction:S.TRANSCEIVER_DIRECTION_RECVONLY,ext:s.audio.extensions.map(a=>({value:a.id,uri:a.uri})),fingerprint:{type:s.dtls.hash,hash:s.dtls.fingerprint},fmtp:[{payload:s.audio.codecs[0].payload,config:s.audio.codecs[0].fmtp}],icePwd:s.ice.password,iceUfrag:s.ice.ufrag,mid:"0",payloads:String(s.audio.codecs[0].payload),port:r.media[0].port,protocol:r.media[0].protocol,type:S.AUDIO,setup:s.dtls.setup,rtcpFb:s.audio.codecs[0].rtcpfb.map(a=>({payload:s.audio.codecs[0].payload,type:a.id,subtype:a.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:s.audio.codecs[0].payload,codec:s.audio.codecs[0].codec,rate:s.audio.codecs[0].rate,encoding:s.audio.codecs[0].channels}]};return o.media.push(n),[1,2,3].forEach(a=>{o.media.push(om({mid:a,serverAbility:s,clientAbility:i,parsedOffer:r}))}),t&&o.media.push(r.media.find(a=>a.mid==="dc")),ui(o)},om=({mid:s,serverAbility:i,clientAbility:e,parsedOffer:t,isDownlink:r=!1})=>{let o={candidates:i.candidates.map(n=>({component:1,foundation:"1",generation:0,ip:n.ip,port:n.port,priority:n.priority,transport:n.foundation,type:n.type})),connection:{version:4,ip:"0.0.0.0"},direction:S.TRANSCEIVER_DIRECTION_RECVONLY,ext:i.video.extensions.map(n=>({value:n.id,uri:n.uri})),fingerprint:{type:i.dtls.hash,hash:i.dtls.fingerprint},fmtp:[],icePwd:i.ice.password,iceUfrag:i.ice.ufrag,mid:String(s),payloads:"",port:t.media[0].port,protocol:t.media[0].protocol,type:S.VIDEO,setup:i.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(r){let n=i.video.decoders;(!n||n.length===0)&&(n=i.video.codecs),(!n||n.length===0)&&(n=e.video.decoders),n.forEach(a=>{Bs(o,a)})}else{let n=i.video.codecs.findIndex(d=>d.codec.toLowerCase()===(i.useVp8?"vp8":"h264")),a=i.video.codecs[n]||e.video.codecs[0];Bs(o,a)}return o},Bs=(s,i)=>{s.payloads=`${s.payloads} ${i.payload}`.trim(),s.fmtp.push({payload:i.payload,config:i.fmtp}),s.rtcpFb=[...s.rtcpFb||[],...i.rtcpfb.map(e=>({payload:i.payload,type:e.id,subtype:e.params[0]}))],s.rtp.push({payload:i.payload,codec:i.codec.toUpperCase(),rate:i.rate}),i.rtx&&(s.payloads=`${s.payloads} ${i.rtx}`,s.fmtp.push({payload:i.rtx,config:`apt=${i.payload}`}),s.rtp.push({payload:i.rtx,codec:"rtx",rate:i.rate}))};function GS(s){let i=new Set(["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"]);s.ext&&(s.ext=s.ext.filter(e=>!i.has(e.uri)))}function WS(s){if(!s.rtcpFb)return;let i=[];s.rtcpFb.forEach((e,t)=>{var r;i.push(e),s.rtcpFb&&((r=s.rtcpFb[t+1])==null?void 0:r.payload)!==e.payload&&e.type!=="rrtr"&&i.push({payload:e.payload,type:"rrtr"})}),s.rtcpFb=i}function zS(s){s.type===S.VIDEO&&s.fmtp&&s.fmtp.forEach(i=>{i.config.includes("apt")||(i.config+=";sps-pps-idr-in-keyframe=1")})}function jS(s){s.type===S.AUDIO&&s.fmtp&&s.fmtp.forEach(i=>{i.config+=";sprop-stereo=1;stereo=1"})}var A_=(s,i,e)=>{let t=sm.default.parse(s);return t.media.forEach((r,o)=>{var n;if((r.type===S.AUDIO||r.type===S.VIDEO)&&(WS(r),zS(r),jS(r),GS(r),r.type===S.VIDEO)){if(o<4)r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],i.video.codecs.forEach(a=>Bs(r,a));else if(e){r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[];let a=e.video.decoders;(!a||a.length===0)&&(a=e.video.codecs),(!a||a.length===0)&&(a=i.video.decoders),a.forEach(d=>Bs(r,d))}}(n=r.payloads)!=null&&n.includes("datachannel")&&t.groups&&r.mid&&(t.groups[0].mids=t.groups[0].mids.replace(r.mid,"dc"),r.mid="dc")}),sm.default.write(t)};var C_=gt(Mt());var Gc=class extends C_.EventEmitter{constructor(e){super();this.room=e;l(this,"mainFpsHealth",1);l(this,"mainBitrateHealth",1);l(this,"badMainBitrateHealthCount",0);l(this,"lastEmitBadHealthTime",0);l(this,"log");!ze&&xt&&x.on("262",this.onVideoCodecChanged,this),this.log=e.getLogger().createChild({id:"h-d"})}onVideoCodecChanged({remoteUserId:e,streamType:t,isHWCodec:r,codec:o}){if(!(e||t===7||o!=="h264")){if(!r){this.room.off("heartbeat-report",this.onHeartbeatReport,this);return}this.room.listeners("heartbeat-report").includes(this.onHeartbeatReport)||this.room.on("heartbeat-report",this.onHeartbeatReport,this)}}onHeartbeatReport(e){Date.now()-this.lastEmitBadHealthTime<30*1e3||(e.msg_up_stream_info.msg_video_status.forEach(t=>{if(t.uint32_video_enc_fps&&t.uint32_video_capture_fps){let r=t.uint32_video_enc_fps/t.uint32_video_capture_fps;t.uint32_video_stream_type===2&&(this.mainFpsHealth=r)}if(t.uint32_video_codec_bitrate&&t.uint32_video_stream_type===2){let{localMainVideoTrack:r}=this.room;r&&(this.mainBitrateHealth=t.uint32_video_codec_bitrate/1e3/r.profile.bitrate)}}),this.log.debug(`mainBitrateHealth: ${this.mainBitrateHealth} mainFpsHealth: ${this.mainFpsHealth}`),this.mainBitrateHealth>.5&&(this.badMainBitrateHealthCount=0),this.mainFpsHealth>.9&&this.mainBitrateHealth<.5&&(this.badMainBitrateHealthCount++,this.badMainBitrateHealthCount>3&&(this.badMainBitrateHealthCount=0,this.lastEmitBadHealthTime=Date.now(),this.log.warn(`bad main bitrate health: ${this.mainBitrateHealth}`),this.emit("1",{isAux:!1}))))}destroy(){x.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};l(Gc,"EVENT_BAD_HEALTH","bad_health");var R_=Gc;function y_({seiMessageList:s,isAudio:i,isMain:e}){return new TransformStream({transform(t,r){let o=t;i?audioEncodePipeline.forEach(n=>{o=n({frame:o})}):videoEncodePipeline.forEach(n=>{o=n({frame:o,seiMessageList:s,onDump:()=>{self.postMessage({type:"dump",isAudio:i,data:o.data,userId:"",streamType:e?"main":"auxiliary"})}})}),r.enqueue(o)}})}function b_(s,i,e){return new TransformStream({transform(t,r){let o=t;videoDecodePipeline.forEach(n=>{o=n({frame:o,onSEI:a=>{a.forEach(d=>{self.postMessage({type:"sei",seiPayloadType:d.seiPayloadType,data:d.seiPayload.buffer,userId:s,streamType:i})})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:o.data,userId:s,streamType:i})}})}),r.enqueue(o)}})}function v_(s){let i=[vr],e=[vh,yh,bh,Rh,y_,b_],t=()=>{let c=[],h=[],u=[];self.onmessage=m=>{m.data.type==="sei"&&(m.data.isMain?(c.push(m.data.data),m.data.small&&u.push(m.data.data)):h.push(m.data.data))},self.onrtctransform=m=>{let{options:p}=m.transformer,g=p.isReceiver?b_(p.userId,p.streamType,p.isAudio):y_({isAudio:p.isAudio,seiMessageList:p.isMain?p.small?u:c:h,isMain:p.isMain});m.transformer.readable.pipeThrough(g).pipeTo(m.transformer.writable)}},r=`const videoEncodePipeline=[${s.videoEncodePipeline.toString()}];
110
+ }`});d(this,"yTextureRef");d(this,"uTextureRef");d(this,"vTextureRef");d(this,"Y");d(this,"U");d(this,"V");this.useProgram();let t=this.context.ctx;t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,t){let r=this.context.ctx,o=r.createTexture();return r.bindTexture(r.TEXTURE_2D,o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),r.uniform1i(r.getUniformLocation(this.program,e),t),o}render(e){let t=this.context.ctx,r=this.width,o=this.height;return this.useProgram(),t.viewport(0,0,r,o),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.yTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r,o,t.LUMINANCE,t.UNSIGNED_BYTE,this.Y),t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this.uTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,o/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.U),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this.vTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,o/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,t){super.resize(e,t);let r=this.context.ctx;r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e,t,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null)}};var Cu=[s=>{s.codec="avc1.420028"},s=>{delete s.hardwareAcceleration}],Ip=(s,i)=>{switch(s){case"webCodecs":return i==="videoFrame"?514705:514706;case"wasm":return i==="webgl"?514707:i==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};function qT(s){return s[0]===0&&s[1]===0&&s[2]===0&&s[3]===1}var XT=0,gc=class{constructor(i){d(this,"id",XT++);d(this,"trackDoneOB");d(this,"startOB");d(this,"stopOB");d(this,"decoder");d(this,"videoContext");d(this,"gop",0);d(this,"gop_helper",0);d(this,"waitFirstKeyFrame",!0);d(this,"startTimestamp",0);d(this,"startTime",0);d(this,"startPerformanceTime",0);d(this,"inputFrameCount",0);d(this,"decodedFrameCount",0);d(this,"decodeFrameCount",0);d(this,"downgradeLevel",0);d(this,"lastDowngradeTime",0);d(this,"lastFrameDiff",0);d(this,"lastDecodeFrameTimestamp",0);d(this,"config");d(this,"gop_before_configure",[]);d(this,"videoElement");d(this,"type","wasm");d(this,"goodType");d(this,"renderer","2d");d(this,"wasmOption");d(this,"createDecoder");d(this,"_decodeSink");d(this,"isReported",!1);d(this,"track");d(this,"stateChangeOB");d(this,"failedReason");let{track:e,createDecoder:t}=i;if(this.stateChangeOB=et(),this.track=e,this.createDecoder=t,this.wasmOption={yuvMode:i.renderer==="webgl",wasmPath:i.wasmPath,workerMode:i.workerMode,canvas:i.canvas},this.config=i.config,this.videoElement=i.videoElement,this.renderer=i.renderer,this.trackDoneOB=ue(e.availableState,H.OFF),this.stopOB=et(),i.type==="auto"){switch(i.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=i.type;this.changeRenderer(this.renderer),de(this.stateChangeOB,Ll((r,o)=>(r!==o&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:r,state:o}),o),"INITIALIZED"),we(this.stopOB),Re()),this.start()}start(i=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=de(this.pipe(this.track),we(this.stopOB),wi());de(e,Re(()=>{this.track.stat.framesDecoded++},t=>{if(this.track.log.error(`${this.id} play failed: ${t} retryCount: ${i}`),b.addFailedEvent({key:Ip(this.type,this.renderer),error:t}),i>4)this.failedReason=t,this.stateChangeOB.next("FAILED");else{if(this.goodType){this.start(i);return}switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.start(i+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),b.addSuccessEvent({key:Ip(this.type,this.renderer)}),b.addSuccessEvent({key:514704})})),de(e,Ui(1),Re(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.start()}close(i){this.stopOB.next(i)}changeRenderer(i){this.renderer=i,this.renderer==="videoFrame"&&!Od()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(i,e=!1){var a,c;if(this.failedReason)return;this.inputFrameCount++;let t=new Uint8Array(i.data);if(!qT(t)||t.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${t.subarray(0,5)}`),i;let r=t[4]&31,o=!1;switch(r){case 5:case 7:o=!0;break}if(((a=this.decoder)==null?void 0:a.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),o&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:i.data,timestamp:i.timestamp,type:i.type}),i;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(l=>this.decode(l,!0)),this.gop_before_configure=[]);let{timestamp:n}=i;if(o?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(o)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=w();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount} ${t.subarray(0,5).join(" ")}`);return}switch(this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}(this.decodeFrameCount<10||this.decodeFrameCount%500===0)&&this.track.log.debug(`decode ${this.decodeFrameCount} gop: ${this.gop} ${n} ${(c=i.getMetadata)==null?void 0:c.call(i).rtpTimestamp}`),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=n,this.decoder.decode({data:i.data,type:i.type,timestamp:this.lastDecodeFrameTimestamp});return}return i}checkDowngradeByFrameDiff(){let i=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==i&&this.track.log.debug(`downgrade level ${i} to ${this.downgradeLevel} ${this.decodeFrameCount} frameDiff: ${e}, lastFrameDiff: ${this.lastFrameDiff}`),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(i){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-i>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug(`downgrade level ${e} to ${this.downgradeLevel}`)}pipe(i){return e=>p(this,null,function*(){this._decodeSink=e;let t,r=i.mediaTrack;e.defer(()=>{var a;r&&(i.player.setCanvas(),i.setInputMediaStreamTrack(r)),t==null||t.close(),(a=this.videoContext)==null||a.destroy(),delete this._decodeSink});let{renderer:o,type:n}=this;i.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(n){case"wasm":t=this.createDecoder(n,this.wasmOption);break;case"webCodecs":for(let c=0;c<=Cu.length;c++){let{supported:l}=yield VideoDecoder.isConfigSupported(this.config);if(l)break;if(c===Cu.length){e.error(3);return}Cu[c](this.config)}t=this.createDecoder(n);break;default:throw new Error("not supported yet")}let a=0;if(t.on("videoFrame",c=>{this.decodedFrameCount++,a++,(a<=10||a%500===0)&&i.log.debug(`frame ${a} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${c.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(c.timestamp)),e.next(c)}),t.on("error",c=>{i.log.error(c),e.error(n==="webCodecs"?4:8)}),yield t.initialize(this.videoElement),!this._decodeSink)return;if(t.configure(this.config),n==="wasm"&&o==="webgl"){this.videoContext=new De({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create(),this.videoContext.on(De.UNAVAILABLE,l=>{i.log.error(l),e.error(7)});let c=new _c(this.videoContext);t.on("videoCodecInfo",l=>c.resize(l.width,l.height)),t.on("videoFrame",l=>{({y:c.Y,u:c.U,v:c.V}=l),this.downgradeLevel===1?this.decodedFrameCount%2===0&&c.render(this.decodedFrameCount):c.render(this.decodedFrameCount)}),i.source=c,i.player.setCanvas(this.videoContext._canvas,2)}else if(o==="videoFrame"){i.player.setCanvas();let c=new MediaStreamTrackGenerator({kind:"video"}),l=c.writable.getWriter();i.setInputMediaStreamTrack(c),t.on("videoFrame",u=>l.write(u))}else{this.videoContext=new je({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create({alpha:!1});let c=this.videoContext.createVideoImageSource();t.on("videoFrame",u=>{try{c.image=u,c.update()}catch(h){delete this.goodType,i.log.error(h),e.error(11)}});let l=new wr(this.videoContext,{name:"remotePlayer",logger:i.log});c.connect(l),i.source=c,i.player.setCanvas(this.videoContext._canvas,2)}this.decoder=t}catch(a){i.log.error(a),e.error(n==="webCodecs"?2:6)}})}};var nn=class extends Ap.EventEmitter{constructor(e){super();this.room=e;d(this,"videoContext");d(this,"_glVideoContext");d(this,"_2dVideoContext");d(this,"destination");d(this,"smallVideoContext");d(this,"smallDestination");d(this,"smallTrackSource");d(this,"smallImageSource");d(this,"_isMirror",!1);d(this,"cameraTrack");d(this,"cameraNode");d(this,"mirrorNode");d(this,"mixNode");d(this,"screenTrack");d(this,"screenNode");d(this,"selfModel",!1);d(this,"blurRadius",3);d(this,"arTrack");d(this,"_enableFaceCentering",!1);d(this,"Wasm");d(this,"waterMarkNode");d(this,"_waterMarkOption");d(this,"watermarkImageList",[]);d(this,"_beautyParams");d(this,"isUsingArTrack",!1);d(this,"_isMixScreen",!1);d(this,"_mixScreenOption",{});d(this,"_virtualBackground");d(this,"_virtualBackgroundAbortCallback");d(this,"virtualBackgroundInstance");d(this,"_bgAssetPath");d(this,"log",R.createLogger({id:"vm"}));d(this,"_faceDetector");d(this,"_mat4");d(this,"_checkId",0);d(this,"_use2d",!1);d(this,"_autoSwitchRenderMode",!0);d(this,"_selfieSegmentation");d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new je({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let t=e==="2d";this._use2d!==t&&(this._use2d=t,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new je({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new De({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on(De.UNAVAILABLE,e=>{var t;this.emit("error",e),this.log.warn("video context unavailable",e),(t=this._virtualBackgroundAbortCallback)==null||t.call(this,e),this.update().catch(r=>{this.log.error(r)})})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=se.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,t;(e=this._2dVideoContext)==null||e.destroy(),(t=this._glVideoContext)==null||t.destroy(),this.smallVideoContext.destroy(),se.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Qi||this._isMixScreen||this._isMirror||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",t){let r=e==="videoCtxGl"?512700:512701;t?b.addFailedEvent({key:r,error:t}):b.addSuccessEvent({key:r})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let t=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(t)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new De({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}initVirtualBackground(e,t,r){return this._selfieSegmentation=e,this._faceDetector=t,this._mat4=r,this._selfieSegmentation.changeModel()}setSmallVideo(e,t){if(e){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new Ga(this.smallVideoContext,e,this.log),this.smallVideoContext.on(De.UNAVAILABLE,r=>{this.log.warn("small video context lost",r)})}if(this.smallVideoContext.frameRate=e.frameRate,this.smallDestination.resolution=e,t)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=t:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(t),this.smallImageSource.resize(t.width,t.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:r,height:o}=this.cameraTrack.settings;this.smallTrackSource.resize(r,o),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(e){var t;try{let r=this.cameraTrack,{small:o,player:n}=r;this.setSmallVideo(o,e),Qi&&n.setCanvas(e);let a=e&&((t=this.destination)==null?void 0:t.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),a=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${a?a.label:"no output track"}`),r.setOutputMediaStreamTrack(a)}catch(r){this.log.error("set main output failed",r)}}update(e=!1){return p(this,null,function*(){var o,n,a,c,l;if(!this.cameraTrack)return;if(!this.initialTrack)return this.updateWithoutCamera();if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:t,profile:r}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams?(this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),lt===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof Vi?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof Vi?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(t.width,t.height)):e&&this.cameraNode&&this.destination?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new Ha(this.videoContext,{name:"mainDestination",logger:this.log}),this.cameraNode=new fc(this.videoContext,{input:this.initialTrack,width:t.width,height:t.height,mirror:this._isMirror,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,selfieSegmentation:this._selfieSegmentation,Wasm:this.Wasm,enableFaceCentering:this._enableFaceCentering,faceDetector:this._faceDetector,mat4:this._mat4}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute()),this.videoContext.frameRate=r.frameRate,this._use2d){let u=this.cameraNode;u.disconnect(),this._isMirror&&(this.mirrorNode||(this.mirrorNode=new mc(this.videoContext,this.log)),u=u.connect(this.mirrorNode),u.disconnect(),this.log.info("start mirror")),this.mixNode&&this.mixNode.close(),delete this.mixNode,(this._isMixScreen||this._hasWaterMark)&&(this.mixNode=new on(this.videoContext,this.log),u.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption?(this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y):(o=this.waterMarkNode)==null||o.resize(t.width,t.height),(n=this.waterMarkNode)==null||n.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&(this.screenNode||(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.resize(this.screenTrack.settings.width,this.screenTrack.settings.height)),this.screenNode.shouldUpdate=!1),(a=this.screenNode)==null||a.connect(this.mixNode,{zIndex:0}),this.changeMixLayout(this._mixScreenOption),u=this.mixNode),u.connect(this.destination),this.log.info("mixNode after resize: ",`${(c=this.mixNode)==null?void 0:c.width}x${(l=this.mixNode)==null?void 0:l.height}`)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}clearLastFrame(){var e;this.destination&&((e=this.destination.ctx2d)==null||e.clearRect(0,0,this.destination.width,this.destination.height))}updateWithoutCamera(){return p(this,null,function*(){var r;if(!this._isMixScreen)return;if(!this.screenTrack||!this.screenTrack.mediaTrack){this.clearLastFrame();return}if(this.checkOrCreateVideoContext(),!this._use2d)return;this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}));let{settings:e,profile:t}=this.screenTrack;return this.videoContext.frameRate=((r=this.cameraTrack)==null?void 0:r.profile.frameRate)||t.frameRate,this.mixNode&&this.mixNode.close(),this.mixNode=new on(this.videoContext,this.log),this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.shouldUpdate=!0,this.screenNode.resize(e.width,e.height),this.screenNode.connect(this.mixNode,{zIndex:0}),this.changeMixLayout(this._mixScreenOption),this.mixNode.connect(this.destination),this.log.info("mix without camera"),this._setMainOutput(this.videoContext._canvas)})}changeInput(e){var t,r,o,n;if(e instanceof at)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof Je)return this.log.info("change video input",(r=e.mediaTrack)==null?void 0:r.label),this.setCameraTrack(e);if(e instanceof ui){this.log.info("change remote input",(o=e.mediaTrack)==null?void 0:o.label);let a=e.mediaTrack;return e.setOutputMediaStreamTrack(a)}this.log.warn("change unknown input",(n=e.mediaTrack)==null?void 0:n.label)}removeInput(e){var t;e instanceof at?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Je?this._isMixScreen?(delete this.cameraNode,this.cameraTrack._inputTrack=null,this.update()):(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof ui&&e.source&&e.source.context.destroy()}setCameraTrack(e){return p(this,null,function*(){this.cameraTrack=e,this.update(!0)})}setScreenTrack(e){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)}getWatermarkImage(e,t){return p(this,null,function*(){let r=document.createElement("canvas");t&&e&&(r.height=t,r.width=e);let o=r.getContext("2d");if(!o)throw new y({code:S.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,a)=>n.zIndex-a.zIndex),this.watermarkImageList.forEach(({image:n,x:a,y:c,width:l,height:u})=>{o.drawImage(n,a,c,l,u)}),es(r.toDataURL())})}pushWaterMarkImageList(e){let{type:t}=e;this.watermarkImageList.some(o=>o.imageUrl===e.imageUrl&&o.height===e.height&&o.width===e.width&&o.x===e.x&&o.y===e.y&&o.type===e.type&&o.zIndex===e.zIndex)||((t==="mute"||t==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(o=>o.type!==t)),this.watermarkImageList.push(e))}setBeautyParams(e){return p(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return p(this,null,function*(){this._beautyParams=void 0,this.update()})}setVideoMixer(e){this._isMixScreen=!0,this._mixScreenOption=e,this.update()}updateVideoMixer(e){this.changeMixLayout(e),this._mixScreenOption=Object.assign(this._mixScreenOption,e)}changeMixLayout(e){if(!this._isMixScreen||!this.mixNode)return;let{camera:t,screen:r}=e;if(this.cameraNode&&t){let[o,n]=[this.cameraNode.width,this.cameraNode.height],{x:a,y:c,width:l,height:u}=t;l&&(u=l*n/o),!l&&u&&(l=u*o/n),this.mixNode.changeInputLayout(this.cameraNode,{x:a,y:c,width:l,height:u})}if(this.screenNode&&r){let[o,n]=[this.screenNode.width,this.screenNode.height],{x:a,y:c,width:l,height:u}=r;l&&(u=l*n/o),!l&&u&&(l=u*o/n),this.mixNode.changeInputLayout(this.screenNode,{x:a,y:c,width:l,height:u}),this.mixNode.resize(0,0)}}deleteVideoMixer(){var e;this._isMixScreen=!1,this._mixScreenOption={},(e=this.screenNode)==null||e.close(),delete this.screenNode,this.update(),this.log.info("delete screenMixer")}setWatermark(e){return p(this,null,function*(){var h,f;let t;try{t=yield es((e==null?void 0:e.imageElement)||e.imageUrl)}catch(_){throw new y({code:S.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:r=0,y:o=0,width:n=t.width,height:a=t.height,type:c="watermark",zIndex:l=2}=e;this.watermarkImageList.some(_=>_.type===c)?(this.watermarkImageList=this.watermarkImageList.filter(_=>_.type!==c),this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl}),t=yield this.getWatermarkImage((h=this.cameraTrack)==null?void 0:h.settings.width,(f=this.cameraTrack)==null?void 0:f.settings.height),this._waterMarkOption={x:0,y:0,width:t.width,height:t.height,image:t},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(t.width,t.height),this.waterMarkNode.image=t):this.update()):(this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(_,D)=>_==="imageUrl"?void 0:D))})}deleteWatermark(e="watermark"){return p(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(t=>t.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(t,r)=>t==="imageUrl"?void 0:r)),yield this.freshWatermark()})}freshWatermark(){return p(this,null,function*(){var t,r,o;(t=this.waterMarkNode)==null||t.close(),delete this.waterMarkNode,delete this._waterMarkOption;let e=yield this.getWatermarkImage((r=this.cameraTrack)==null?void 0:r.settings.width,(o=this.cameraTrack)==null?void 0:o.settings.height);this._waterMarkOption={x:0,y:0,width:e.width,height:e.height,image:e},this.update()})}setVirtualBackground(e){return p(this,null,function*(){var t;if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield es(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type),this._enableFaceCentering=(t=e.enableFaceCentering)!=null?t:this._enableFaceCentering}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new y({code:S.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var t;this._isMixScreen=e,this._isMixScreen||((t=this.screenNode)==null||t.close(),delete this.screenNode),this.update()}set mirror(e){var t;this._isMirror!==e&&(this._isMirror=e,this._isMirror||((t=this.mirrorNode)==null||t.close(),delete this.mirrorNode),this.update())}get mirror(){return this._isMirror}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return p(this,null,function*(){var e;(e=this.cameraTrack)!=null&&e.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}createDecodeContext(e){return new gc(e)}clear(){var e;(e=this.videoContext)==null||e.disconnect(),delete this.destination,delete this.cameraNode,delete this.mirrorNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};N([Aa(function(e){this.log.error("update failed",e)})],nn.prototype,"update",1);var zT=0;var Tc=class extends H{constructor(e){super("room");d(this,"seq",++zT);d(this,"sdkAppId");d(this,"userId");d(this,"userSig");d(this,"privateMapKey");d(this,"latencyLevel");d(this,"tinyId");d(this,"scene");d(this,"roomId");d(this,"useStringRoomId");d(this,"role","anchor");d(this,"joinParams",null);d(this,"localTracks",new Set);d(this,"enableAutoPlayDialog",!0);d(this,"autoReceiveAudio",!0);d(this,"autoReceiveVideo",!0);d(this,"proxy_ws");d(this,"proxy_wt");d(this,"proxy_unified");d(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0}});d(this,"keyPointManager");d(this,"audioManager");d(this,"videoManager");d(this,"callDurationCalculator");d(this,"badCaseDetector");d(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});d(this,"videoDecodeFallbackType");d(this,"_isUsingCachedSchedule",!1);d(this,"_log",R.createLogger({id:`r${this.seq}`}));d(this,"_joinedTimestamp",0);d(this,"_sdkType");d(this,"heartbeatReport");d(this,"quality");d(this,"enableSEI");d(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,ge(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),ge(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),ge(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new Tp({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new Ep({room:this}),this.badCaseDetector=new Sp({room:this}),this.audioManager=new Na(this),this.videoManager=new nn(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return p(this,null,function*(){return this.publish(e)})}removeTrack(e){return p(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return p(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(K(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(He(e)){let{websocketProxy:t,webtransportProxy:r,loggerProxy:o,scheduleProxy:n,unifiedProxy:a}=e;this.proxy_ws=t,this.proxy_wt=r,this.proxy_unified=a,a?(za([a,a]),dr(`https://${a}`)):(o&&dr(o),n&&za(n))}E.once(I.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:cr.main,sched_back_domain:cr.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return p(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(t=>{e[t.userId]=t.remoteAudioTrack.stat}),e})}getTransportStats(){return p(this,null,function*(){var t;let e={rtt:((t=this.quality)==null?void 0:t.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let r of this.quality.downlinkInfo)e.downlinksRTT[r.userId]=r.rtt;return e})}getRemoteVideoStats(){return p(this,arguments,function*(e="main"){let t={};return this.remotePublishedUserMap.forEach(r=>{let o=e==="auxiliary"?r.remoteAuxiliaryTrack:r.remoteVideoTrack;t[r.userId]=o.stat}),t})}checkDestroy(){if(this.isDestroyed)throw new y({code:S.INVALID_OPERATION,message:P({key:L.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(xe.INVALID_DESTROY),new y({code:S.INVALID_OPERATION,message:P({key:L.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,E.emit(I.ROOM_DESTROY,{room:this})}schedule(e,t){return p(this,null,function*(){var o,n,a;let r=w();try{let{isCached:c,result:l,detailCost:u}=yield Jl({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:Me,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:t,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=c,this._log.info(`schedule cache:${+c} ${Tt(l,{keysToExclude:["username","credential"]})}`),c&&E.once(I.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=v(v({},this.scheduleResult),l),j((o=l.config)==null?void 0:o.retryCount)&&xc(l.config.retryCount),K((n=l.config)==null?void 0:n.loggerDomain)&&dr(l.config.loggerDomain),this.videoDecodeFallbackType=((a=l.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,E.emit(I.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:u}),b.addSuccessEvent({key:521700,cost:w()-r})}catch(c){throw b.addFailedEvent({key:521700,error:c}),c}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}};var Pp=Be(Qe());var Ru=Be(pu());var Cp=s=>{let i=Ae(s),e={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return i.media.forEach((t,r)=>{var o;if(t.ssrcs&&!T(t.ssrcs[0].id)){let n=Number(t.ssrcs[0].id),a=Number((o=t.ssrcs.filter(c=>c.attribute==="cname")[1])==null?void 0:o.id);switch(r){case 0:e.audioSsrc=n;break;case 1:e.bigVideoSsrc=n,e.bigVideoRtxSsrc=a;break;case 2:e.smallVideoSsrc=n,e.smallVideoRtxSsrc=a;break;case 3:e.auxVideoSsrc=n,e.auxVideoRtxSsrc=a;break}}}),e};function Rp(s){var e;let i=[];for(let t=0;t<s.rtp.length;t++){if(["rtx","red","ulpfec"].includes(s.rtp[t].codec))continue;let r=s.fmtp.filter(o=>o.payload===s.rtp[t].payload)[0];i.push({payload:s.rtp[t].payload,codec:s.rtp[t].codec,fmtp:r?r.config:"",rate:s.rtp[t].rate,rtx:((e=s.rtp[t+1])==null?void 0:e.codec)==="rtx"?s.rtp[t+1].payload:0,rtcpfb:((s==null?void 0:s.rtcpFb)||[]).filter(o=>o.payload===s.rtp[t].payload).map(({type:o,subtype:n})=>({id:o,params:n?[n]:[]}))})}return i}function QT(){return p(this,null,function*(){let s=new RTCPeerConnection;s.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_RECVONLY});let i=yield s.createOffer();if(!i.sdp)return[];let e=Ae(i.sdp),t=Rp(e.media[0]);return s.close(),t})}var yp=(s,i)=>p(void 0,null,function*(){var c;let e=Ae(s),t={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:!1};t.ice.ufrag=String(e.media[0].iceUfrag),t.ice.password=e.media[0].icePwd||"",e.fingerprint&&(t.dtls.hash=e.fingerprint.type,t.dtls.fingerprint=e.fingerprint.hash,t.dtls.setup=e.setup||""),e.media[0].fingerprint&&(t.dtls.hash=e.media[0].fingerprint.type,t.dtls.fingerprint=e.media[0].fingerprint.hash),t.dtls.setup=e.media[0].setup||"";let r=e.media[0],o=e.media[1];r.ext&&(t.audio.extensions=r.ext.map(l=>({id:l.value,uri:l.uri}))),o.ext&&(t.video.extensions=o.ext.map(l=>({id:l.value,uri:l.uri})));let n={codec:r.rtp[0].codec,fmtp:r.fmtp[0].config,payload:r.fmtp[0].payload,rate:r.rtp[0].rate,channels:r.rtp[0].encoding,rtcpfb:[],rtx:0};(c=r.rtcpFb)==null||c.forEach(({payload:l,type:u,subtype:h})=>{if(l===n.payload){let f={id:u,params:[]};h&&f.params.push(h),n.rtcpfb.push(f)}}),t.audio.codecs.push(n);let a=["h264","vp8"];return i&&a.shift(),t.video.codecs=[...Rp(o)].filter(l=>a.includes(l.codec.toLocaleLowerCase())),t.video.decoders=(yield QT()).filter(l=>["h264","vp8"].includes(l.codec.toLocaleLowerCase())),t}),bp=({serverAbility:s,clientAbility:i,offerSDP:e,enableCustomMessage:t})=>{let r=Ae(e),o={extmapAllowMixed:"extmap-allow-mixed",groups:r.groups,icelite:"ice-lite",media:[],msidSemantic:{semantic:"",token:"WMS"},name:"-",origin:{address:"127.0.0.1",username:"-",sessionId:String(Date.now()),sessionVersion:1,netType:"IN",ipVer:4},timing:{start:0,stop:0},version:0},n={candidates:s.candidates.map(a=>({component:1,foundation:"1",generation:0,ip:a.ip,port:a.port,priority:a.priority,transport:a.foundation,type:a.type})),connection:{version:4,ip:"0.0.0.0"},direction:m.TRANSCEIVER_DIRECTION_RECVONLY,ext:s.audio.extensions.map(a=>({value:a.id,uri:a.uri})),fingerprint:{type:s.dtls.hash,hash:s.dtls.fingerprint},fmtp:[{payload:s.audio.codecs[0].payload,config:s.audio.codecs[0].fmtp}],icePwd:s.ice.password,iceUfrag:s.ice.ufrag,mid:"0",payloads:String(s.audio.codecs[0].payload),port:r.media[0].port,protocol:r.media[0].protocol,type:m.AUDIO,setup:s.dtls.setup,rtcpFb:s.audio.codecs[0].rtcpfb.map(a=>({payload:s.audio.codecs[0].payload,type:a.id,subtype:a.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:s.audio.codecs[0].payload,codec:s.audio.codecs[0].codec,rate:s.audio.codecs[0].rate,encoding:s.audio.codecs[0].channels}]};return o.media.push(n),[1,2,3].forEach(a=>{o.media.push(yu({mid:a,serverAbility:s,clientAbility:i,parsedOffer:r}))}),t&&o.media.push(r.media.find(a=>a.mid==="dc")),Ct(o)},yu=({mid:s,serverAbility:i,clientAbility:e,parsedOffer:t,isDownlink:r=!1})=>{let o={candidates:i.candidates.map(n=>({component:1,foundation:"1",generation:0,ip:n.ip,port:n.port,priority:n.priority,transport:n.foundation,type:n.type})),connection:{version:4,ip:"0.0.0.0"},direction:m.TRANSCEIVER_DIRECTION_RECVONLY,ext:i.video.extensions.map(n=>({value:n.id,uri:n.uri})),fingerprint:{type:i.dtls.hash,hash:i.dtls.fingerprint},fmtp:[],icePwd:i.ice.password,iceUfrag:i.ice.ufrag,mid:String(s),payloads:"",port:t.media[0].port,protocol:t.media[0].protocol,type:m.VIDEO,setup:i.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(r){let n=i.video.decoders;(!n||n.length===0)&&(n=i.video.codecs),(!n||n.length===0)&&(n=e.video.decoders),n.forEach(a=>{Gr(o,a)})}else{let n=i.video.codecs.findIndex(c=>c.codec.toLowerCase()===(i.useVp8?"vp8":"h264")),a=i.video.codecs[n]||e.video.codecs[0];Gr(o,a)}return o},Gr=(s,i)=>{s.payloads=`${s.payloads} ${i.payload}`.trim(),s.fmtp.push({payload:i.payload,config:i.fmtp}),s.rtcpFb=[...s.rtcpFb||[],...i.rtcpfb.map(e=>({payload:i.payload,type:e.id,subtype:e.params[0]}))],s.rtp.push({payload:i.payload,codec:i.codec.toUpperCase(),rate:i.rate}),i.rtx&&(s.payloads=`${s.payloads} ${i.rtx}`,s.fmtp.push({payload:i.rtx,config:`apt=${i.payload}`}),s.rtp.push({payload:i.rtx,codec:"rtx",rate:i.rate}))};function YT(s){let i=new Set(["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"]);s.ext&&(s.ext=s.ext.filter(e=>!i.has(e.uri)))}function KT(s){if(!s.rtcpFb)return;let i=[];s.rtcpFb.forEach((e,t)=>{var r;i.push(e),s.rtcpFb&&((r=s.rtcpFb[t+1])==null?void 0:r.payload)!==e.payload&&e.type!=="rrtr"&&i.push({payload:e.payload,type:"rrtr"})}),s.rtcpFb=i}function ZT(s){s.type===m.VIDEO&&s.fmtp&&s.fmtp.forEach(i=>{i.config.includes("apt")||(i.config+=";sps-pps-idr-in-keyframe=1")})}function eE(s){s.type===m.AUDIO&&s.fmtp&&s.fmtp.forEach(i=>{i.config+=";sprop-stereo=1;stereo=1"})}var Np=(s,i,e)=>{let t=Ru.default.parse(s);return t.media.forEach((r,o)=>{var n;if((r.type===m.AUDIO||r.type===m.VIDEO)&&(KT(r),ZT(r),eE(r),YT(r),r.type===m.VIDEO)){if(o<4)r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],i.video.codecs.forEach(a=>Gr(r,a));else if(e){r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[];let a=e.video.decoders;(!a||a.length===0)&&(a=e.video.codecs),(!a||a.length===0)&&(a=i.video.decoders),a.forEach(c=>Gr(r,c))}}(n=r.payloads)!=null&&n.includes("datachannel")&&t.groups&&r.mid&&(t.groups[0].mids=t.groups[0].mids.replace(r.mid,"dc"),r.mid="dc")}),Ru.default.write(t)};var vp=Be(Qe());var Ec=class extends vp.EventEmitter{constructor(e){super();this.room=e;d(this,"mainFpsHealth",1);d(this,"mainBitrateHealth",1);d(this,"badMainBitrateHealthCount",0);d(this,"lastEmitBadHealthTime",0);d(this,"log");!he&&Ye&&E.on("262",this.onVideoCodecChanged,this),this.log=e.getLogger().createChild({id:"h-d"})}onVideoCodecChanged({remoteUserId:e,streamType:t,isHWCodec:r,codec:o}){if(!(e||t===7||o!=="h264")){if(!r){this.room.off("heartbeat-report",this.onHeartbeatReport,this);return}this.room.listeners("heartbeat-report").includes(this.onHeartbeatReport)||this.room.on("heartbeat-report",this.onHeartbeatReport,this)}}onHeartbeatReport(e){Date.now()-this.lastEmitBadHealthTime<30*1e3||(e.msg_up_stream_info.msg_video_status.forEach(t=>{if(t.uint32_video_enc_fps&&t.uint32_video_capture_fps){let r=t.uint32_video_enc_fps/t.uint32_video_capture_fps;t.uint32_video_stream_type===2&&(this.mainFpsHealth=r)}if(t.uint32_video_codec_bitrate&&t.uint32_video_stream_type===2){let{localMainVideoTrack:r}=this.room;r&&(this.mainBitrateHealth=t.uint32_video_codec_bitrate/1e3/r.profile.bitrate)}}),this.log.debug(`mainBitrateHealth: ${this.mainBitrateHealth} mainFpsHealth: ${this.mainFpsHealth}`),this.mainBitrateHealth>.5&&(this.badMainBitrateHealthCount=0),this.mainFpsHealth>.9&&this.mainBitrateHealth<.5&&(this.badMainBitrateHealthCount++,this.badMainBitrateHealthCount>3&&(this.badMainBitrateHealthCount=0,this.lastEmitBadHealthTime=Date.now(),this.log.warn(`bad main bitrate health: ${this.mainBitrateHealth}`),this.emit("1",{isAux:!1}))))}destroy(){E.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};d(Ec,"EVENT_BAD_HEALTH","bad_health");var Dp=Ec;function Op({seiMessageList:s,isAudio:i,isMain:e}){return new TransformStream({transform(t,r){let o=t;i?audioEncodePipeline.forEach(n=>{o=n({frame:o})}):videoEncodePipeline.forEach(n=>{o=n({frame:o,seiMessageList:s,onDump:()=>{self.postMessage({type:"dump",isAudio:i,data:o.data,userId:"",streamType:e?"main":"auxiliary"})}})}),r.enqueue(o)}})}function Mp(s,i,e){return new TransformStream({transform(t,r){let o=t;videoDecodePipeline.forEach(n=>{o=n({frame:o,onSEI:a=>{a.forEach(c=>{self.postMessage({type:"sei",seiPayloadType:c.seiPayloadType,data:c.seiPayload.buffer,userId:s,streamType:i})})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:o.data,userId:s,streamType:i})}})}),r.enqueue(o)}})}function kp(s){let i=[Pi],e=[tu,Zl,eu,Kl,Op,Mp],t=()=>{let l=[],u=[],h=[];self.onmessage=f=>{f.data.type==="sei"&&(f.data.isMain?(l.push(f.data.data),f.data.small&&h.push(f.data.data)):u.push(f.data.data))},self.onrtctransform=f=>{let{options:_}=f.transformer,D=_.isReceiver?Mp(_.userId,_.streamType,_.isAudio):Op({isAudio:_.isAudio,seiMessageList:_.isMain?_.small?h:l:u,isMain:_.isMain});f.transformer.readable.pipeThrough(D).pipeTo(f.transformer.writable)}},r=`const videoEncodePipeline=[${s.videoEncodePipeline.toString()}];
123
111
  const videoDecodePipeline=[${s.videoDecodePipeline.toString()}];
124
112
  const audioEncodePipeline = [${s.audioEncodePipeline.toString()}];
125
- const audioDecodePipeline = [${s.audioDecodePipeline.toString()}];`,o=`(()=>{${i.map(c=>`const ${c.name}=(()=>${c.toString()})()`).join(`
113
+ const audioDecodePipeline = [${s.audioDecodePipeline.toString()}];`,o=`(()=>{${i.map(l=>`const ${l.name}=(()=>${l.toString()})()`).join(`
126
114
  `)}
127
- ${e.map(c=>c.toString()).join(`
128
- `)};(${t})();${r}})()`,n=new Blob([o],{type:"text/javascript"}),a=URL.createObjectURL(n),d=new Worker(a);return URL.revokeObjectURL(a),d}var sr=(c=>(c.TRACK="track",c.DATA_CHANNEL_MESSAGE="data_channel_msg",c[c.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",c[c.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",c.RECONNECTED="spc-reconnected",c.RECONNECT_FAILED="spc-reconnect-failed",c.ERROR="error",c.SEI_MESSAGE="sei-message",c.DUMP="dump",c))(sr||{}),k_=0,O_=!1,JS=new Set,qS=s=>k_>2&&!O_&&JS.size===0&&s,XS=1,vi=class extends D_.default{constructor({signalChannel:e,room:t,enableCustomMessage:r}){super();l(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});l(this,"currentState","DISCONNECTED");l(this,"_room");l(this,"_signalChannel");l(this,"_peerConnection",null);l(this,"_datachannel",null);l(this,"_enableCustomMessage");l(this,"_log");l(this,"_downlinkMIDMap",new Map);l(this,"_downlinkMIDUserIDMap",new Map);l(this,"_reconnectionTimer",-1);l(this,"reconnectionCount",0);l(this,"clientAbility");l(this,"_serverAbility",null);l(this,"addDownlinkQueue",new Set);l(this,"removeDownlinkQueue",new Set);l(this,"_parsedAnswer",null);l(this,"_updateSDPPromise",null);l(this,"_waitForPCConnectedPromise");l(this,"clearConnectTimeout");l(this,"_isSDPLogged",!1);l(this,"enableInsertableStreams",!1);l(this,"insertableStreamsAbortMap",new Map);l(this,"receiverRemoteTrackMap",new WeakMap);l(this,"scriptTransformWorker");l(this,"_isRelayTried",!1);l(this,"_rttOverCount",0);l(this,"originOffer",null);this._room=t,this._enableCustomMessage=r,this._signalChannel=e,this._log=j.createLogger({id:`spc${XS++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(Ar?this.enableInsertableStreams=!0:this.initScriptTransformWorker()),this._room.healthDetector.on("1",this.onBadHealth,this)}get isH264EncodeSupported(){let e=this._room.checkSystemResult.detail.isH264EncodeSupported;return this._serverAbility&&(e=e&&!!this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="h264")),e}addAbortController(e,t){var r;(r=this.insertableStreamsAbortMap.get(e))==null||r.abort("destory"),this.insertableStreamsAbortMap.set(e,t)}get isVP8EncodeSupported(){let e=this._room.checkSystemResult.detail.isVp8EncodeSupported;return this._serverAbility&&(e=e&&this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="vp8")),e}get videoCodec(){var t,r;let e=(t=this._parsedAnswer)==null?void 0:t.media[1].rtp.find(o=>["h264","vp8"].includes(o.codec.toLowerCase()));return e?e.codec.toLowerCase():(r=this._serverAbility)!=null&&r.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var e;return(e=this._serverAbility)!=null&&e.video.decoders.find(t=>t.codec.toLowerCase()==="h264")?"h264":"vp8"}get isUsingH264(){return this.videoCodec==="h264"}get is42001fSupported(){return this.clientAbility?!!this.clientAbility.video.codecs.find(e=>e.fmtp.includes("42001f")):!1}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?E_(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth({isAux:e}){this.useHWEncoder(!1,e?7:2)}initScriptTransformWorker(){Sd&&(this.scriptTransformWorker=v_({videoEncodePipeline:this._room.videoManager.encodePipeline,videoDecodePipeline:this._room.videoManager.decodePipeline,audioEncodePipeline:this._room.audioManager.encodePipeline,audioDecodePipeline:this._room.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=e=>{e.data.type==="sei"&&this.emit("sei-message",e.data),e.data.type==="dump"&&this.emit("dump",e.data)},this.scriptTransformWorker.onerror=e=>{this._log.error("scriptTransformWorker error: ",e)})}get isReconnecting(){return this.currentState==="RECONNECTING"||this._reconnectionTimer>0||this.reconnectionCount>0}get dtlsTransport(){if(!this._peerConnection)return null;let e=this._peerConnection.getSenders();return e.length===0?null:e[0].transport}getPeerConnectionConfig(e){var o;let t={encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:e,iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},r=(o=this._peerConnection)==null?void 0:o.getConfiguration().encodedInsertableStreams;return Ha(r)&&(t.encodedInsertableStreams=r),this._log.debug("getPeerConnectionConfig",JSON.stringify(t)),t}initialize(e){return I(this,null,function*(){var r;let t;try{return this._peerConnection=new RTCPeerConnection(this.getPeerConnectionConfig(e)),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let o=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${o}`),o==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():o==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),this._signalChannel.clearBakRelayIps(),Y.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):o==="failed"&&Y.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var n;let o=((n=this._peerConnection)==null?void 0:n.signalingState)||"";this._log[o==="closed"?"debug":"info"](`signaling state: ${o}`)},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=o=>this.emit("track",o),this._enableCustomMessage&&(this._datachannel=this._peerConnection.createDataChannel(`${this._room.userId}dc`),this._datachannel.binaryType="arraybuffer",this._datachannel.onopen=()=>{this._log.info("datachannel open")},this._datachannel.onclose=()=>{this._log.warn("datachannel close")},this._datachannel.onmessage=o=>{let n=new am(o.data);this.emit("data_channel_msg",{data:n})},this._datachannel.onerror=o=>{this._log.warn("datachannel error",o)}),this._peerConnection.addTransceiver(S.AUDIO,{direction:S.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(S.VIDEO,{direction:S.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(S.VIDEO,{direction:S.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(S.VIDEO,{direction:S.TRANSCEIVER_DIRECTION_SENDONLY}),t=yield this._peerConnection.createOffer(),this.clientAbility=yield S_(t.sdp,((r=this._room.scheduleResult.config)==null?void 0:r.remove264FromSDP)||!1),this.originOffer=t,this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:o}=this;o&&(this._log.debug(`dtls state: ${o.state}`),o.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():o.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),Y.addSuccessEvent({key:521707}),this.clientAbility}catch(o){throw Y.addFailedEvent({key:521707,error:o}),this._log.error(`initialize failed ${o}
129
- offer: ${t==null?void 0:t.sdp}`),o}})}setIceServers(e){return I(this,null,function*(){var t;if(!(!this._peerConnection||e.length===0))try{if(this._log.info("setIceServers",JSON.stringify(e)),this._peerConnection.setConfiguration(this.getPeerConnectionConfig(e)),(t=this._peerConnection)!=null&&t.localDescription||!this.originOffer){this._log.warn("setIceServers already has localDescription or no origin Offer");return}yield this.setOffer(this.originOffer)}catch(r){this._log.warn("setIceServers error ",r)}})}setPriority(e="high"){if(this._peerConnection)try{this._peerConnection.getSenders().forEach(r=>{let o=r.getParameters();o.encodings[0]&&(o.encodings[0].priority=e,o.encodings[0].networkPriority=e,r.setParameters(o).catch(n=>{this._log.warn("setPriority error ",n)}))})}catch(t){this._log.warn("setPriority error ",t)}}connect(e,t=!1){return I(this,null,function*(){var r,o,n;try{if(this.currentState==="CONNECTED")return;!((r=this._peerConnection)!=null&&r.localDescription)&&this.originOffer&&(yield this.setOffer(this.originOffer));let a=le(),d={type:"answer",sdp:I_({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableCustomMessage})};this._serverAbility=e,yield this.setAnswer(d),yield this.waitForPeerConnectionConnected();let c=((o=this._room.scheduleResult.config)==null?void 0:o.priority)||((n=this._room.joinParams)==null?void 0:n.priority)||new URLSearchParams(location.search).get("priority");c&&this.setPriority(c),t||Y.addSuccessEvent({key:521703,cost:le()-a})}catch(a){let d=a instanceof Q&&a.code===H.API_CALL_ABORTED;throw d||this._log.error(`connect failed: ${a}`,e),this.reset(),!d&&!this.isReconnecting&&(Y.addFailedEvent({key:521703,error:a}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),a}})}reconnect(){return I(this,null,function*(){if(this._reconnectionTimer!==-1){this._log.warn("reconnect() is reconnecting, ignore current reconnection");return}if(!this._signalChannel.isConnected){this._log.warn("reconnect() wait signal channel is connected"),this._signalChannel.once(rt.CONNECTED,this.reconnect,this);return}try{this.reconnectionCount+=1,this._log.warn(`reconnect() trying [${this.reconnectionCount}]`),this.reset();let e=this._signalChannel.getBackupRelayIpPair(),t=yield this.initialize(this._room.getIceServers(e!=null&&e.iceServer?[e.iceServer]:[])),r=K({ability:t},e),o=yield this._signalChannel.sendWaitForResponse({command:Ne.REBUILD_PEER_CONNECTION,responseCommand:ge.REBUILD_PEER_CONNECTION_RES,data:r,enableLog:!1});if(o.data.code!==0)throw new Q({code:o.data.code,message:o.data.message});yield this.connect(o.data.data.ability,!0),Y.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),x.emit(V.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting)return;if(e!=null&&e.message.includes("timeout")){let t=fi(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield hr(t,r=>{this._reconnectionTimer=r}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error(`reconnect() failed ${e==null?void 0:e.code} ${e}`),Y.addFailedEvent({key:521704,error:e}),this.reconnectionCount>=dr()&&this._log.warn(`SDK has tried reconnect for ${dr()} times, but all failed, please check your network`),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}})}getPeerConnection(){return this._peerConnection}startReconnection(){return I(this,null,function*(){this.isReconnecting||(this._log.warn("start reconnect"),this._updateSDPPromise=null,this.emitConnectionStateChangedEvent("RECONNECTING"),yield this.reconnect())})}stopReconnection(){var e;this.isReconnecting&&(this._log.info("stop reconnect"),this.reconnectionCount=0,this.clearReconnectionTimer(),(e=this.clearConnectTimeout)==null||e.call(this),this._signalChannel.off(rt.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===Je.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(e){var o;let t=((o=this._peerConnection)==null?void 0:o.iceConnectionState)||"closed",r=this.getDTLSTransportState();this._log.info(`connectionState: ${e.target.connectionState} ICE: ${t} DTLS: ${r}`),e.target.connectionState===Je.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===Je.FAILED||e.target.connectionState===Je.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===Je.CONNECTED||e.target.connectionState===Je.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),x.emit(V.SINGLE_CONNECTION_STAT,{room:this._room,stat:{ice:this.stat.iceEndTime-this.stat.iceStartTime,dtls:this.stat.dtlsEndTime-this.stat.dtlsStartTime,peerConnection:this.stat.peerConnectionEndTime-this.stat.peerConnectionStartTime}}),this.logSelectedCandidate(),this.emitConnectionStateChangedEvent("CONNECTED"))}getDTLSTransportState(){if(!this._peerConnection)return mi;let e=null;return!Qr()||this._peerConnection.getSenders().length===0?mi:(e=this._peerConnection.getSenders()[0].transport,!Ss()||this._peerConnection.getReceivers().length===0?mi:e?e.state:mi)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(sr.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:e}),this.currentState=e))}logSelectedCandidate(){return I(this,null,function*(){if(!this._peerConnection)return;let e=yield this._peerConnection.getStats();for(let[t,r]of e)if(Xr(r)){let o=e.get(r.localCandidateId),n=e.get(r.remoteCandidateId);o&&(this._log.info(`local candidate: ${o.candidateType} ${o.protocol}:${o.ip||o.address}:${o.port} ${o.networkType||""} ${o.candidateType==="relay"?`relayProtocol:${o.relayProtocol}`:""}`),o.networkType&&La(o.networkType)),n&&this._log.info(`remote candidate: ${n.candidateType} ${n.protocol}:${n.ip||n.address}:${n.port}`);break}})}waitForPeerConnectionConnected(){return this._waitForPCConnectedPromise?this._waitForPCConnectedPromise:(this._waitForPCConnectedPromise=new Promise((e,t)=>{if(this.currentState==="CONNECTED")return e();let r=d=>{d.state==="CONNECTED"&&(clearTimeout(a),n(),e())},o=({room:d})=>{d===this._room&&(clearTimeout(a),n(),t(new Q({code:H.API_CALL_ABORTED,message:pe({key:he.CONNECTION_ABORTED,data:"leave room"})})))},n=()=>{x.off(V.LEAVE_SUCCESS,o,this),this.off(sr.CONNECTION_STATE_CHANGED,r,this)},a=setTimeout(()=>{n();let d=new Q({code:H.API_CALL_TIMEOUT,message:"connection timeout"});k_+=1,qS(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),O_=!0,this.emit(sr.FIREWALL_RESTRICTION)),t(d)},tn);this.clearConnectTimeout=()=>{n(),clearTimeout(a),delete this.clearConnectTimeout},x.on(V.LEAVE_SUCCESS,o,this),this.on(sr.CONNECTION_STATE_CHANGED,r,this)}),this._waitForPCConnectedPromise=this._waitForPCConnectedPromise.finally(()=>{this._waitForPCConnectedPromise=null,delete this.clearConnectTimeout}),this._waitForPCConnectedPromise)}waitForReconnected(){return this.isReconnecting?new Promise((e,t)=>{this.once("spc-reconnected",e),this.once("error",t)}):Promise.resolve()}addDownlink(e){return I(this,null,function*(){if(this._log.info(`addDownlink(${e.userId}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise),this.updateLocalAndRemoteSDPConfig(e),this.addDownlinkQueue.size===0)try{yield this.updateSDP(),this._log.info(`addDownlink(${e.userId}) done`)}catch(t){this._log.error(`addDownlink(${e.userId}) failed ${t}`),yield this.startReconnection()}})}updateLocalAndRemoteSDPConfig({ssrc:e,userId:t,tinyId:r}){if(!this._peerConnection)return;this._log.info(`updateLocalAndRemoteSDPConfig ${t} ${JSON.stringify(e)}`);let o=this._peerConnection.getTransceivers().slice(4).filter(m=>m.direction==="inactive").slice(0,3).map(m=>(m.direction=S.TRANSCEIVER_DIRECTION_RECVONLY,Number(m.mid)));this._parsedAnswer||(this._parsedAnswer=et(this._peerConnection.remoteDescription.sdp));let n=this._parsedAnswer.media.filter(m=>{var p;return(p=m.ssrcs)==null?void 0:p.find(g=>{var f;return(f=g.value)==null?void 0:f.includes(r)})}),a,d,c;if(n.length===3)a=n[0],d=n[1],c=n[2];else if(o.length===3)a=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(o[0])),d=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(o[1])),c=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(o[2]));else if(o.length===0){this._peerConnection.addTransceiver(S.AUDIO,{direction:S.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(S.VIDEO,{direction:S.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(S.VIDEO,{direction:S.TRANSCEIVER_DIRECTION_RECVONLY}),a=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let m=om({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:et(this._peerConnection.localDescription.sdp),isDownlink:!0});d=JSON.parse(JSON.stringify(m)),c=JSON.parse(JSON.stringify(m)),a.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(a),d.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(d),c.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(c)}a.direction=S.TRANSCEIVER_DIRECTION_SENDONLY;let h=`${r}-${e.audio}`;a.ssrcs=[{id:e.audio,attribute:"cname",value:`${h}`},{id:e.audio,attribute:"msid",value:`${h}-${S.MAIN} ${h}-audio`}],d.direction=S.TRANSCEIVER_DIRECTION_SENDONLY,d.ssrcs=[{id:e.video,attribute:"cname",value:`${h}`},{id:e.video,attribute:"msid",value:`${h}-${S.MAIN} ${h}-bigvideo`},{id:e.videoRtx,attribute:"cname",value:`${h}`},{id:e.videoRtx,attribute:"msid",value:`${h}-${S.MAIN} ${h}-bigvideo`}],d.ssrcGroups=[{semantics:"FID",ssrcs:`${e.video} ${e.videoRtx}`}],c.direction=S.TRANSCEIVER_DIRECTION_SENDONLY;let u=`${h}-aux`;c.ssrcs=[{id:e.auxiliary,attribute:"cname",value:u},{id:e.auxiliary,attribute:"msid",value:`${u} ${h}-aux${S.VIDEO}`},{id:e.auxiliaryRtx,attribute:"cname",value:`${u} ${h}-aux${S.VIDEO}`},{id:e.auxiliaryRtx,attribute:"msid",value:`${u} ${h}-aux${S.VIDEO}`}],c.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(m=>m.mid).join(" ")),this._downlinkMIDMap.set(t,[a.mid,d.mid,c.mid]),this._downlinkMIDUserIDMap.set(a.mid,t),this._downlinkMIDUserIDMap.set(d.mid,t),this._downlinkMIDUserIDMap.set(c.mid,t)}removeDownlink(e){return I(this,null,function*(){if(!this._downlinkMIDMap.has(e)||!this._peerConnection)return;this._log.info(`removeDownlink(${e}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise);let t=this._downlinkMIDMap.get(e),r=!1;this._peerConnection.getTransceivers().forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(r=!0,o.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=et(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(r=!0,o.direction="inactive",o.ssrcs=[],o.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&r&&(yield this.updateSDP()),this._downlinkMIDMap.delete(e),t==null||t.forEach(o=>this._downlinkMIDUserIDMap.delete(o)),this._log.info(`removeDownlink(${e}) done`)})}setBandwidth(e){return I(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:r,smallVideo:o,auxVideo:n}=e;try{if(wn()){let a=this._peerConnection.getSenders().slice(0,4);for(let c=0;c<a.length;c++){let h=a[c],u;c===0&&t?u=t:c===1&&r?u=r:c===2&&o?u=o:c===3&&n&&(u=n),u&&(yield this.setSenderMaxBitrate(h,u))}let d=!1;r&&a[1].track&&(d=this.setStartBitrate(1,r)),n&&a[3].track&&(d=this.setStartBitrate(3,n)||d),d&&(yield this.updateSDP())}else yield this.setBandwidthBySDP(e);this._log.info(`setBandwidth ${JSON.stringify(e)}`)}catch(a){this._log.error(`failed to set bandwidth: ${a}`)}})}setStartBitrate(e,t){var r,o;return(r=this._peerConnection)!=null&&r.remoteDescription&&(this._parsedAnswer||(this._parsedAnswer=et(this._peerConnection.remoteDescription.sdp)),(o=this._parsedAnswer.media[e])!=null&&o.fmtp[0])?(this._parsedAnswer.media[e].fmtp[0].config+=`;x-google-start-bitrate=${t>5e3?5e3:t}`,!0):!1}setSenderMaxBitrate(e,t){let r=e.getParameters();return(!r.encodings||r.encodings.length===0)&&(r.encodings=[{}]),t==="unlimited"?delete r.encodings[0].maxBitrate:r.encodings[0].maxBitrate=t*1e3,e.setParameters(r)}setBandwidthBySDP({audio:e,bigVideo:t,smallVideo:r,auxVideo:o}){if(!this._peerConnection||!this._peerConnection.localDescription)return;let n=et(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=et(this._peerConnection.remoteDescription.sdp));let a=Ue?"TIAS":"AS";e&&(n.media[0].bandwidth=[{type:a,limit:Ue?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:a,limit:Ue?e*1e3:e}]),t&&(n.media[1].bandwidth=[{type:a,limit:Ue?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:a,limit:Ue?t*1e3:t}]),r&&(n.media[2].bandwidth=[{type:a,limit:Ue?r*1e3:r}],this._parsedAnswer.media[2].bandwidth=[{type:a,limit:Ue?r*1e3:r}]),o&&(n.media[3].bandwidth=[{type:a,limit:Ue?o*1e3:o}],this._parsedAnswer.media[3].bandwidth=[{type:a,limit:Ue?o*1e3:o}]);let d={type:"offer",sdp:ui(n)};return this.updateSDP({localDescription:d})}setScaleResolutionDownBy(e,t,r){let o=e.getParameters();(!o.encodings||o.encodings.length===0)&&(o.encodings=[{}]);let n=o.encodings[0].scaleResolutionDownBy;if(L(n)?t===1:t===n)return;let a=`setScaleResolutionDownBy ${r} ${t}`;return n&&(a+=` prevScale: ${n}`),this._log.warn(a),o.encodings[0].scaleResolutionDownBy=t,e.setParameters(o)}setDegradationPreference(e,t,r){if(xt&&qt<83||Ze&&Nl(Bi,"12.1")||Ue&&ln<138)return;let o=e.getParameters(),n="balanced";if(t==="motion"?n="maintain-framerate":t==="detail"&&(n="maintain-resolution"),o.degradationPreference===n)return;let a=`setDegradationPreference ${r} ${n}`;return this._log.info(a),o.degradationPreference=n,e.setParameters(o).catch(d=>this._log.warn(`${a} failed: ${d}`))}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=ui(this._parsedAnswer);return this._updateSDPPromise=new Promise((r,o)=>I(this,null,function*(){var n,a;try{!e&&this._peerConnection&&(this._log.info("creating offer"),e=yield this._peerConnection.createOffer()),e&&(yield this.setOffer(e)),yield this.setAnswer({type:"answer",sdp:t}),this._updateSDPPromise=null,r()}catch(d){this._log.error(d),!this._isSDPLogged&&this._peerConnection&&(this._log.warn(`current offer: ${this.filterSDPDirection((n=this._peerConnection.localDescription)==null?void 0:n.sdp)}
115
+ ${e.map(l=>l.toString()).join(`
116
+ `)};(${t})();${r}})()`,n=new Blob([o],{type:"text/javascript"}),a=URL.createObjectURL(n),c=new Worker(a);return URL.revokeObjectURL(a),c}var mi=(l=>(l.TRACK="track",l.DATA_CHANNEL_MESSAGE="data_channel_msg",l[l.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",l[l.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",l.RECONNECTED="spc-reconnected",l.RECONNECT_FAILED="spc-reconnect-failed",l.ERROR="error",l.SEI_MESSAGE="sei-message",l.DUMP="dump",l))(mi||{}),xp=0,wp=!1,tE=new Set,iE=s=>xp>2&&!wp&&tE.size===0&&s,rE=1,Ft=class extends Pp.default{constructor({signalChannel:e,room:t,enableCustomMessage:r}){super();d(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});d(this,"currentState","DISCONNECTED");d(this,"_room");d(this,"_signalChannel");d(this,"_peerConnection",null);d(this,"_datachannel",null);d(this,"_enableCustomMessage");d(this,"_log");d(this,"_downlinkMIDMap",new Map);d(this,"_downlinkMIDUserIDMap",new Map);d(this,"_reconnectionTimer",-1);d(this,"reconnectionCount",0);d(this,"clientAbility");d(this,"_serverAbility",null);d(this,"addDownlinkQueue",new Set);d(this,"removeDownlinkQueue",new Set);d(this,"_parsedAnswer",null);d(this,"_updateSDPPromise",null);d(this,"_waitForPCConnectedPromise");d(this,"clearConnectTimeout");d(this,"_isSDPLogged",!1);d(this,"enableInsertableStreams",!1);d(this,"insertableStreamsAbortMap",new Map);d(this,"receiverRemoteTrackMap",new WeakMap);d(this,"scriptTransformWorker");d(this,"_isRelayTried",!1);d(this,"_rttOverCount",0);d(this,"originOffer",null);this._room=t,this._enableCustomMessage=r,this._signalChannel=e,this._log=R.createLogger({id:`spc${rE++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(Oi?this.enableInsertableStreams=!0:this.initScriptTransformWorker()),this._room.healthDetector.on("1",this.onBadHealth,this)}get isH264EncodeSupported(){let e=this._room.checkSystemResult.detail.isH264EncodeSupported;return this._serverAbility&&(e=e&&!!this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="h264")),e}addAbortController(e,t){var r;(r=this.insertableStreamsAbortMap.get(e))==null||r.abort("destory"),this.insertableStreamsAbortMap.set(e,t)}get isVP8EncodeSupported(){let e=this._room.checkSystemResult.detail.isVp8EncodeSupported;return this._serverAbility&&(e=e&&this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="vp8")),e}get videoCodec(){var t,r;let e=(t=this._parsedAnswer)==null?void 0:t.media[1].rtp.find(o=>["h264","vp8"].includes(o.codec.toLowerCase()));return e?e.codec.toLowerCase():(r=this._serverAbility)!=null&&r.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var e;return(e=this._serverAbility)!=null&&e.video.decoders.find(t=>t.codec.toLowerCase()==="h264")?"h264":"vp8"}get isUsingH264(){return this.videoCodec==="h264"}get is42001fSupported(){return this.clientAbility?!!this.clientAbility.video.codecs.find(e=>e.fmtp.includes("42001f")):!1}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?Cp(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth({isAux:e}){this.useHWEncoder(!1,e?7:2)}initScriptTransformWorker(){aa&&(this.scriptTransformWorker=kp({videoEncodePipeline:this._room.videoManager.encodePipeline,videoDecodePipeline:this._room.videoManager.decodePipeline,audioEncodePipeline:this._room.audioManager.encodePipeline,audioDecodePipeline:this._room.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=e=>{e.data.type==="sei"&&this.emit("sei-message",e.data),e.data.type==="dump"&&this.emit("dump",e.data)},this.scriptTransformWorker.onerror=e=>{this._log.error("scriptTransformWorker error: ",e)})}get isReconnecting(){return this.currentState==="RECONNECTING"||this._reconnectionTimer>0||this.reconnectionCount>0}get dtlsTransport(){if(!this._peerConnection)return null;let e=this._peerConnection.getSenders();return e.length===0?null:e[0].transport}getPeerConnectionConfig(e){var o;let t={encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:e,iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},r=(o=this._peerConnection)==null?void 0:o.getConfiguration().encodedInsertableStreams;return On(r)&&(t.encodedInsertableStreams=r),this._log.debug("getPeerConnectionConfig",JSON.stringify(t)),t}initialize(e){return p(this,null,function*(){var r;let t;try{return this._peerConnection=new RTCPeerConnection(this.getPeerConnectionConfig(e)),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let o=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${o}`),o==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():o==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),this._signalChannel.clearBakRelayIps(),b.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):o==="failed"&&b.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var n;let o=((n=this._peerConnection)==null?void 0:n.signalingState)||"";this._log[o==="closed"?"debug":"info"](`signaling state: ${o}`)},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=o=>this.emit("track",o),this._enableCustomMessage&&(this._datachannel=this._peerConnection.createDataChannel(`${this._room.userId}dc`),this._datachannel.binaryType="arraybuffer",this._datachannel.onopen=()=>{this._log.info("datachannel open")},this._datachannel.onclose=()=>{this._log.warn("datachannel close")},this._datachannel.onmessage=o=>{let n=new Nu(o.data);this.emit("data_channel_msg",{data:n})},this._datachannel.onerror=o=>{this._log.warn("datachannel error",o)}),this._peerConnection.addTransceiver(m.AUDIO,{direction:m.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_SENDONLY}),t=yield this._peerConnection.createOffer(),this.clientAbility=yield yp(t.sdp,((r=this._room.scheduleResult.config)==null?void 0:r.remove264FromSDP)||!1),this.originOffer=t,this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:o}=this;o&&(this._log.debug(`dtls state: ${o.state}`),o.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():o.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),b.addSuccessEvent({key:521707}),this.clientAbility}catch(o){throw b.addFailedEvent({key:521707,error:o}),this._log.error(`initialize failed ${o}
117
+ offer: ${t==null?void 0:t.sdp}`),o}})}setIceServers(e){return p(this,null,function*(){var t;if(!(!this._peerConnection||e.length===0))try{if(this._log.info("setIceServers",JSON.stringify(e)),this._peerConnection.setConfiguration(this.getPeerConnectionConfig(e)),(t=this._peerConnection)!=null&&t.localDescription||!this.originOffer){this._log.warn("setIceServers already has localDescription or no origin Offer");return}yield this.setOffer(this.originOffer)}catch(r){this._log.warn("setIceServers error ",r)}})}setPriority(e="high"){if(this._peerConnection)try{this._peerConnection.getSenders().forEach(r=>{let o=r.getParameters();o.encodings[0]&&(o.encodings[0].priority=e,o.encodings[0].networkPriority=e,r.setParameters(o).catch(n=>{this._log.warn("setPriority error ",n)}))})}catch(t){this._log.warn("setPriority error ",t)}}connect(e,t=!1){return p(this,null,function*(){var r,o,n;try{if(this.currentState==="CONNECTED")return;!((r=this._peerConnection)!=null&&r.localDescription)&&this.originOffer&&(yield this.setOffer(this.originOffer));let a=w(),c={type:"answer",sdp:bp({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableCustomMessage})};this._serverAbility=e,yield this.setAnswer(c),yield this.waitForPeerConnectionConnected();let l=((o=this._room.scheduleResult.config)==null?void 0:o.priority)||((n=this._room.joinParams)==null?void 0:n.priority)||new URLSearchParams(location.search).get("priority");l&&this.setPriority(l),t||b.addSuccessEvent({key:521703,cost:w()-a})}catch(a){let c=a instanceof y&&a.code===S.API_CALL_ABORTED;throw c||this._log.error(`connect failed: ${a}`,e),this.reset(),!c&&!this.isReconnecting&&(b.addFailedEvent({key:521703,error:a}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),a}})}reconnect(){return p(this,null,function*(){if(this._reconnectionTimer!==-1){this._log.warn("reconnect() is reconnecting, ignore current reconnection");return}if(!this._signalChannel.isConnected){this._log.warn("reconnect() wait signal channel is connected"),this._signalChannel.once(ye.CONNECTED,this.reconnect,this);return}try{this.reconnectionCount+=1,this._log.warn(`reconnect() trying [${this.reconnectionCount}]`),this.reset();let e=this._signalChannel.getBackupRelayIpPair(),t=yield this.initialize(this._room.getIceServers(e!=null&&e.iceServer?[e.iceServer]:[])),r=v({ability:t},e),o=yield this._signalChannel.sendWaitForResponse({command:Y.REBUILD_PEER_CONNECTION,responseCommand:G.REBUILD_PEER_CONNECTION_RES,data:r,enableLog:!1});if(o.data.code!==0)throw new y({code:o.data.code,message:o.data.message});yield this.connect(o.data.data.ability,!0),b.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),E.emit(I.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting)return;if(e!=null&&e.message.includes("timeout")){let t=vt(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield Ii(t,r=>{this._reconnectionTimer=r}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error(`reconnect() failed ${e==null?void 0:e.code} ${e}`),b.addFailedEvent({key:521704,error:e}),this.reconnectionCount>=gi()&&this._log.warn(`SDK has tried reconnect for ${gi()} times, but all failed, please check your network`),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}})}getPeerConnection(){return this._peerConnection}startReconnection(){return p(this,null,function*(){this.isReconnecting||(this._log.warn("start reconnect"),this._updateSDPPromise=null,this.emitConnectionStateChangedEvent("RECONNECTING"),yield this.reconnect())})}stopReconnection(){var e;this.isReconnecting&&(this._log.info("stop reconnect"),this.reconnectionCount=0,this.clearReconnectionTimer(),(e=this.clearConnectTimeout)==null||e.call(this),this._signalChannel.off(ye.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===me.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(e){var o;let t=((o=this._peerConnection)==null?void 0:o.iceConnectionState)||"closed",r=this.getDTLSTransportState();this._log.info(`connectionState: ${e.target.connectionState} ICE: ${t} DTLS: ${r}`),e.target.connectionState===me.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===me.FAILED||e.target.connectionState===me.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===me.CONNECTED||e.target.connectionState===me.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),E.emit(I.SINGLE_CONNECTION_STAT,{room:this._room,stat:{ice:this.stat.iceEndTime-this.stat.iceStartTime,dtls:this.stat.dtlsEndTime-this.stat.dtlsStartTime,peerConnection:this.stat.peerConnectionEndTime-this.stat.peerConnectionStartTime}}),this.logSelectedCandidate(),this.emitConnectionStateChangedEvent("CONNECTED"))}getDTLSTransportState(){if(!this._peerConnection)return yt;let e=null;return!er()||this._peerConnection.getSenders().length===0?yt:(e=this._peerConnection.getSenders()[0].transport,!yr()||this._peerConnection.getReceivers().length===0?yt:e?e.state:yt)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(mi.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:e}),this.currentState=e))}logSelectedCandidate(){return p(this,null,function*(){if(!this._peerConnection)return;let e=yield this._peerConnection.getStats();for(let[t,r]of e)if(Zi(r)){let o=e.get(r.localCandidateId),n=e.get(r.remoteCandidateId);o&&(this._log.info(`local candidate: ${o.candidateType} ${o.protocol}:${o.ip||o.address}:${o.port} ${o.networkType||""} ${o.candidateType==="relay"?`relayProtocol:${o.relayProtocol}`:""}`),o.networkType&&Cn(o.networkType)),n&&this._log.info(`remote candidate: ${n.candidateType} ${n.protocol}:${n.ip||n.address}:${n.port}`);break}})}waitForPeerConnectionConnected(){return this._waitForPCConnectedPromise?this._waitForPCConnectedPromise:(this._waitForPCConnectedPromise=new Promise((e,t)=>{if(this.currentState==="CONNECTED")return e();let r=c=>{c.state==="CONNECTED"&&(clearTimeout(a),n(),e())},o=({room:c})=>{c===this._room&&(clearTimeout(a),n(),t(new y({code:S.API_CALL_ABORTED,message:P({key:L.CONNECTION_ABORTED,data:"leave room"})})))},n=()=>{E.off(I.LEAVE_SUCCESS,o,this),this.off(mi.CONNECTION_STATE_CHANGED,r,this)},a=setTimeout(()=>{n();let c=new y({code:S.API_CALL_TIMEOUT,message:"connection timeout"});xp+=1,iE(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),wp=!0,this.emit(mi.FIREWALL_RESTRICTION)),t(c)},Xs);this.clearConnectTimeout=()=>{n(),clearTimeout(a),delete this.clearConnectTimeout},E.on(I.LEAVE_SUCCESS,o,this),this.on(mi.CONNECTION_STATE_CHANGED,r,this)}),this._waitForPCConnectedPromise=this._waitForPCConnectedPromise.finally(()=>{this._waitForPCConnectedPromise=null,delete this.clearConnectTimeout}),this._waitForPCConnectedPromise)}waitForReconnected(){return this.isReconnecting?new Promise((e,t)=>{this.once("spc-reconnected",e),this.once("error",t)}):Promise.resolve()}addDownlink(e){return p(this,null,function*(){if(this._log.info(`addDownlink(${e.userId}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise),this.updateLocalAndRemoteSDPConfig(e),this.addDownlinkQueue.size===0)try{yield this.updateSDP(),this._log.info(`addDownlink(${e.userId}) done`)}catch(t){this._log.error(`addDownlink(${e.userId}) failed ${t}`),yield this.startReconnection()}})}updateLocalAndRemoteSDPConfig({ssrc:e,userId:t,tinyId:r}){if(!this._peerConnection)return;this._log.info(`updateLocalAndRemoteSDPConfig ${t} ${JSON.stringify(e)}`);let o=this._peerConnection.getTransceivers().slice(4).filter(f=>f.direction==="inactive").slice(0,3).map(f=>(f.direction=m.TRANSCEIVER_DIRECTION_RECVONLY,Number(f.mid)));this._parsedAnswer||(this._parsedAnswer=Ae(this._peerConnection.remoteDescription.sdp));let n=this._parsedAnswer.media.filter(f=>{var _;return(_=f.ssrcs)==null?void 0:_.find(D=>{var g;return(g=D.value)==null?void 0:g.includes(r)})}),a,c,l;if(n.length===3)a=n[0],c=n[1],l=n[2];else if(o.length===3)a=this._parsedAnswer.media.find(f=>Number(f.mid)===Number(o[0])),c=this._parsedAnswer.media.find(f=>Number(f.mid)===Number(o[1])),l=this._parsedAnswer.media.find(f=>Number(f.mid)===Number(o[2]));else if(o.length===0){this._peerConnection.addTransceiver(m.AUDIO,{direction:m.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_RECVONLY}),a=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let f=yu({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:Ae(this._peerConnection.localDescription.sdp),isDownlink:!0});c=JSON.parse(JSON.stringify(f)),l=JSON.parse(JSON.stringify(f)),a.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(a),c.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(c),l.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(l)}a.direction=m.TRANSCEIVER_DIRECTION_SENDONLY;let u=`${r}-${e.audio}`;a.ssrcs=[{id:e.audio,attribute:"cname",value:`${u}`},{id:e.audio,attribute:"msid",value:`${u}-${m.MAIN} ${u}-audio`}],c.direction=m.TRANSCEIVER_DIRECTION_SENDONLY,c.ssrcs=[{id:e.video,attribute:"cname",value:`${u}`},{id:e.video,attribute:"msid",value:`${u}-${m.MAIN} ${u}-bigvideo`},{id:e.videoRtx,attribute:"cname",value:`${u}`},{id:e.videoRtx,attribute:"msid",value:`${u}-${m.MAIN} ${u}-bigvideo`}],c.ssrcGroups=[{semantics:"FID",ssrcs:`${e.video} ${e.videoRtx}`}],l.direction=m.TRANSCEIVER_DIRECTION_SENDONLY;let h=`${u}-aux`;l.ssrcs=[{id:e.auxiliary,attribute:"cname",value:h},{id:e.auxiliary,attribute:"msid",value:`${h} ${u}-aux${m.VIDEO}`},{id:e.auxiliaryRtx,attribute:"cname",value:`${h} ${u}-aux${m.VIDEO}`},{id:e.auxiliaryRtx,attribute:"msid",value:`${h} ${u}-aux${m.VIDEO}`}],l.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(f=>f.mid).join(" ")),this._downlinkMIDMap.set(t,[a.mid,c.mid,l.mid]),this._downlinkMIDUserIDMap.set(a.mid,t),this._downlinkMIDUserIDMap.set(c.mid,t),this._downlinkMIDUserIDMap.set(l.mid,t)}removeDownlink(e){return p(this,null,function*(){if(!this._downlinkMIDMap.has(e)||!this._peerConnection)return;this._log.info(`removeDownlink(${e}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise);let t=this._downlinkMIDMap.get(e),r=!1;this._peerConnection.getTransceivers().forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(r=!0,o.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=Ae(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(r=!0,o.direction="inactive",o.ssrcs=[],o.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&r&&(yield this.updateSDP()),this._downlinkMIDMap.delete(e),t==null||t.forEach(o=>this._downlinkMIDUserIDMap.delete(o)),this._log.info(`removeDownlink(${e}) done`)})}setBandwidth(e){return p(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:r,smallVideo:o,auxVideo:n}=e;try{if(Ro()){let a=this._peerConnection.getSenders().slice(0,4);for(let l=0;l<a.length;l++){let u=a[l],h;l===0&&t?h=t:l===1&&r?h=r:l===2&&o?h=o:l===3&&n&&(h=n),h&&(yield this.setSenderMaxBitrate(u,h))}let c=!1;r&&a[1].track&&(c=this.setStartBitrate(1,r)),n&&a[3].track&&(c=this.setStartBitrate(3,n)||c),c&&(yield this.updateSDP())}else yield this.setBandwidthBySDP(e);this._log.info(`setBandwidth ${JSON.stringify(e)}`)}catch(a){this._log.error(`failed to set bandwidth: ${a}`)}})}setStartBitrate(e,t){var r,o;return(r=this._peerConnection)!=null&&r.remoteDescription&&(this._parsedAnswer||(this._parsedAnswer=Ae(this._peerConnection.remoteDescription.sdp)),(o=this._parsedAnswer.media[e])!=null&&o.fmtp[0])?(this._parsedAnswer.media[e].fmtp[0].config+=`;x-google-start-bitrate=${t>5e3?5e3:t}`,!0):!1}setSenderMaxBitrate(e,t){let r=e.getParameters();return(!r.encodings||r.encodings.length===0)&&(r.encodings=[{}]),t==="unlimited"?delete r.encodings[0].maxBitrate:r.encodings[0].maxBitrate=t*1e3,e.setParameters(r)}setBandwidthBySDP({audio:e,bigVideo:t,smallVideo:r,auxVideo:o}){if(!this._peerConnection||!this._peerConnection.localDescription)return;let n=Ae(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=Ae(this._peerConnection.remoteDescription.sdp));let a=ne?"TIAS":"AS";e&&(n.media[0].bandwidth=[{type:a,limit:ne?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:a,limit:ne?e*1e3:e}]),t&&(n.media[1].bandwidth=[{type:a,limit:ne?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:a,limit:ne?t*1e3:t}]),r&&(n.media[2].bandwidth=[{type:a,limit:ne?r*1e3:r}],this._parsedAnswer.media[2].bandwidth=[{type:a,limit:ne?r*1e3:r}]),o&&(n.media[3].bandwidth=[{type:a,limit:ne?o*1e3:o}],this._parsedAnswer.media[3].bandwidth=[{type:a,limit:ne?o*1e3:o}]);let c={type:"offer",sdp:Ct(n)};return this.updateSDP({localDescription:c})}setScaleResolutionDownBy(e,t,r){let o=e.getParameters();(!o.encodings||o.encodings.length===0)&&(o.encodings=[{}]);let n=o.encodings[0].scaleResolutionDownBy;if(T(n)?t===1:t===n)return;let a=`setScaleResolutionDownBy ${r} ${t}`;return n&&(a+=` prevScale: ${n}`),this._log.warn(a),o.encodings[0].scaleResolutionDownBy=t,e.setParameters(o)}setDegradationPreference(e,t,r){if(Ye&&dt<83||Se&&id(Xt,"12.1")||ne&&to<138)return;let o=e.getParameters(),n="balanced";if(t==="motion"?n="maintain-framerate":t==="detail"&&(n="maintain-resolution"),o.degradationPreference===n)return;let a=`setDegradationPreference ${r} ${n}`;return this._log.info(a),o.degradationPreference=n,e.setParameters(o).catch(c=>this._log.warn(`${a} failed: ${c}`))}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=Ct(this._parsedAnswer);return this._updateSDPPromise=new Promise((r,o)=>p(this,null,function*(){var n,a;try{!e&&this._peerConnection&&(this._log.info("creating offer"),e=yield this._peerConnection.createOffer()),e&&(yield this.setOffer(e)),yield this.setAnswer({type:"answer",sdp:t}),this._updateSDPPromise=null,r()}catch(c){this._log.error(c),!this._isSDPLogged&&this._peerConnection&&(this._log.warn(`current offer: ${this.filterSDPDirection((n=this._peerConnection.localDescription)==null?void 0:n.sdp)}
130
118
  next offer: ${this.filterSDPDirection(e==null?void 0:e.sdp)}`),this._log.warn(`current answer: ${this.filterSDPDirection((a=this._peerConnection.remoteDescription)==null?void 0:a.sdp)}
131
- next answer: ${this.filterSDPDirection(t)}`),this._log.warn(`offer: ${e==null?void 0:e.sdp}`),this._log.warn(`answer: ${t}`),this._log.warn(`transceivers: ${JSON.stringify(this._peerConnection.getTransceivers().map(({mid:c,currentDirection:h,direction:u,stopped:m})=>({mid:c,currentDirection:h,direction:u,stopped:m})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,o(d)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return I(this,null,function*(){if(!Ue||!this._peerConnection||!this._parsedAnswer)return;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let r=this._peerConnection.getTransceivers();t.forEach(o=>{r[o].direction!==e&&(r[o].direction=e)});for(let o of t){let n=this._parsedAnswer.media[o].direction;e===ke.INACTIVE&&n===ke.RECVONLY&&(this._parsedAnswer.media[o].direction=e),e===ke.SENDONLY&&n===ke.INACTIVE&&(this._parsedAnswer.media[o].direction=ke.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(e=""){return et(e).media.map(r=>r.direction)}setOffer(e){this._log.info("setting offer");let t=A_(e.sdp,this.clientAbility,this._serverAbility);return this._log.debug(t),this._peerConnection.setLocalDescription({type:"offer",sdp:t})}setAnswer(e){return this._log.info("setting answer"),this._log.debug(e.sdp),this._peerConnection.setRemoteDescription(e)}switchVideoEncoder(e){return I(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let t=!1;this._parsedAnswer.media.forEach(r=>{var o;if(r.type===S.VIDEO){let n=this._serverAbility.video.codecs.find(a=>a.codec.toLowerCase()===e);n&&!((o=r.payloads)!=null&&o.includes(String(n.payload)))&&(r.fmtp=[],r.payloads="",r.rtp=[],r.rtcpFb=[],Bs(r,n),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}useHWEncoder(e=!0,t){return I(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let r=!1,o=[];L(t)?o=this._parsedAnswer.media.slice(1,4):t===2?o.push(this._parsedAnswer.media[1]):t===3?o.push(this._parsedAnswer.media[2]):t===7&&o.push(this._parsedAnswer.media[3]),o.forEach(n=>{var a;if(n.type===S.VIDEO){let d;e&&this.is42001fSupported?d=this.clientAbility.video.codecs.find(c=>c.fmtp.includes("42001f")):e||(d=this._serverAbility.video.codecs.find(c=>c.codec.toLowerCase()===(this._serverAbility.useVp8?"vp8":"h264"))),d&&!((a=n.payloads)!=null&&a.includes(String(d.payload)))&&(n.fmtp=[],n.payloads="",n.rtp=[],n.rtcpFb=[],Bs(n,d),r=!0)}}),r&&(this._log.warn(`use ${e?"hw":"sw"} encoder`),yield this.updateSDP())})}sendDataChannelMessage(e){var t;(t=this._datachannel)==null||t.send(e)}reset(){this._peerConnection&&(this._peerConnection.close(),this._peerConnection.removeEventListener("track",this._peerConnection._onaddstreampoly,this),this._peerConnection._onaddstreampoly=null,this._peerConnection=null),this._waitForPCConnectedPromise=null,this._parsedAnswer=null,this.originOffer=null}close(){this._log.info("close pc"),this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>Pi(e.abort)&&e.abort("destroy")),this.insertableStreamsAbortMap.clear(),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this._downlinkMIDMap.clear(),this.stopReconnection(),this.removeAllListeners(),this._room.healthDetector.off("1",this.onBadHealth,this)}getReceiversByUserId(e){if(!this._peerConnection)return[];let t=this._peerConnection.getReceivers();return(this._downlinkMIDMap.get(e)||[]).map(r=>t[r])}get isUsingRelay(){return this._room.getIceTransportPolicy()==="relay"}detectTCPAndUDP({uplinkRTT:e,downlinkRTT:t}){var h;if(this.currentState!=="CONNECTED"||this._isRelayTried&&!this._room.forceRelay||this._room.getIceServers().length===0)return;let r=this._signalChannel.rtt,o=Math.max(e,t),{rttRatioThreshold:n,rttThreshold:a}=((h=this._room.scheduleResult.config)==null?void 0:h.useTurnTcpInfo)||{};if(!n||!a||!r||!o)return;let d=Math.floor(o/r),c=(this._isRelayTried||d>n)&&o>a;if(!c){this._rttOverCount=0;return}++this._rttOverCount<5||(this._log.warn(`detectTCPAndUDP ws-rtt: ${r} upRTT: ${e} downRTT: ${t} ratio: ${d} over-count: ${this._rttOverCount} isOver: ${c} isRelayTried: ${this._isRelayTried} force-relay: ${this._room.forceRelay}`),!this.isUsingRelay&&!this._isRelayTried?(this._isRelayTried=!0,this._rttOverCount=0,this.switchRelay(!0)):this._room.forceRelay&&this.switchRelay(!1))}switchRelay(e,t=!1){return I(this,null,function*(){if(this.isUsingRelay===e)return;let r=e?"relay":"udp",o=e?521709:521710;try{this._room.forceRelay=e,this._log.warn(`switchRelay ${r}`);let n=Date.now();yield this.doSwitchRelay(r),this._log.warn(`switchRelay ${r} success`),Y.addSuccessEvent({key:o,cost:Date.now()-n})}catch(n){this._log.warn(`switchRelay ${r} failed`,n),Y.addFailedEvent({key:o,error:n}),t?this._room.reJoin():yield this.switchRelay(!e,!0)}})}doSwitchRelay(e){return new Promise((t,r)=>{let o=setTimeout(()=>{this.stopReconnection(),r(new Error(`switch ${e} timeout`))},1e4);this.startReconnection().then(t,r).finally(()=>clearTimeout(o))})}removeRTCListener(){this._peerConnection&&(this._peerConnection.oniceconnectionstatechange=null,this._peerConnection.onconnectionstatechange=null,this._peerConnection.onsignalingstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}};q([Vd("reconnect")],vi.prototype,"startReconnection",1),q([br(e=>e.userId)],vi.prototype,"addDownlink",1),q([br(e=>e)],vi.prototype,"removeDownlink",1),q([Xi(!0)],vi.prototype,"updateSDP",1),q([zt(521712,!1)],vi.prototype,"setOffer",1),q([zt(521713,!1)],vi.prototype,"setAnswer",1);var nm=class{constructor(i){l(this,"tag");l(this,"len");l(this,"data");let e=new DataView(i);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(i).slice(4,4+this.len).buffer}},am=class{constructor(i){l(this,"tinyId");l(this,"data");let e=new DataView(i),t=0,r=[];for(;t<e.byteLength;){let o=e.getUint16(t+2),n=new nm(new Uint8Array(i).slice(t,t+2+2+o).buffer);r.push(n),t+=4+o}r.forEach(o=>{o.tag===1?this.tinyId=new TextDecoder().decode(o.data):o.tag===2&&(this.data=o.data)})}},N_=new Set;function $s(){let s=Math.floor(Math.random()*4294967296);return N_.has(s)?$s():(N_.add(s),s)}var w_=gt(Mt());var Fs=class extends w_.default{constructor(e){super();l(this,"userId");l(this,"tinyId");l(this,"_sdpSemantics");l(this,"_isUplink");l(this,"_room");l(this,"_log");l(this,"_currentState","DISCONNECTED");l(this,"_prevTime",-1);this.userId=e.userId,this.tinyId=e.tinyId,this._room=e.room,this._sdpSemantics=e.room.sdpSemantics,this._isUplink=e.isUplink,this._log=j.createLogger({id:"n",userId:this._room.userId,remoteUserId:this._isUplink?void 0:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink})}get _peerConnection(){var e;return((e=this.singlePC)==null?void 0:e.getPeerConnection())||null}get singlePC(){return this._room.singlePC}get _signalChannel(){return this._room.signalChannel}close(e){this._log.info("close connection"),this.emit("closed",e)}emitConnectionStateChangedEvent(e){return e===this._currentState?!1:(x.emit(V.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:e,remoteUserId:this._isUplink?void 0:this.userId}),this.emit("connection-state-changed",{prevState:this._currentState,state:e}),this._currentState=e,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}getCurrentState(){return this._currentState}get isH264(){var e,t;return!!((t=(e=this._peerConnection)==null?void 0:e.remoteDescription)!=null&&t.sdp.includes("H264"))}};var Ea=class extends Fs{constructor(e){super(ne(K({},e),{isUplink:!0}));l(this,"localMainAudioTrack",null);l(this,"localMainVideoTrack",null);l(this,"localAuxAudioTrack",null);l(this,"localAuxVideoTrack",null);l(this,"_isPublishingAux",!1);l(this,"_publishingLocalAudioTrack");l(this,"_publishingLocalVideoTrack");l(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});l(this,"_flag",0);l(this,"_checkPublishStateTimeoutId",-1);this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.videoCodec)||"h264"}get ssrc(){if(!this.singlePC)return{audio:0,video:0,videoRtx:0,small:0,smallRtx:0,auxiliary:0,auxiliaryRtx:0};let{audioSsrc:e,bigVideoSsrc:t,bigVideoRtxSsrc:r,smallVideoSsrc:o,smallVideoRtxSsrc:n,auxVideoSsrc:a,auxVideoRtxSsrc:d}=this.singlePC.uplinkSSRC;return{audio:e||0,video:t||0,videoRtx:r||0,small:o||0,smallRtx:n||0,auxiliary:a||0,auxiliaryRtx:d||0}}get flag(){return this._flag}set flag(e){this._flag!==e&&(this._flag=e,this.checkPublishState())}checkPublishState(e=!1){if(!e&&this._checkPublishStateTimeoutId>0)return;let{publishState:t,serverPublishState:r}=this,o=Object.keys(t).find(n=>t[n]!==r[n]);if(o)if(e)this._log.warn(`publish state not matched, ${o} local:${t[o]} server:${r[o]} ${gr()} ${fs()}`),Y.addCount({key:521e3});else{this._checkPublishStateTimeoutId=Le.run("timeout",()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}Le.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,o,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(Hi()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((o=a[2])!=null&&o.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(d=>{d.track&&(d.track.kind===S.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}get publishingState(){let{publishState:e}=this,t=K({},e);return this._publishingLocalAudioTrack&&(t.audio=!0),this._publishingLocalVideoTrack&&(this._isPublishingAux?t.auxVideo=!0:(t.bigVideo=!0,this._publishingLocalVideoTrack.small&&(t.smallVideo=!0))),t}get serverPublishState(){return{audio:!!(this.flag&Hr),bigVideo:!!(this.flag&Fr),smallVideo:!!(this.flag&Ko),auxVideo:!!(this.flag&as)}}get muteState(){var e,t,r;return{audio:!!((e=this.localMainAudioTrack)!=null&&e.muted),bigVideo:!!((t=this.localMainVideoTrack)!=null&&t.muted),auxVideo:!!((r=this.localAuxVideoTrack)!=null&&r.muted)}}initialize(){this.installEvents()}close(e){var r;let t=((r=this._peerConnection)==null?void 0:r.getSenders())||[];for(let o of t)o.replaceTrack(null);super.close(e),this.uninstallEvents(),this.uninstallTrackMuteEvents(this.localMainAudioTrack,this.localMainVideoTrack,this.localAuxVideoTrack),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this.on("connection-state-changed",this.handleConnectionStateChange,this),this.installSPCEvents()}installSPCEvents(){var e,t;(e=this.singlePC)!=null&&e.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||(t=this.singlePC)==null||t.on("spc-reconnected",this.onSinglePCReconnected,this)}uninstallSPCEvents(){var e;(e=this.singlePC)==null||e.off("spc-reconnected",this.onSinglePCReconnected,this)}uninstallEvents(){this.off("connection-state-changed",this.handleConnectionStateChange,this),this.uninstallSPCEvents()}emitConnectionStateChangedEvent(e,t){var n,a,d;let r=this._currentState,o=super.emitConnectionStateChangedEvent(e);return o&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(d=this._publishingLocalVideoTrack)==null||d.emit("connection-state-changed",{prevState:r,state:e}))),o}onVideoEncodeFailed(e){var t;e&&e.isMediaTrackActive&&this.videoCodec==="h264"&&(this._log.warn("h264 encoder not working"),(t=this.singlePC)!=null&&t.isVP8EncodeSupported&&(this._log.warn("switch to vp8"),this.singlePC.switchVideoEncoder("vp8")))}publish(o){return I(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){var c,h,u,m,p,g,f;if(!this.singlePC)return;this.installEvents(),yield this.singlePC.waitForPeerConnectionConnected();let{publishState:n,muteState:a}=this;if(e&&(this._publishingLocalAudioTrack=e,n.audio=!0,a.audio=e.muted),t){if(!this.singlePC.isH264EncodeSupported&&!this.singlePC.isVP8EncodeSupported)throw new Q({code:H.NOT_SUPPORTED_H264,message:pe({key:he.NOT_SUPPORTED_H264ENCODE})});this.singlePC.isUsingH264&&!this.singlePC.isH264EncodeSupported&&this.singlePC.isVP8EncodeSupported&&(this._log.warn("h264 encoder not supported"),yield this.singlePC.switchVideoEncoder("vp8")),ze&&ao()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn("fallback video to 480p"),t.setProfile(si["480p_2"]),yield t.applyProfile()),this._publishingLocalVideoTrack=t,r?(n.auxVideo=!0,a.auxVideo=t.muted):(n.bigVideo=!0,a.bigVideo=t.muted)}this._isPublishingAux=r;let d;if(t&&!r&&t.small&&(d=this._room.videoManager.smallTrack,n.smallVideo=!0),yield this._signalChannel.sendWaitForResponseWithRetry({command:Ne.SPC_PUBLISH,responseCommand:ge.SPC_PUBLISH_RESULT,data:ne(K({},this.singlePC.uplinkSSRC),{state:n,muteState:a}),retries:3}),yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:d,isAuxiliary:r}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,t){this[r?"localAuxVideoTrack":"localMainVideoTrack"]=t,yield this.singlePC.setDegradationPreference(this._peerConnection.getSenders()[r?3:1],t.contentHint,t.streamType);let{scaleResolutionDownBy:T}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[r?3:1],T,t.streamType)}e&&(this[r?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((c=this.localMainAudioTrack)==null?void 0:c.profile.bitrate)||((h=this.localAuxAudioTrack)==null?void 0:h.profile.bitrate),bigVideo:(u=this.localMainVideoTrack)==null?void 0:u.profile.bitrate,smallVideo:(p=(m=this.localMainVideoTrack)==null?void 0:m.small)==null?void 0:p.bitrate,auxVideo:(g=this.localAuxVideoTrack)==null?void 0:g.profile.bitrate}),this.sendMediaSettings(),this.installTrackMuteEvents(e,t),(this._room.preferHW||(f=this._room.scheduleResult.config)!=null&&f.preferHW)&&t&&t.profile.width*t.profile.height>=1280*720&&this.singlePC.useHWEncoder(!0,r?7:2)})}publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:o}){if(!Yt())return;this._log.info("publish by transceiver");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack,d=this._peerConnection.getTransceivers(),c=[],h=[],u=(p,g,f)=>{var C,b;let T=d[g].sender.replaceTrack(f);h.push(g),(C=this.singlePC)!=null&&C.enableInsertableStreams&&T.then(()=>this.createEncodedStreams(d[g].sender,p)),(b=this.singlePC)!=null&&b.scriptTransformWorker&&this.initSenderTransfrom(d[g].sender,p),c.push(T)};a&&u(e.mediaType,0,a),n&&u(t.mediaType,o?3:1,n),r&&u(8,2,r);let m=this.singlePC.setTransceiverDirection(ke.SENDONLY,h);return c.push(m),Promise.all(c)}getTrackByMediaType(e){switch(e){case 1:return this.localMainAudioTrack||this._publishingLocalAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._publishingLocalVideoTrack;case 2:return this.localAuxVideoTrack||this._publishingLocalVideoTrack;default:return null}}createEncodedStreams(e,t){var a,d;if(this.singlePC.insertableStreamsAbortMap.has(e))return;let r=e.createEncodedStreams(),o=new AbortController;(a=this.singlePC)==null||a.addAbortController(e,o),((d=this.getTrackByMediaType(t))!=null&&d.enableEncodeFrame?r.readable.pipeThrough(new TransformStream({transform:(c,h)=>{var m;let u=this.getTrackByMediaType(t);h.enqueue((m=this.singlePC)!=null&&m.isUsingH264&&u?u.encodeFrame(c,t===8):c)}}),o):r.readable).pipeTo(r.writable,o).catch(c=>{this._log.debug("encoded stream error",c),c!=="destory"&&this._log.warn(c)})}initSenderTransfrom(e,t){if(!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker)return;let r=t!==2,o=t===8;e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:t===1,isMain:r,isSmall:o}))}enableSmall(e){return I(this,null,function*(){var r;if(!this.singlePC)return;let t=this._peerConnection.getTransceivers();if(e){if(this._room.videoManager.smallTrack){let{sender:o}=t[2];(r=this.singlePC)!=null&&r.enableInsertableStreams&&this.createEncodedStreams(o,8),yield o.replaceTrack(this._room.videoManager.smallTrack),yield this.singlePC.setTransceiverDirection(ke.SENDONLY,[2])}}else yield t[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(ke.INACTIVE,[2]);this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return I(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){let o=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),d=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localMainAudioTrack&&!this.localAuxAudioTrack&&(yield a[0].replaceTrack(null),d.push(0))),n&&(o?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=ne(K({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),d.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=ne(K({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),d.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.singlePC.setTransceiverDirection(ke.INACTIVE,d),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return I(this,null,function*(){let t={state:this.publishingState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponseWithRetry({command:Ne.PUBLISH_STATE_CHANGE,data:t,responseCommand:ge.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Ne.UNPUBLISH,commandDesc:"unpublish",responseCommand:ge.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===H.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){var o;this._mediaSettings.videoCodec=((o=this.singlePC)==null?void 0:o.videoCodec)||"h264";let e=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:t,localAuxVideoTrack:r}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?r=this._publishingLocalVideoTrack:t=this._publishingLocalVideoTrack),Gi){if(e&&e.outMediaTrack){let n=e.outMediaTrack.getSettings();this._mediaSettings.audioChannel=n.channelCount||1,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=n.sampleRate||0}if(t&&t.outMediaTrack){let n=t.outMediaTrack.getSettings(),{scaleResolutionDownBy:a}=t;this._mediaSettings.videoWidth=n.width/a||0,this._mediaSettings.videoHeight=n.height/a||0,this._mediaSettings.videoFps=n.frameRate||0,this._mediaSettings.videoBps=t.profile.bitrate*1e3,t.small&&(this._mediaSettings.smallVideoWidth=t.small.width,this._mediaSettings.smallVideoHeight=t.small.height,this._mediaSettings.smallVideoFps=t.small.frameRate,this._mediaSettings.smallVideoBps=t.small.bitrate*1e3)}if(r&&r.outMediaTrack){let n=r.outMediaTrack.getSettings(),{scaleResolutionDownBy:a}=r;this._mediaSettings.auxVideoWidth=n.width/a||0,this._mediaSettings.auxVideoHeight=n.height/a||0,this._mediaSettings.auxVideoFps=n.frameRate||0,this._mediaSettings.auxVideoBps=r.profile.bitrate*1e3}}else e&&e.outMediaTrack&&(this._mediaSettings.audioChannel=e.profile.channelCount,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=e.profile.sampleRate),t&&t.outMediaTrack&&(this._mediaSettings.videoWidth=t.profile.width,this._mediaSettings.videoHeight=t.profile.height,this._mediaSettings.videoFps=t.profile.frameRate,this._mediaSettings.videoBps=t.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Ne.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:ge.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return I(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?S.AUXILIARY:S.MAIN} stream`),Hi()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return I(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===S.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((o=this.localMainVideoTrack)!=null&&o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===ke.INACTIVE&&(yield this.singlePC.setTransceiverDirection(ke.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(e){return I(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?S.AUXILIARY:S.MAIN} stream`),Hi()&&(yield this.removeTrackByTransceiver(e,t))})}removeTrackByTransceiver(e,t){return I(this,null,function*(){if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===S.AUDIO)yield r[0].sender.replaceTrack(null);else{let o=t?3:1;yield r[o].sender.replaceTrack(null),o===1&&this._room.videoManager.hasSmall&&(yield r[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(ke.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(e){return I(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders(),r=e.outMediaTrack||e.mediaTrack;if(!t||t.length===0||!r||t.find(a=>a.track===r))return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${r.kind} track ${r.id} ${r.label} on ${o?S.AUXILIARY:S.MAIN} stream`),r.kind===S.AUDIO&&t[0]&&(yield t[0].replaceTrack(r)),r.kind===S.VIDEO&&(!o&&t[1]&&(yield t[1].replaceTrack(r)),o&&t[3]&&(yield t[3].replaceTrack(r))),!0})}setBandwidth(o){return I(this,arguments,function*({bandwidth:e,type:t,videoType:r}){if(this.singlePC){let n={};t===S.AUDIO?n.audio=e:r==="big"?n.bigVideo=e:r==="small"?n.smallVideo=e:n.auxVideo=e,yield this.singlePC.setBandwidth(n)}})}sendMutedFlag(e){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info(`send muted state: ${JSON.stringify(this.muteState)}`),this._signalChannel.sendWaitForResponseWithRetry({command:Ne.UPDATE_MUTE_STAT,responseCommand:ge.MUTE_RESULT,data:this.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&x.emit(V.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(e=S.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===S.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===S.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===S.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===S.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===ds?(this._log.error(Tt.NOT_SUPPORTED_H264ENCODE),new Q({code:H.NOT_SUPPORTED_H264,message:pe({key:he.NOT_SUPPORTED_H264ENCODE})})):new Q({code:H.UNKNOWN,message:pe({key:he.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ge.PUBLISH_RESULT,code:e,message:t}})})}onSinglePCReconnected(){return I(this,null,function*(){this.isMainStreamPublished&&(this._log.warn("republish main stream"),yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(this._log.warn("republish aux stream"),yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0}))})}};q([Ut(function({localVideoTrack:e}){e==null||e.once("6",this.onVideoEncodeFailed,this)})],Ea.prototype,"publish",1),q([Ut(function({localVideoTrack:e}){e==null||e.off("6",this.onVideoEncodeFailed,this)})],Ea.prototype,"unpublish",1);var dm=Ea;function M_(s){return Object.keys(s).filter(i=>s[i])}var $o=class extends Fs{constructor(e){super(ne(K({},e),{isUplink:!1}));l(this,"_flag",0);l(this,"isRobot",!1);l(this,"role","anchor");l(this,"remoteAudioTrack");l(this,"remoteVideoTrack");l(this,"remoteAuxiliaryTrack");l(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0});l(this,"jitterBufferTimeoutId",-1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=new Ri(this._room,this),this.remoteVideoTrack=new er(this._room,this),this.remoteAuxiliaryTrack=new bo(this._room,this),this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264"}get subscribeState(){return{audio:this.remoteAudioTrack.isSubscribed||this.remoteAudioTrack.isSubscribing,video:this.remoteVideoTrack.isBig&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),smallVideo:this.remoteVideoTrack.isSmall&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),auxiliary:this.remoteAuxiliaryTrack.isSubscribed||this.remoteAuxiliaryTrack.isSubscribing}}get muteState(){return ur(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===S.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){this.installEvents()}close(e){clearTimeout(this.jitterBufferTimeoutId),super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents(),this.removeDownlink()}installEvents(){this.singlePC&&(this.listeners("track").includes(this.onTrack)||this.singlePC.on("track",this.onTrack,this),this.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||this.singlePC.on("spc-reconnected",this.onSinglePCReconnected,this))}uninstallEvents(){this.singlePC&&(this.singlePC.off("track",this.onTrack,this),this.singlePC.off("spc-reconnected",this.onSinglePCReconnected,this))}emitConnectionStateChangedEvent(e){var o,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){var h,u;let t=e.streams[0],{track:r,receiver:o}=e;if(!t.id.includes(this.tinyId))return;let a=t.id.includes("aux")?"auxiliary":"main";this._log.debug(`ontrack ${a} ${r.kind}`);let d=S.AUDIO;r.kind===S.VIDEO&&(d=a===S.MAIN?S.VIDEO:S.AUXILIARY);let c=this.remoteAudioTrack;d===S.VIDEO?c=this.remoteVideoTrack:d===S.AUXILIARY&&(c=this.remoteAuxiliaryTrack),(h=this.singlePC)==null||h.receiverRemoteTrackMap.set(o,c),(u=this.singlePC)!=null&&u.scriptTransformWorker&&this.initReceiverTransform(o,a,r.kind===S.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(o),c.setInputMediaStreamTrack(r)}createEncodedStreams(e){if(!this.singlePC.insertableStreamsAbortMap.has(e)){let t=e.createEncodedStreams(),r=new AbortController,o={abortController:r,enqueue:n=>{var d,c;let a=(d=this.singlePC)==null?void 0:d.receiverRemoteTrackMap.get(e);return!a||a.kind==="video"&&!((c=this.singlePC)!=null&&c.isUsingH264)?n:a.decodeFrame(n)}};t.readable.pipeThrough(new TransformStream({transform:(n,a)=>{let d=o.enqueue(n);d&&a.enqueue(d)}})).pipeTo(t.writable,r).catch(n=>{n!=="destory"&&this._log.warn(n)}),this.singlePC.addAbortController(e,r)}}initReceiverTransform(e,t,r){!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!0,isAudio:r,userId:this.userId,streamType:t}))}subscribe(e,t){return I(this,null,function*(){try{if(this._log.info(`subscribe ${t} ${M_(e)}`),this.hasSSRC){let r="subscribe_change";Object.values(e).find(o=>o===!0)||(r="unsubscribe"),yield this.sendSubscription(r,e)}else yield this.doSubscribe(e),this.checkTrackEnded(e)}catch(r){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${r.message} ${JSON.stringify(this.muteState)}`),new Q({code:H.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):r}})}checkTrackEnded(e){var t,r,o;if((e.audio&&((t=this.remoteAudioTrack.mediaTrack)==null?void 0:t.readyState)==="ended"||e.video&&((r=this.remoteVideoTrack.mediaTrack)==null?void 0:r.readyState)==="ended"||e.auxiliary&&((o=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:o.readState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),xt&&qt<92)return;this.singlePC.startReconnection()}}unsubscribe(r){return I(this,arguments,function*({remoteTracks:e,streamType:t}){var a;if(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed){this._log.info(`${t} stream already unsubscribed`);return}let o=K({},this.subscribeState);e.forEach(d=>{switch(d.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(o).find(d=>d===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${M_(o)}]`),n==="unsubscribe"&&((a=this.singlePC)==null||a.removeDownlinkQueue.add(this.tinyId)),yield this.sendSubscription(n,o),n==="unsubscribe"&&(yield this.removeDownlink())})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},o=Ne.UNSUBSCRIBE,n=ge.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=Ne.SUBSCRIBE_CHANGE,n=ge.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:o,data:r,responseCommand:n,timeout:1e4,retries:3}).then(({data:a})=>{if(a.code!==0){let d=new Q({code:a.code,message:pe({key:he.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(d),d}})}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}onSinglePCReconnected(){return I(this,null,function*(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary)&&(this._log.warn(`resubscribe ${JSON.stringify(this.subscribeState)}`),yield this.doSubscribe(this.subscribeState),this.remoteAudioTrack.checkDecodeResult(),this.remoteVideoTrack.checkDecodeResult(),this.remoteAuxiliaryTrack.checkDecodeResult())})}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return I(this,arguments,function*(e=this.subscribeState,t=!0){if(this.singlePC){this.singlePC.addDownlinkQueue.add(this.tinyId),yield this.singlePC.waitForPeerConnectionConnected();try{if(t||!this.hasSSRC){let r={audioSsrc:$s(),bigVideoSsrc:$s(),bigVideoRtxSsrc:$s(),auxVideoSsrc:$s(),auxVideoRtxSsrc:$s()},{audioSsrc:o,bigVideoSsrc:n,bigVideoRtxSsrc:a,auxVideoSsrc:d,auxVideoRtxSsrc:c}=r;this.ssrc={audio:o,video:n,videoRtx:a,auxiliary:d,auxiliaryRtx:c},this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc});try{let h=yield this._signalChannel.sendWaitForResponseWithRetry({command:Ne.SPC_SUBSCRIBE,responseCommand:ge.SPC_SUBSCRIBE_RESULT,data:{srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:!1,ssrc:r},retries:3,retryTimeout:0});if(h.data.code!==0)throw new Q({code:h.data.code,message:h.data.message})}catch(h){throw yield this.removeDownlink(),h}return}this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc})}finally{if(!Id)return;let{main:r,aux:o}=this._room.jitterBufferDelay||{},{jitterDelay:n=r,jitterDelayAux:a=o}=this._room.scheduleResult.config||{};(De(n)||De(a))&&this.setJitterBufferDelay({mainDelay:n,auxDelay:a})}}})}removeDownlink(){return I(this,null,function*(){if(!this.singlePC)return;this.ssrc={audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0},this.singlePC.removeDownlinkQueue.delete(this.tinyId);let e=this._room.scheduleResult.config;(e!=null&&e.jitterDelay||e!=null&&e.jitterDelayAux)&&this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),yield this.singlePC.removeDownlink(this.userId)})}setJitterBufferDelay({mainDelay:e,auxDelay:t}){if(!Id||!this.singlePC||!this._peerConnection||pr(e)&&pr(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let r=this.singlePC.getReceiversByUserId(this.userId);return De(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),De(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,pr(e)&&(this.remoteAudioTrack.jitterBufferDelay=t)),new Promise(o=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o})})}doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o}){try{if(e===0&&t===0)return r.forEach(a=>a.jitterBufferTarget=0),o();if(r.forEach(a=>{var u;let d=a.track===this.remoteAuxiliaryTrack.outMediaTrack||pr(e)&&a.track===this.remoteAudioTrack.outMediaTrack;if(d&&pr(t)||!d&&pr(e))return;let c=d?t||0:e,h=(a.jitterBufferTarget||0)+100;h>c||(a.jitterBufferTarget=h,this._log.debug(`set ${d?"aux ":""}${(u=a==null?void 0:a.track)==null?void 0:u.kind} jitterBuffer delay ${h} -> ${c}`))}),!r.find(a=>{let d=a.track===this.remoteAuxiliaryTrack.outMediaTrack?t||0:e;return a.jitterBufferTarget<d}))return this._log.info(`set jitterBuffer main: ${e} aux: ${t} done`),o();this.jitterBufferTimeoutId=setTimeout(()=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o})},1e3)}catch(n){this._log.warn(`set jitterBuffer delay error: ${n}`),clearTimeout(this.jitterBufferTimeoutId),o()}}get audioReceiver(){var e;return((e=this.singlePC)==null?void 0:e.getReceiversByUserId(this.userId)[0])||null}};q([Xi(),ve(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this.off("closed",n),o(new Q({code:H.API_CALL_ABORTED,message:pe({key:he.CONNECTION_ABORTED,data:a})}))};this.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this.off("closed",n)})})})],$o.prototype,"subscribe",1),q([Xi()],$o.prototype,"unsubscribe",1),q([br(()=>"jitter")],$o.prototype,"setJitterBufferDelay",1);var x_=$o;function L_(){return ve(s=>function(...i){return I(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(i=i.filter(t=>t.outMediaTrack&&t.state==="capture"),!i.length))return;x.emit("61",{room:this});let e=s.apply(this,i);return i.forEach(t=>t.publish(this,e)),e})})}function P_(){return ve(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>t.unpublish()),e})}var U_=gt(Mt());function QS(){return Math.floor(Math.random()*16383)}var zc=class zc extends U_.EventEmitter{constructor(e,t){super();this.room=e;this.signalChannel=t;l(this,"log");l(this,"cmdIdSeqMap",new Map);l(this,"messageMap",new Map);this.log=j.createLogger({id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(ge.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",r=>{[...this.messageMap.keys()].forEach(o=>{o.split("_").slice(0,-1).join("_")===r&&this.messageMap.delete(o)})})}send({cmdId:e,data:t}){let r=this.cmdIdSeqMap.get(e)||QS(),o={cmdId:e,msg:btoa(String.fromCharCode(...new Uint8Array(t))),ordered:!0,reliable:!0,streamSeq:r};this.cmdIdSeqMap.set(e,r+1),this.signalChannel.send(Ne.SEND_CUSTOM_MSG,o),this.log.debug(`send custom msg: ${JSON.stringify(o)}`)}onReceiveMsg(e){let{data:t}=e.data,r=this.room.tinyIdToUserIdMap.get(t.srcTinyId);if(r){let o={userId:r,cmdId:t.cmdId,seq:t.streamSeq,data:Uint8Array.from(atob(t.msg),n=>n.charCodeAt(0)).buffer};if(t.ordered){let n=`${r}_${o.cmdId}`,a=this.messageMap.get(n);if(!a||a.lastSeq===0)a||(a={lastSeq:0,cachedMessageMap:new Map},this.messageMap.set(n,a),setTimeout(()=>this.emitMessage(o,!0),100)),a.cachedMessageMap.set(o.seq,{message:o});else if(Math.abs(a.lastSeq-o.seq)>zc.SEQ_INTERVAL)this.messageMap.set(n,{lastSeq:o.seq,cachedMessageMap:new Map}),this.emitMessage(o);else if(o.seq>a.lastSeq){if(o.seq===a.lastSeq+1)this.emitMessage(o);else if(!a.cachedMessageMap.has(o.seq)){let d=setTimeout(()=>this.emitMessage(o,!0),5e3);a.cachedMessageMap.set(o.seq,{message:o,timeoutId:d})}}else this.log.debug(`drop message ${o.userId}-${o.cmdId}-${o.seq}`)}else this.emit("message",o)}else{this.log.warn(`receive msg from unknown user, wait peer-join tinyId: ${t.srcTinyId}`);let o=n=>{n.tinyId===t.srcTinyId&&(this.room.off("peer-join",o),this.onReceiveMsg(e))};this.room.on("peer-join",o),hr(2e3).then(()=>this.room.off("peer-join",o))}}emitMessage(e,t=!1){var a;let r=this.messageMap.get(`${e.userId}_${e.cmdId}`),o=e;if(r){if(t){let d=[...r.cachedMessageMap.values()].sort((c,h)=>c.message.seq-h.message.seq);d[0]&&(o=d[0].message)}r.lastSeq!==0&&o.seq-r.lastSeq>1&&this.log.debug(`msg lost userId: ${o.userId} seq: ${r.lastSeq} -> ${o.seq}`),r.lastSeq=o.seq,clearTimeout((a=r.cachedMessageMap.get(o.seq))==null?void 0:a.timeoutId),r.cachedMessageMap.delete(o.seq)}this.log.debug(`receive custom msg: ${JSON.stringify(o)}`),this.emit("message",o);let n=r==null?void 0:r.cachedMessageMap.get(o.seq+1);n&&this.emitMessage(n.message)}};l(zc,"SEQ_INTERVAL",300);var Wc=zc;var{isString:V_,isUndefined:Fo,getNetworkType:YS,isEmpty:Ta}=Jt,Ni=class extends Hc{constructor(e){super(e);l(this,"_businessInfo");l(this,"userManager");l(this,"_version");l(this,"_heartbeat",-1);l(this,"_lastHeartBeatTime",-1);l(this,"_stats");l(this,"_joinTimeout",-1);l(this,"_firstPublishedList",null);l(this,"_joinReject",null);l(this,"_isRelayChanged",!1);l(this,"sdpSemantics");l(this,"signalChannel",null);l(this,"uplinkConnection",null);l(this,"singlePC",null);l(this,"enableSPC",po);l(this,"_changeBigSmallRecords",new Map);l(this,"networkQuality");l(this,"_iceTransportPolicy");l(this,"forceRelay",!1);l(this,"_turnServers",[]);l(this,"_iceServersFromJoin");l(this,"_syncUserListInterval",-1);l(this,"_smallStreamConfig",{bitrate:100,frameRate:15,height:120,width:160});l(this,"enableSEI",!1);l(this,"_enableAudioVolumeEvaluation",!1);l(this,"_audioVolumeIntervalId",0);l(this,"_enableMultiAuxStream",!1);l(this,"_pureAudioPushMode",!1);l(this,"_customMessageManager");l(this,"preferHW",!1);l(this,"healthDetector");l(this,"playoutDelay");l(this,"jitterBufferDelay");l(this,"_updateAudioLevelTaskId",-1);this._stats=new fa(this,this._log),this.userManager=new rc(this.userId,this._log),this._version=Rt,this.sdpSemantics=Ws,Fo(e.sdpSemantics)?Wi.isUnifiedPlanDefault()&&(this.sdpSemantics=Gr):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${YS()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=Fo(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&po,!Fo(e.enableSPC)&&po&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this._initBusinessInfo(e),this.healthDetector=new R_(this)}get isMainStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isMainStreamPublished)}get isMainAudioPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.localMainAudioTrack)}get isAuxStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isAuxStreamPublished)}get hasAuxStream(){return[...this.remotePublishedUserMap.values()].findIndex(e=>e.muteState.hasAuxiliary)>=0}get userMap(){return this.userManager.userMap}get remotePublishedUserMap(){return this.userManager.remotePublishedUserMap}get tinyIdToUserIdMap(){return new Map([...this.userMap.values()].map(e=>[e.tinyId,e.userId]))}join(e,t,r){return I(this,null,function*(){return this.userManager.mySelfId=this.userId,this.userManager.on("1",o=>{this.emit("peer-join",o)}),this.userManager.on("2",o=>{this.closeDownLinkConnection(o,"remote user exitRoom"),this.emit("peer-leave",o)}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",n=>{var o=pm(n,[]);x.emit(V.REMOTE_PUBLISH_STATE_CHANGED,K({room:this},o)),this.emit("remote-publish-state-changed",K({},o))}),this.joinParams=e,new Promise((o,n)=>I(this,null,function*(){var a,d;this._joinReject=n;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(h){if(h instanceof Q&&h.code===H.SPC_INITIALIZED_FAILED)(a=this.signalChannel)==null||a.destroy(),yield this.initialize();else return n(h)}let c=le();yield this.doJoin(e,(d=this.singlePC)==null?void 0:d.clientAbility),Y.addSuccessEvent({key:521708,cost:le()-c}),o(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(c){Y.addFailedEvent({key:521708,error:c}),n(c)}this._joinReject=null}))})}initSinglePC(){return I(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new vi({signalChannel:this.signalChannel,room:this,enableCustomMessage:!1}),this.singlePC.on("sei-message",e=>this.emit("sei-message",e)),this.singlePC.on("dump",e=>this.emit("dump",e)),this.singlePC.once("error",()=>this.fallbackToMPC());try{return yield this.singlePC.initialize()}catch(e){throw this.fallbackToMPC(),new Q({code:H.SPC_INITIALIZED_FAILED,message:e==null?void 0:e.message})}}})}doJoin(e,t){return new Promise((r,o)=>I(this,null,function*(){var d,c,h;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(rt.SETUP_FAILED,u=>{this.clearJoinTimeout(),x.emit(V.JOIN_SIGNAL_CONNECTION_END,{room:this,error:u}),o(u)}),Qe((c=(d=this.scheduleResult)==null?void 0:d.config)==null?void 0:c.singlePC)&&po&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2),t&&this.playoutDelay&&(t.playoutDelay=this.playoutDelay);let n={roomId:String(e.roomId||e.strRoomId),useStringRoomId:this.useStringRoomId,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel,trtcRole:e.role,trtcScene:this.scene==="live"?2:1,sdpSemantics:this.sdpSemantics,version:this._version,ua:navigator&&navigator.userAgent||"",terminalType:xl(),netType:us(),bussinessInfo:this._businessInfo,ability:t,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0};this._log.debug(`join room signal data: ${JSON.stringify(n)}`);let a=5e3;(h=this.scheduleResult.config)!=null&&h.enterRoomTimeout&&this.scheduleResult.config.enterRoomTimeout>=1&&(a=this.scheduleResult.config.enterRoomTimeout*1e3),this._joinTimeout=window.setTimeout(()=>{o(new Q({code:H.JOIN_ROOM_FAILED,message:pe({key:he.JOIN_ROOM_TIMEOUT})}))},a),x.emit(V.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?Ne.SPC_JOIN_ROOM:Ne.JOIN_ROOM,n),this.signalChannel.once(ge.JOIN_ROOM_RESULT,u=>I(this,null,function*(){this.clearJoinTimeout();let{code:m,message:p,data:g,tinyId:f}=u.data;x.emit(V.JOIN_RECEIVED_CMD_RES,{room:this,code:m}),m===0?(this._log.info("Join room success, start heartbeat"),f&&(this.tinyId=f),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=g.publishers,this._iceServersFromJoin=g.iceServer?[g.iceServer]:[],this.singlePC&&this.singlePC.setIceServers(this.getIceServers()).then(()=>{var T;(T=this.singlePC)==null||T.connect(ne(K({},g.ability),{useVp8:g.ability.useVp8||!!e.useVp8})).catch(()=>{})}),r()):(this._log.error(`Join room failed result: ${m} error: ${p}`),o(new Q({code:H.JOIN_ROOM_FAILED,extraCode:m,message:pe({key:he.JOIN_ROOM_FAILED,data:{error:p,code:m}})})))}))}))}reJoin(){return I(this,null,function*(){if(!this.isJoined){this._log.warn("reJoin abort");return}try{this._log.warn(`reJoin pending: ${this.joinParams.roomId}`);let e,t=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,t.push(this.initSinglePC().then(r=>(e=r,r)))),this.signalChannel&&(this.signalChannel.close(),t.push(this.signalChannel.connect())),yield Promise.all(t),yield this.doJoin(ne(K({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),e),this._log.warn("reJoin success"),Me.logSuccessEvent({userId:this.userId,eventType:Ft.REJOIN}),this.singlePC){let r=o=>{var n;o.state==="CONNECTED"&&((n=this.singlePC)==null||n.off(sr.CONNECTION_STATE_CHANGED,r),this.uplinkConnection instanceof dm&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(a=>{a.installEvents(),a.onSinglePCReconnected()}))};this.singlePC.on(sr.CONNECTION_STATE_CHANGED,r),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof pa&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(e){this._log.warn(`reJoin fail ${e}`),this.reset(),Me.logFailedEvent({userId:this.userId,eventType:Ft.REJOIN,error:e}),this.emit("error",new Q({code:H.JOIN_ROOM_FAILED,message:pe({key:he.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return I(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),r=this.signalChannel||Yf(this.userId),o=!!(r&&r.isConnected&&r.keepAlive&&r.userId===this.userId),n;return Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(n=this.scheduleResult.domains[0]),this._log.info(`${o?"reuse":"setup"} signal channel`),o?(r.url=e,r.backupUrl=t,r.room=this,this.signalChannel=r):(r&&r.close(),this.signalChannel=new Lo({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:e,backupUrl:t,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?n:void 0}),this._customMessageManager=new Wc(this,this.signalChannel),this._customMessageManager.on("message",a=>{this.emit("custom-message",a)})),this.networkQuality||(this.networkQuality=new Bo({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(Bo.EVENT_NETWORK_QUALITY,a=>{var d;this.emit("network-quality",a),(d=this.singlePC)==null||d.detectTCPAndUDP(a)})),vt(this,this.signalChannel).add(rt.CONNECTION_STATE_CHANGED,a=>{x.emit(V.SIGNAL_CONNECTION_STATE_CHANGED,K({room:this},a)),this.emit("signal-connection-state-changed",a)}).add(rt.RECONNECT_FAILED,a=>{this.reset(),this.emit("error",a)}).add(ge.PEER_JOIN,a=>{let{srcTinyId:d,userId:c,role:h}=a.data.data;this.userManager.addUser({userId:c,tinyId:d,role:h})}).add(ge.PEER_LEAVE,a=>{let{userId:d,reason:c=0}=a.data.data;this.userManager.deleteUser(d,c)}).add(ge.UPDATE_REMOTE_MUTE_STAT,a=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(a.data)}).add(ge.CLIENT_BANNED,a=>{let d=a.data.data,{reason:c}=d;if(Me.uploadEvent({log:`stat-banned:${c}`,userId:this.userId}),c==="user_time_out"){this._log.warn(`${c} last heart beat time: ${this._lastHeartBeatTime} interval: ${Date.now()-this._lastHeartBeatTime}, visibility: ${document.visibilityState}`),this.reJoin();return}this._log[c==="kick"?"error":"info"](`user was banned because of [${c}]`),this.reset(),this.emit("banned",{reason:c})}),this.signalChannel.once(rt.SETUP_SUCCESS,a=>{this.tinyId=a.signalInfo.tinyId,x.emit(V.JOIN_SIGNAL_CONNECTION_END,{room:this})}),x.emit(V.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),o&&x.emit(V.JOIN_SIGNAL_CONNECTION_END,{room:this}),o})}setSignalChannel(e){this.signalChannel=e,e||at(this)}leave(){return I(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),x.emit(V.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(Ne.LEAVE_ROOM)})}clearNetworkQuality(){this.networkQuality&&(this.networkQuality.stop(),delete this.networkQuality)}closeConnections(){this.remotePublishedUserMap.forEach(e=>{this.closeDownLinkConnection(e.userId,"you exitRoom")})}clearJoinTimeout(){clearTimeout(this._joinTimeout),this._joinTimeout=-1}startHeartbeat(){this._heartbeat===-1&&(this._heartbeat=Le.run("ric",this.doHeartbeat.bind(this),{delay:2e3}))}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),Le.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return I(this,null,function*(){var n;let e=this.badCaseDetector.getMonitorFreeze(),t=yield this._stats.getStatsReport({uplinkConnection:this.uplinkConnection,downlinkConnections:this.remotePublishedUserMap,freezeMap:e});this.badCaseDetector.resetMonitor();let r=(n=this.signalChannel)!=null&&n.isConnected?sf(this.userId):[],o=ne(K({str_sdk_version:Qo,uint64_datetime:new Date().getTime(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyId},msg_event_msg:r,str_acc_ip:this.getSignalInfo().relayIp,str_client_ip:this.getSignalInfo().clientIp},t),{msg_device_info:K({uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:us()},t.msg_device_info)});if(this.heartbeatReport=o,x.emit(V.HEARTBEAT_REPORT,{room:this,report:o}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(Ne.ON_QUALITY_REPORT,o);let a=Date.now();this._lastHeartBeatTime>0&&a-this._lastHeartBeatTime>1e4&&this._log.warn(`heartbeat took ${a-this._lastHeartBeatTime}`),this._lastHeartBeatTime=a,this.signalChannel.isOnline||(this._log.warn("signal channel is not online"),this.signalChannel.startReconnection())}this.emit("heartbeat-report",ne(K({},o),{bytes_sent:this._stats.totalBytesSent+this.signalChannel.bytesSent,bytes_received:this._stats.totalBytesReceived+this.signalChannel.bytesReceived}))}!this._isRelayChanged&&this.isRelayMaybeFailed()&&(this.reJoin(),this._isRelayChanged=!0)})}onPublishedUserList(e){if(!this.isJoined)return;let t=e.data.userList.filter(r=>r.flag!==il).map(({userId:r,srcTinyId:o,flag:n})=>{r===this.userId&&this.uplinkConnection&&(this.uplinkConnection.flag=n);let a=this.remotePublishedUserMap.get(r);return a&&this.checkSubscribeBigSmallVideo(a),{userId:r,tinyId:o,flag:n}});e.data.mixRobotList.forEach(({userId:r,srcTinyId:o,flag:n,mixUserList:a})=>{t.unshift({userId:r,tinyId:o,flag:n,isRobot:!0,mixUserList:a})}),x.emit(V.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:t}),this.userManager.setRemotePublishedUserList(t)}closeUplink(e="you unpublished"){this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish(),this.uplinkConnection.close(e),this.uplinkConnection instanceof pa&&(this.uplinkConnection=null)),this.localTracks.forEach(t=>t.unpublish()),this.localTracks.clear()}createDownlinkConnection({userId:e,tinyId:t,flag:r,isRobot:o}){let n=new(this.singlePC?x_:Yh)({userId:e,tinyId:t,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:r,isRobot:o});this.userManager.addRemotePublishedUser(n),this.installDownlinkEvents(n,e),this.emit("remote-published",n)}closeDownLinkConnection(e,t="remote user unpublished"){let r=this.remotePublishedUserMap.get(e);r&&(r.close(t),this.emit("remote-unpublished",r))}installDownlinkEvents(e,t){e.on("error",r=>{let o=r.getCode();o!==H.ICE_TRANSPORT_ERROR&&(o===H.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(t),this.emit("error",r))}),e.on("connection-state-changed",r=>{this.emit("media-connection-state-changed",ne(K({},r),{userId:e.userId}))}),e.on("firewall-restriction",()=>{this.emit("firewall-restriction")})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=Le.run("ric",this.syncUserList.bind(this)))}stopSyncUserListInterval(){Le.clearTask(this._syncUserListInterval),this._syncUserListInterval=-1}syncUserList(){return this.getUserList().then(e=>{this.userManager.setUserList(e)}).catch(e=>{this._log.debug(`sync user list failed: ${e}`)})}getUserList(){var e;return(e=this.signalChannel)!=null&&e.isConnected?this.signalChannel.sendWaitForResponse({command:Ne.GET_USER_LIST,responseCommand:ge.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(({data:t})=>{let{code:r,message:o}=t;if(r===0)return(t.data&&t.data.userList||[]).map(({userId:a,srcTinyId:d,role:c})=>({userId:a,tinyId:d,role:c}));throw pe({key:he.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ge.USER_LIST_RES,code:r,message:o}})}):Promise.reject("not connected")}getAllConnections(){let e=[...this.remotePublishedUserMap.values()];return this.uplinkConnection&&e.push(this.uplinkConnection),e}isRelayMaybeFailed(){if(this.signalChannel&&!this.signalChannel.isOnline||!zh)return!1;if(this.singlePC)return this.singlePC.reconnectionCount>6;let e=this.getAllConnections();if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(e[t].getReconnectionCount()<6)return!1;return!0}checkConnectionsToReconnect(){var e;this.singlePC?((e=this.singlePC.getPeerConnection())==null?void 0:e.connectionState)===Je.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(r=>{if(r instanceof $t&&!r.getIsReconnecting()){let o=r.getPeerConnection();o&&o.connectionState===Je.CLOSED&&(this._log.warn(`[${r.getUserId()}] pc is closed but not reconnect`),r.startReconnection())}})}fallbackToMPC(){return I(this,null,function*(){var e;if(this._log.warn("fallback to multi pc"),Me.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(e=this.singlePC)==null||e.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin()),this.uplinkConnection){let t=this.uplinkConnection;this.uplinkConnection=new pa({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),t.isMainStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localMainAudioTrack,localVideoTrack:t.localMainVideoTrack,isAuxiliary:!1})),t.isAuxStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localAuxAudioTrack,localVideoTrack:t.localAuxVideoTrack,isAuxiliary:!0})),t.close()}for(let t of[...this.remotePublishedUserMap.values()]){let r=new Yh({userId:t.userId,tinyId:t.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:t.flag,remoteAudioTrack:t.remoteAudioTrack,remoteVideoTrack:t.remoteVideoTrack,remoteAuxiliaryTrack:t.remoteAuxiliaryTrack});this.installDownlinkEvents(r,t.userId),this.remotePublishedUserMap.set(t.userId,r),t.isMainStreamSubscribed&&(yield r.subscribe(t.subscribeState,"main")),t.isAuxStreamSubscribed&&(yield r.subscribe(t.subscribeState,"auxiliary"))}})}destroy(){this.isDestroyed||(this.signalChannel&&(this._log.info("destroying SignalChannel"),this.signalChannel.close(),this.signalChannel=null),super.destroy(),this._joinReject&&(this._joinReject(new Q({code:H.INVALID_OPERATION,message:pe({key:he.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.removeAllListeners(),this.healthDetector.destroy(),Le.clearTask(this._audioVolumeIntervalId))}switchRole(e){return I(this,null,function*(){this.role!==e&&(e==="audience"&&this.uplinkConnection&&this.closeUplink("you switch role to audience"),yield this.doSwitchRole(e))})}doSwitchRole(e){let t={command:Ne.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:ge.SWITCH_ROLE_RES,retries:1};return this._log.info(`switchRole signal data: ${JSON.stringify(t.data)}`),this.signalChannel.sendWaitForResponseWithRetry(t).then(r=>{let{code:o,message:n}=r.data;if(o!==0)throw new Q({code:H.SWITCH_ROLE_FAILED,message:pe({key:he.SWITCH_ROLE_FAILED,data:{message:n,code:o}})});this.role=e}).catch(r=>{throw r instanceof Q&&r.getCode()===H.API_CALL_TIMEOUT&&(r=new Q({code:H.SWITCH_ROLE_FAILED,message:pe({key:he.SWITCH_ROLE_TIMEOUT})})),this._log.error(r),r})}publish(...e){return I(this,null,function*(){let t={},r={};e.forEach(d=>{d instanceof ti&&(d instanceof Yi?r.audio=d:t.audio=d),d instanceof Nt&&(d instanceof jt&&d.mediaType===2?r.video=d:t.video=d)});let o=Ta(t),n=Ta(r);(!o||!n)&&!this.uplinkConnection&&(this.singlePC?this.uplinkConnection=new dm({userId:this.userId,tinyId:this.tinyId,room:this}):this.uplinkConnection=new pa({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",d=>{this.emit("media-connection-state-changed",ne(K({},d),{userId:this.userId}))}),this.uplinkConnection.on("firewall-restriction",()=>{this.emit("firewall-restriction")}),this.uplinkConnection.on("error",d=>{let c=d.getCode();c!==H.ICE_TRANSPORT_ERROR&&(c===H.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",d))}));let a=e.map(d=>d.kind).join(",");o||(this._log.info(`publish() => main ${a}`),yield this.uplinkConnection.publish({localAudioTrack:t.audio,localVideoTrack:t.video,isAuxiliary:!1}),this._log.info("main is published")),n||(this._log.info(`publish() => aux ${a}`),yield this.uplinkConnection.publish({localAudioTrack:r.audio,localVideoTrack:r.video,isAuxiliary:!0}),this._log.info("aux is published"))})}unpublish(...e){return I(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||!this.isMainStreamPublished&&!this.isAuxStreamPublished||!this.uplinkConnection)return;let t={},r={};e.forEach(o=>{!o.mediaTrack||!o.isPublished||(o instanceof ti&&(o instanceof Yi?r.audio=o:t.audio=o),o instanceof Nt&&(o instanceof jt&&o.mediaType===2?r.video=o:t.video=o))});try{let o=e.map(n=>n.kind).join(",");Ta(t)||(this._log.info(`unpublish() => main ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:t.audio,localVideoTrack:t.video})),Ta(r)||(this._log.info(`unpublish() => aux ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:r.audio,localVideoTrack:r.video}))}catch(o){}this.localTracks.size===0&&this.closeUplink("you unpublished")})}addTrack(e){if(!this.uplinkConnection||!e.mediaTrack)return Promise.resolve();let t=this.uplinkConnection.addTrack(e);return e.publish(this,t),t}removeTrack(e){return!this.uplinkConnection||!e.mediaTrack?Promise.resolve():this.uplinkConnection.removeTrack(e).then(t=>(e.unpublish(),t))}replaceTrack(e){return!this.uplinkConnection||!e.mediaTrack||!ru()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&x.emit(V.LOCAL_TRACK_REPLACED,{track:e})})}setBandWidth(e){return I(this,null,function*(){this.uplinkConnection&&(yield this.uplinkConnection.setBandwidth(e),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(e){return I(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();e&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:S.VIDEO,videoType:S.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(e)})}subscribe(...e){return I(this,null,function*(){if(e=e.filter(n=>!n.isSubscribed),e.length===0)return;let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let o=e.find(n=>n.mediaType===2)?"auxiliary":"main";try{let n=K({},r.subscribeState);e.forEach(d=>{switch(d.mediaType){case 1:n.audio=!0;break;case 4:n.video=!0;break;case 8:n.smallVideo=!0;break;case 2:n.auxiliary=!0;break}});let a=this._changeBigSmallRecords.get(t);a&&a.options.smallVideo&&r.muteState.hasSmall&&n.video&&(n.video=!1,n.smallVideo=!0),x.emit(V.SUBSCRIBE_START,{room:this,streamType:o,remotePublishedUser:r,subscribeState:n}),this._log.info(`subscribe() => ${t} ${o} [${xc(n)}] prev: [${xc(r.subscribeState)}]`),yield r.subscribe(n,o),this._log.info(`subscribe ${t} ${o} done`);for(let d of e)d.mediaTrack||(yield d.waitHasMediaTrack());x.emit(V.SUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})}catch(n){let a=n instanceof Q?n.getCode():H.UNKNOWN,d=n;throw n instanceof Q?a===H.REMOTE_STREAM_NOT_EXIST&&(d=new Q({code:H.API_CALL_ABORTED,message:pe({key:he.API_CALL_ABORTED,data:{message:n.message,userId:t,streamType:o}})}),this._log.warn(d)):(d=new Q({code:a,message:pe({key:he.SUBSCRIBE_FAILED,data:{message:n.message,userId:t,streamType:o}})}),this._log.error(d)),d}})}unsubscribe(...e){return I(this,null,function*(){let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let o=e.find(n=>n.mediaType===2)?"auxiliary":"main";this._log.info(`unsubscribe() => ${t} ${o}`);try{yield r.unsubscribe({remoteTracks:e,streamType:o})}catch(n){this._log.warn(`unsubscribe() => failed ${n}`)}e.forEach(n=>{n.unsubscribe(),n.mediaType===8&&n.setMediaType(4)}),x.emit(V.UNSUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(e=2e3,t){if(e<=0){this._enableAudioVolumeEvaluation=!1,Le.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),x.emit(V.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&Le.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=Le.run("intervalInWorker",()=>{var o;As.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let r=[];(o=this.remotePublishedUserMap)==null||o.forEach(n=>{if(n.muteState.hasAudio){!As.isRunning&&n.muteState.audioAvailable&&n.remoteAudioTrack.isSubscribed?this.updateDownlinkAudioLevelFromReceiver(n):n.remoteAudioTrack.volume=0;let a=Math.floor(n.remoteAudioTrack.getAudioLevel()*100);r.push({userId:n.userId,volume:a})}}),this.emit("audio-volume",r)},{delay:e,backgroundTask:t})}updateAudioLevelFromSenderStat(e,t){return I(this,null,function*(){var n;if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack||this._updateAudioLevelTaskId!==-1)return;let r=(n=this.uplinkConnection.getPeerConnection())==null?void 0:n.getSenders()[0];if(!r)return;let o=Math.max(e,500);this._log.warn(`updateAudioLevelFromSenderStat ${o}`),this._updateAudioLevelTaskId=Le.run("intervalInWorker",()=>I(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack){this.stopUpdateAudioLevelFromSenderStat();return}let a=yield r.getStats();if(this._updateAudioLevelTaskId<0)return;let{localMainAudioTrack:d}=this.uplinkConnection;a.forEach(c=>{c.type==="media-source"&&c.audioLevel&&(d.volume=c.audioLevel)})}),{delay:o,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),Le.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(e=this.uplinkConnection)!=null&&e.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(e){var o;let{audioReceiver:t}=e;if(!su||!t)return;let r=(o=t.getSynchronizationSources()[0])==null?void 0:o.audioLevel;De(r)?e.remoteAudioTrack.volume=Math.min(r*2,1):t.getStats().then(n=>{n.forEach(a=>{a.type==="inbound-rtp"&&De(a.audioLevel)&&(e.remoteAudioTrack.volume=a.audioLevel)})})}getLocalAudioStats(){return I(this,null,function*(){var t;let e={};return e[this.userId]={bytesSent:0,packetsSent:0,audioLevel:0},(t=this.uplinkConnection)!=null&&t.localMainAudioTrack&&(e[this.userId]=this.uplinkConnection.localMainAudioTrack.stat),e})}getLocalVideoStats(){return I(this,null,function*(){var t,r;let e={};return e[this.userId]=((r=(t=this.uplinkConnection)==null?void 0:t.localMainVideoTrack)==null?void 0:r.stat)||{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0},e})}getTransportStats(){return I(this,null,function*(){let e={rtt:0,downlinksRTT:{}};if(this.uplinkConnection){let t=yield this._stats.getSenderStats(this.uplinkConnection);e.rtt=t.rtt}for(let[,t]of this.remotePublishedUserMap){let r=yield this._stats.getReceiverStats(t);e.downlinksRTT[r.userId]=r.rtt}return e})}getRemoteVideoStats(e){return I(this,null,function*(){let t={};for(let[r,o]of this.remotePublishedUserMap)e==="main"&&o.muteState.hasVideo&&(t[r]=o.remoteVideoTrack.stat),e==="auxiliary"&&o.muteState.hasAuxiliary&&(t[r]=o.remoteAuxiliaryTrack.stat);return t})}getRemoteAudioStats(){return I(this,null,function*(){let e={};for(let[t,r]of this.remotePublishedUserMap)r.muteState.hasAudio&&(e[t]=r.remoteAudioTrack.stat);return e})}setTurnServer(e,t){this._log.info(`set turn server: ${JSON.stringify(e)} ${t||""}`);let r=[];Array.isArray(e)?e.forEach(o=>r.push(Jt.getTurnServer(o))):Jt.isPlainObject(e)&&r.push(Jt.getTurnServer(e)),this._turnServers=r,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Ne.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:ge.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Ne.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:ge.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Ne.START_PUBLISH_TENCENT_CDN:Ne.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?ge.START_PUBLISH_TENCENT_CDN_RES:ge.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Ne.STOP_PUBLISH_TENCENT_CDN:Ne.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?ge.STOP_PUBLISH_TENCENT_CDN_RES:ge.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Ne.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:ge.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Ne.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:ge.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Ne.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:ge.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:Ne.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:ge.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(r=>{})}getIceServers(e){var t,r;return this._turnServers.length>0?this._turnServers:(t=this.scheduleResult.iceServers)!=null&&t.length?this.scheduleResult.iceServers:e!=null&&e.length?e:(r=this._iceServersFromJoin)!=null&&r.length?this._iceServersFromJoin:[]}getIceTransportPolicy(){return this.forceRelay?"relay":this._iceTransportPolicy||this.scheduleResult.iceTransportPolicy||"all"}getLogger(){return this._log}enableAIVoice(){throw new Error("Method not implemented.")}getSignalChannelUrl(){let e={mainUrl:"",backupUrl:""},t=Jt.getEnv();return t?(e.mainUrl=`wss://${t}.rtc.qq.com`,e.backupUrl=e.mainUrl):this.proxy_ws?(e.mainUrl=this.proxy_ws,e.backupUrl=e.mainUrl):this.proxy_unified?(e.mainUrl=`wss://${this.proxy_unified}`,e.backupUrl=e.mainUrl):Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(e.mainUrl=`wss://${this.scheduleResult.domains[0]}`,e.backupUrl=e.mainUrl,this.scheduleResult.domains[1]&&(e.backupUrl=`wss://${this.scheduleResult.domains[1]}`)),e}getSignalInfo(){var e;return((e=this.signalChannel)==null?void 0:e.getSignalInfo())||{clientIp:"",relayIp:""}}reset(e=!1){this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.clearNetworkQuality(),this.closeUplink("you exitRoom"),this.signalChannel&&(e&&this.signalChannel.keepAlive&&this.signalChannel.isConnected?this.signalChannel.stopKeepAliveIn(3600):(this.signalChannel.close(),this.setSignalChannel(null))),this._stats.reset(),this.userManager.clear(),this.userManager.removeAllListeners(),this.singlePC&&(this.singlePC.close(),this.singlePC=null),this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null}}checkSubscribeBigSmallVideo(e){return I(this,null,function*(){let{subscribeState:t,userId:r,muteState:{hasSmall:o,hasVideo:n}}=e;if(!o&&!n||!t.video&&!t.smallVideo)return;let a=this._changeBigSmallRecords.get(r);if(!a||a.isSubscribing||a.reSubscribeCount<=0)return;let{options:d,reSubscribeCount:c}=a;if(d.video&&t.video||d.smallVideo&&t.smallVideo&&o)return;let h={audio:e.remoteAudioTrack.isSubscribed||e.remoteAudioTrack.isSubscribing,auxiliary:e.remoteAuxiliaryTrack.isSubscribed||e.remoteAuxiliaryTrack.isSubscribing,video:d.video,smallVideo:d.smallVideo};try{if(!o&&h.smallVideo&&(h.video=!0,h.smallVideo=!1),h.smallVideo===t.smallVideo&&h.video===t.video)return;a.isSubscribing=!0,a.reSubscribeCount=c-1,yield e.subscribe(h,"main"),e.remoteVideoTrack.setMediaType(h.smallVideo?8:4),this._log.info(`change [${r}] to ${h.smallVideo?"small":"big"} video successfully. count ${zs-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount=zs}catch(u){this._log.info(`change [${r}] to ${h.smallVideo?"small":"big"} video failed. count ${zs-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount===0&&this._changeBigSmallRecords.delete(r)}})}changeType(e,t){let o={options:{video:!e,smallVideo:e},isSubscribing:!1,reSubscribeCount:zs};this._changeBigSmallRecords.set(t.userId,o),this._log.info(`set [${t.userId}] video prefer type: ${e?"small":"big"}`);let n=this.remotePublishedUserMap.get(t.userId);n&&this.checkSubscribeBigSmallVideo(n)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(e){this._businessInfo=e.businessInfo;let t={};if(V_(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!Fo(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new Q({code:H.INVALID_PARAMETER,message:pe({key:he.INVALID_PURE_AUDIO})});this._pureAudioPushMode=e.pureAudioPushMode,t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.pure_audio_push_mod=this._pureAudioPushMode}if(!Fo(e.userDefineRecordId)){let r=/^[A-Za-z0-9_-]{1,64}$/gi;if(e.userDefineRecordId.match(r)===null)throw new Q({code:H.INVALID_PARAMETER,message:pe({key:he.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!Fo(e.userDefinePushArgs))if(V_(e.userDefinePushArgs)&&String(e.userDefinePushArgs)&&String(e.userDefinePushArgs).length<=256)t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_push_args=e.userDefinePushArgs;else throw new Q({code:H.INVALID_PARAMETER,message:pe({key:he.INVALID_USER_DEFINE_PUSH_ARGS})});Ta(t)||(this._businessInfo=JSON.stringify(t))}sendCustomMessage(e){var t;(t=this._customMessageManager)==null||t.send(e)}enableInsertableStreams(){return I(this,null,function*(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&Ar)return this.singlePC.enableInsertableStreams=!0,yield this.singlePC.waitForPeerConnectionConnected(),yield this.singlePC.startReconnection()})}sendSignalMessage(e){var t;return this.signalChannel?(t=this.signalChannel)==null?void 0:t.sendWaitForResponseWithRetry(e):Promise.reject(new Q({code:H.INVALID_OPERATION,message:"not join"}))}get enableCodecPipeline(){return this.videoManager.encodePipeline.length>0||this.videoManager.decodePipeline.length>0||this.audioManager.encodePipeline.length>0||this.audioManager.decodePipeline.length>0}get scriptTransformWorker(){var e;return(e=this.singlePC)==null?void 0:e.scriptTransformWorker}};q([qe(["left",fe.INIT],"joined"),Gt({settings:{retries:1,timeout:0},onRetrying(e){this._log.warn(`join retry ${e}`)},onRetryFailed(e){this._log.error("join failed",e)},onError(e,t){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),yi(!0),this.reset(),t()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),t()):(this.reset(),t())}}),jf()],Ni.prototype,"join",1),q([qe("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),Jf(),Vd("leave room"),Bn({fnName:"publish",validateArgs:!1}),Bn({fnName:"unsubscribe",validateArgs:!1})],Ni.prototype,"leave",1),q([Xi(),L_(),Gt({settings:{retries:dr,timeout:e=>fi(e)},onError(e,t,r){var o;(o=e.message)!=null&&o.includes("timeout")?(this._log.warn("publish timeout"),t()):(this._log.error(`publish failed: ${e}`),r(e),x.emit(V.PUBLISH_FAILED,{room:this}))}})],Ni.prototype,"publish",1),q([Bn({fnName:"publish"}),Gp("api-call"),Xi(),P_(),Ut(function(){var e,t;this.localTracks.size===0&&Qr()&&((t=(e=this.singlePC)==null?void 0:e.getPeerConnection())==null||t.getSenders().forEach(r=>r.track&&r.replaceTrack(null)))})],Ni.prototype,"unpublish",1),q([Ld(e=>{if(e.code!==H.API_CALL_ABORTED)throw e}),br(e=>e.userId)],Ni.prototype,"replaceTrack",1),q([br((...e)=>e[0].userId),Fd(),qf(),Gt({settings:{retries:dr,timeout:e=>fi(e)},onError(e,t,r,o){e.message.includes("timeout")?(this._log.warn("subscribe timeout"),t()):(this._log.error(`subscribe failed: ${e}`),r(e),x.emit(V.SUBSCRIBE_FAILED,{room:this,remoteTracks:o}))}})],Ni.prototype,"subscribe",1),q([Bn({fnName:"subscribe",callback(...e){this.singlePC||e.forEach(t=>{let r=this.remotePublishedUserMap.get(t.userId);r&&!r.isMainStreamSubscribed&&!r.isAuxStreamSubscribed&&r.close("you unsubscribed")})}}),br((...e)=>e[0].userId)],Ni.prototype,"unsubscribe",1);ha.create=ha._create.bind(ha,Ni);var zH=ha;export{zH as default};
132
- /*! Bundled license information:
133
-
134
- jszip/dist/jszip.min.js:
135
- (*!
136
-
137
- JSZip v3.10.1 - A JavaScript class for generating and reading zip files
138
- <http://stuartk.com/jszip>
139
-
140
- (c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
141
- Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.
142
-
143
- JSZip uses the library pako released under the MIT license :
144
- https://github.com/nodeca/pako/blob/main/LICENSE
145
- *)
146
- */
119
+ next answer: ${this.filterSDPDirection(t)}`),this._log.warn(`offer: ${e==null?void 0:e.sdp}`),this._log.warn(`answer: ${t}`),this._log.warn(`transceivers: ${JSON.stringify(this._peerConnection.getTransceivers().map(({mid:l,currentDirection:u,direction:h,stopped:f})=>({mid:l,currentDirection:u,direction:h,stopped:f})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,o(c)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return p(this,null,function*(){if(!ne||!this._peerConnection||!this._parsedAnswer)return;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let r=this._peerConnection.getTransceivers();t.forEach(o=>{r[o].direction!==e&&(r[o].direction=e)});for(let o of t){let n=this._parsedAnswer.media[o].direction;e===Z.INACTIVE&&n===Z.RECVONLY&&(this._parsedAnswer.media[o].direction=e),e===Z.SENDONLY&&n===Z.INACTIVE&&(this._parsedAnswer.media[o].direction=Z.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(e=""){return Ae(e).media.map(r=>r.direction)}setOffer(e){this._log.info("setting offer");let t=Np(e.sdp,this.clientAbility,this._serverAbility);return this._log.debug(t),this._peerConnection.setLocalDescription({type:"offer",sdp:t})}setAnswer(e){return this._log.info("setting answer"),this._log.debug(e.sdp),this._peerConnection.setRemoteDescription(e)}switchVideoEncoder(e){return p(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let t=!1;this._parsedAnswer.media.forEach(r=>{var o;if(r.type===m.VIDEO){let n=this._serverAbility.video.codecs.find(a=>a.codec.toLowerCase()===e);n&&!((o=r.payloads)!=null&&o.includes(String(n.payload)))&&(r.fmtp=[],r.payloads="",r.rtp=[],r.rtcpFb=[],Gr(r,n),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}useHWEncoder(e=!0,t){return p(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let r=!1,o=[];T(t)?o=this._parsedAnswer.media.slice(1,4):t===2?o.push(this._parsedAnswer.media[1]):t===3?o.push(this._parsedAnswer.media[2]):t===7&&o.push(this._parsedAnswer.media[3]),o.forEach(n=>{var a;if(n.type===m.VIDEO){let c;e&&this.is42001fSupported?c=this.clientAbility.video.codecs.find(l=>l.fmtp.includes("42001f")):e||(c=this._serverAbility.video.codecs.find(l=>l.codec.toLowerCase()===(this._serverAbility.useVp8?"vp8":"h264"))),c&&!((a=n.payloads)!=null&&a.includes(String(c.payload)))&&(n.fmtp=[],n.payloads="",n.rtp=[],n.rtcpFb=[],Gr(n,c),r=!0)}}),r&&(this._log.warn(`use ${e?"hw":"sw"} encoder`),yield this.updateSDP())})}sendDataChannelMessage(e){var t;(t=this._datachannel)==null||t.send(e)}reset(){this._peerConnection&&(this._peerConnection.close(),this._peerConnection.removeEventListener("track",this._peerConnection._onaddstreampoly,this),this._peerConnection._onaddstreampoly=null,this._peerConnection=null),this._waitForPCConnectedPromise=null,this._parsedAnswer=null,this.originOffer=null}close(){this._log.info("close pc"),this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>Jt(e.abort)&&e.abort("destroy")),this.insertableStreamsAbortMap.clear(),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this._downlinkMIDMap.clear(),this.stopReconnection(),this.removeAllListeners(),this._room.healthDetector.off("1",this.onBadHealth,this)}getReceiversByUserId(e){if(!this._peerConnection)return[];let t=this._peerConnection.getReceivers();return(this._downlinkMIDMap.get(e)||[]).map(r=>t[r])}get isUsingRelay(){return this._room.getIceTransportPolicy()==="relay"}detectTCPAndUDP({uplinkRTT:e,downlinkRTT:t}){var u;if(this.currentState!=="CONNECTED"||this._isRelayTried&&!this._room.forceRelay||this._room.getIceServers().length===0)return;let r=this._signalChannel.rtt,o=Math.max(e,t),{rttRatioThreshold:n,rttThreshold:a}=((u=this._room.scheduleResult.config)==null?void 0:u.useTurnTcpInfo)||{};if(!n||!a||!r||!o)return;let c=Math.floor(o/r),l=(this._isRelayTried||c>n)&&o>a;if(!l){this._rttOverCount=0;return}++this._rttOverCount<5||(this._log.warn(`detectTCPAndUDP ws-rtt: ${r} upRTT: ${e} downRTT: ${t} ratio: ${c} over-count: ${this._rttOverCount} isOver: ${l} isRelayTried: ${this._isRelayTried} force-relay: ${this._room.forceRelay}`),!this.isUsingRelay&&!this._isRelayTried?(this._isRelayTried=!0,this._rttOverCount=0,this.switchRelay(!0)):this._room.forceRelay&&this.switchRelay(!1))}switchRelay(e,t=!1){return p(this,null,function*(){if(this.isUsingRelay===e)return;let r=e?"relay":"udp",o=e?521709:521710;try{this._room.forceRelay=e,this._log.warn(`switchRelay ${r}`);let n=Date.now();yield this.doSwitchRelay(r),this._log.warn(`switchRelay ${r} success`),b.addSuccessEvent({key:o,cost:Date.now()-n})}catch(n){this._log.warn(`switchRelay ${r} failed`,n),b.addFailedEvent({key:o,error:n}),t?this._room.reJoin():yield this.switchRelay(!e,!0)}})}doSwitchRelay(e){return new Promise((t,r)=>{let o=setTimeout(()=>{this.stopReconnection(),r(new Error(`switch ${e} timeout`))},1e4);this.startReconnection().then(t,r).finally(()=>clearTimeout(o))})}removeRTCListener(){this._peerConnection&&(this._peerConnection.oniceconnectionstatechange=null,this._peerConnection.onconnectionstatechange=null,this._peerConnection.onsignalingstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}};N([ya("reconnect")],Ft.prototype,"startReconnection",1),N([Li(e=>e.userId)],Ft.prototype,"addDownlink",1),N([Li(e=>e)],Ft.prototype,"removeDownlink",1),N([ni(!0)],Ft.prototype,"updateSDP",1),N([nt(521712,!1)],Ft.prototype,"setOffer",1),N([nt(521713,!1)],Ft.prototype,"setAnswer",1);var bu=class{constructor(i){d(this,"tag");d(this,"len");d(this,"data");let e=new DataView(i);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(i).slice(4,4+this.len).buffer}},Nu=class{constructor(i){d(this,"tinyId");d(this,"data");let e=new DataView(i),t=0,r=[];for(;t<e.byteLength;){let o=e.getUint16(t+2),n=new bu(new Uint8Array(i).slice(t,t+2+2+o).buffer);r.push(n),t+=4+o}r.forEach(o=>{o.tag===1?this.tinyId=new TextDecoder().decode(o.data):o.tag===2&&(this.data=o.data)})}},Lp=new Set;function Wr(){let s=Math.floor(Math.random()*4294967296);return Lp.has(s)?Wr():(Lp.add(s),s)}var Up=Be(Qe());var Jr=class extends Up.default{constructor(e){super();d(this,"userId");d(this,"tinyId");d(this,"_sdpSemantics");d(this,"_isUplink");d(this,"_room");d(this,"_log");d(this,"_currentState","DISCONNECTED");d(this,"_prevTime",-1);this.userId=e.userId,this.tinyId=e.tinyId,this._room=e.room,this._sdpSemantics=e.room.sdpSemantics,this._isUplink=e.isUplink,this._log=R.createLogger({id:"n",userId:this._room.userId,remoteUserId:this._isUplink?void 0:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink})}get _peerConnection(){var e;return((e=this.singlePC)==null?void 0:e.getPeerConnection())||null}get singlePC(){return this._room.singlePC}get _signalChannel(){return this._room.signalChannel}close(e){this._log.info("close connection"),this.emit("closed",e)}emitConnectionStateChangedEvent(e){return e===this._currentState?!1:(E.emit(I.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:e,remoteUserId:this._isUplink?void 0:this.userId}),this.emit("connection-state-changed",{prevState:this._currentState,state:e}),this._currentState=e,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}getCurrentState(){return this._currentState}get isH264(){var e,t;return!!((t=(e=this._peerConnection)==null?void 0:e.remoteDescription)!=null&&t.sdp.includes("H264"))}};var an=class extends Jr{constructor(e){super(x(v({},e),{isUplink:!0}));d(this,"localMainAudioTrack",null);d(this,"localMainVideoTrack",null);d(this,"localAuxAudioTrack",null);d(this,"localAuxVideoTrack",null);d(this,"_isPublishingAux",!1);d(this,"_publishingLocalAudioTrack");d(this,"_publishingLocalVideoTrack");d(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});d(this,"_flag",0);d(this,"_checkPublishStateTimeoutId",-1);this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.videoCodec)||"h264"}get ssrc(){if(!this.singlePC)return{audio:0,video:0,videoRtx:0,small:0,smallRtx:0,auxiliary:0,auxiliaryRtx:0};let{audioSsrc:e,bigVideoSsrc:t,bigVideoRtxSsrc:r,smallVideoSsrc:o,smallVideoRtxSsrc:n,auxVideoSsrc:a,auxVideoRtxSsrc:c}=this.singlePC.uplinkSSRC;return{audio:e||0,video:t||0,videoRtx:r||0,small:o||0,smallRtx:n||0,auxiliary:a||0,auxiliaryRtx:c||0}}get flag(){return this._flag}set flag(e){this._flag!==e&&(this._flag=e,this.checkPublishState())}checkPublishState(e=!1){if(!e&&this._checkPublishStateTimeoutId>0)return;let{publishState:t,serverPublishState:r}=this,o=Object.keys(t).find(n=>t[n]!==r[n]);if(o)if(e)this._log.warn(`publish state not matched, ${o} local:${t[o]} server:${r[o]} ${bi()} ${Sr()}`),b.addCount({key:521e3});else{this._checkPublishStateTimeoutId=se.run("timeout",()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}se.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,o,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(Zt()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((o=a[2])!=null&&o.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(c=>{c.track&&(c.track.kind===m.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}get publishingState(){let{publishState:e}=this,t=v({},e);return this._publishingLocalAudioTrack&&(t.audio=!0),this._publishingLocalVideoTrack&&(this._isPublishingAux?t.auxVideo=!0:(t.bigVideo=!0,this._publishingLocalVideoTrack.small&&(t.smallVideo=!0))),t}get serverPublishState(){return{audio:!!(this.flag&ji),bigVideo:!!(this.flag&Ji),smallVideo:!!(this.flag&js),auxVideo:!!(this.flag&lr)}}get muteState(){var e,t,r;return{audio:!!((e=this.localMainAudioTrack)!=null&&e.muted),bigVideo:!!((t=this.localMainVideoTrack)!=null&&t.muted),auxVideo:!!((r=this.localAuxVideoTrack)!=null&&r.muted)}}initialize(){this.installEvents()}close(e){var r;let t=((r=this._peerConnection)==null?void 0:r.getSenders())||[];for(let o of t)o.replaceTrack(null);super.close(e),this.uninstallEvents(),this.uninstallTrackMuteEvents(this.localMainAudioTrack,this.localMainVideoTrack,this.localAuxVideoTrack),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this.on("connection-state-changed",this.handleConnectionStateChange,this),this.installSPCEvents()}installSPCEvents(){var e,t;(e=this.singlePC)!=null&&e.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||(t=this.singlePC)==null||t.on("spc-reconnected",this.onSinglePCReconnected,this)}uninstallSPCEvents(){var e;(e=this.singlePC)==null||e.off("spc-reconnected",this.onSinglePCReconnected,this)}uninstallEvents(){this.off("connection-state-changed",this.handleConnectionStateChange,this),this.uninstallSPCEvents()}emitConnectionStateChangedEvent(e,t){var n,a,c;let r=this._currentState,o=super.emitConnectionStateChangedEvent(e);return o&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:r,state:e}))),o}onVideoEncodeFailed(e){var t;e&&e.isMediaTrackActive&&this.videoCodec==="h264"&&(this._log.warn("h264 encoder not working"),(t=this.singlePC)!=null&&t.isVP8EncodeSupported&&(this._log.warn("switch to vp8"),this.singlePC.switchVideoEncoder("vp8")))}publish(o){return p(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){var l,u,h,f,_,D,g;if(!this.singlePC)return;this.installEvents(),yield Promise.all([this.singlePC.waitForPeerConnectionConnected(),this.singlePC.waitForReconnected()]);let{publishState:n,muteState:a}=this;if(e&&(this._publishingLocalAudioTrack=e,n.audio=!0,a.audio=e.muted),t){if(!this.singlePC.isH264EncodeSupported&&!this.singlePC.isVP8EncodeSupported)throw new y({code:S.NOT_SUPPORTED_H264,message:P({key:L.NOT_SUPPORTED_H264ENCODE})});this.singlePC.isUsingH264&&!this.singlePC.isH264EncodeSupported&&this.singlePC.isVP8EncodeSupported&&(this._log.warn("h264 encoder not supported"),yield this.singlePC.switchVideoEncoder("vp8")),he&&ls()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn("fallback video to 480p"),t.setProfile(gt["480p_2"]),yield t.applyProfile()),this._publishingLocalVideoTrack=t,r?(n.auxVideo=!0,a.auxVideo=t.muted):(n.bigVideo=!0,a.bigVideo=t.muted)}this._isPublishingAux=r;let c;if(t&&!r&&t.small&&(c=this._room.videoManager.smallTrack,n.smallVideo=!0),yield this._signalChannel.sendWaitForResponseWithRetry({command:Y.SPC_PUBLISH,responseCommand:G.SPC_PUBLISH_RESULT,data:x(v({},this.singlePC.uplinkSSRC),{state:n,muteState:a}),retries:3}),yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:c,isAuxiliary:r}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,t){this[r?"localAuxVideoTrack":"localMainVideoTrack"]=t,yield this.singlePC.setDegradationPreference(this._peerConnection.getSenders()[r?3:1],t.contentHint,t.streamType);let{scaleResolutionDownBy:A}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[r?3:1],A,t.streamType)}e&&(this[r?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((l=this.localMainAudioTrack)==null?void 0:l.profile.bitrate)||((u=this.localAuxAudioTrack)==null?void 0:u.profile.bitrate),bigVideo:(h=this.localMainVideoTrack)==null?void 0:h.profile.bitrate,smallVideo:(_=(f=this.localMainVideoTrack)==null?void 0:f.small)==null?void 0:_.bitrate,auxVideo:(D=this.localAuxVideoTrack)==null?void 0:D.profile.bitrate}),this.sendMediaSettings(),this.installTrackMuteEvents(e,t),(this._room.preferHW||(g=this._room.scheduleResult.config)!=null&&g.preferHW)&&t&&t.profile.width*t.profile.height>=1280*720&&this.singlePC.useHWEncoder(!0,r?7:2)})}publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:o}){if(!ht())return;this._log.info("publish by transceiver");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack,c=this._peerConnection.getTransceivers(),l=[],u=[],h=(_,D,g)=>{var M,ie;let A=c[D].sender.replaceTrack(g);u.push(D),(M=this.singlePC)!=null&&M.enableInsertableStreams&&A.then(()=>this.createEncodedStreams(c[D].sender,_)),(ie=this.singlePC)!=null&&ie.scriptTransformWorker&&this.initSenderTransfrom(c[D].sender,_),l.push(A)};a&&h(e.mediaType,0,a),n&&h(t.mediaType,o?3:1,n),r&&h(8,2,r);let f=this.singlePC.setTransceiverDirection(Z.SENDONLY,u);return l.push(f),Promise.all(l)}getTrackByMediaType(e){switch(e){case 1:return this.localMainAudioTrack||this._publishingLocalAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._publishingLocalVideoTrack;case 2:return this.localAuxVideoTrack||this._publishingLocalVideoTrack;default:return null}}createEncodedStreams(e,t){var a,c;if(this.singlePC.insertableStreamsAbortMap.has(e))return;let r=e.createEncodedStreams(),o=new AbortController;(a=this.singlePC)==null||a.addAbortController(e,o),((c=this.getTrackByMediaType(t))!=null&&c.enableEncodeFrame?r.readable.pipeThrough(new TransformStream({transform:(l,u)=>{var f;let h=this.getTrackByMediaType(t);u.enqueue((f=this.singlePC)!=null&&f.isUsingH264&&h?h.encodeFrame(l,t===8):l)}}),o):r.readable).pipeTo(r.writable,o).catch(l=>{this._log.debug("encoded stream error",l),l!=="destory"&&this._log.warn(l)})}initSenderTransfrom(e,t){if(!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker)return;let r=t!==2,o=t===8;e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:t===1,isMain:r,isSmall:o}))}enableSmall(e){return p(this,null,function*(){var r;if(!this.singlePC)return;let t=this._peerConnection.getTransceivers();if(e){if(this._room.videoManager.smallTrack){let{sender:o}=t[2];(r=this.singlePC)!=null&&r.enableInsertableStreams&&this.createEncodedStreams(o,8),yield o.replaceTrack(this._room.videoManager.smallTrack),yield this.singlePC.setTransceiverDirection(Z.SENDONLY,[2])}}else yield t[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(Z.INACTIVE,[2]);this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return p(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){var l,u;yield Promise.all([(l=this.singlePC)==null?void 0:l.waitForPeerConnectionConnected(),(u=this.singlePC)==null?void 0:u.waitForReconnected()]);let o=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localMainAudioTrack&&!this.localAuxAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(o?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=x(v({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),c.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=x(v({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),c.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.singlePC.setTransceiverDirection(Z.INACTIVE,c),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return p(this,null,function*(){let t={state:this.publishingState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponseWithRetry({command:Y.PUBLISH_STATE_CHANGE,data:t,responseCommand:G.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,commandDesc:"unpublish",responseCommand:G.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===S.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){var o;this._mediaSettings.videoCodec=((o=this.singlePC)==null?void 0:o.videoCodec)||"h264";let e=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:t,localAuxVideoTrack:r}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?r=this._publishingLocalVideoTrack:t=this._publishingLocalVideoTrack),ei){if(e&&e.outMediaTrack){let n=e.outMediaTrack.getSettings();this._mediaSettings.audioChannel=n.channelCount||1,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=n.sampleRate||0}if(t&&t.outMediaTrack){let n=t.outMediaTrack.getSettings(),{scaleResolutionDownBy:a}=t;this._mediaSettings.videoWidth=n.width/a||0,this._mediaSettings.videoHeight=n.height/a||0,this._mediaSettings.videoFps=n.frameRate||0,this._mediaSettings.videoBps=t.profile.bitrate*1e3,t.small&&(this._mediaSettings.smallVideoWidth=t.small.width,this._mediaSettings.smallVideoHeight=t.small.height,this._mediaSettings.smallVideoFps=t.small.frameRate,this._mediaSettings.smallVideoBps=t.small.bitrate*1e3)}if(r&&r.outMediaTrack){let n=r.outMediaTrack.getSettings(),{scaleResolutionDownBy:a}=r;this._mediaSettings.auxVideoWidth=n.width/a||0,this._mediaSettings.auxVideoHeight=n.height/a||0,this._mediaSettings.auxVideoFps=n.frameRate||0,this._mediaSettings.auxVideoBps=r.profile.bitrate*1e3}}else e&&e.outMediaTrack&&(this._mediaSettings.audioChannel=e.profile.channelCount,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=e.profile.sampleRate),t&&t.outMediaTrack&&(this._mediaSettings.videoWidth=t.profile.width,this._mediaSettings.videoHeight=t.profile.height,this._mediaSettings.videoFps=t.profile.frameRate,this._mediaSettings.videoBps=t.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Y.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:G.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return p(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?m.AUXILIARY:m.MAIN} stream`),Zt()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return p(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===m.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((o=this.localMainVideoTrack)!=null&&o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===Z.INACTIVE&&(yield this.singlePC.setTransceiverDirection(Z.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(e){return p(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?m.AUXILIARY:m.MAIN} stream`),Zt()&&(yield this.removeTrackByTransceiver(e,t))})}removeTrackByTransceiver(e,t){return p(this,null,function*(){if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===m.AUDIO)yield r[0].sender.replaceTrack(null);else{let o=t?3:1;yield r[o].sender.replaceTrack(null),o===1&&this._room.videoManager.hasSmall&&(yield r[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(Z.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(e){return p(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders(),r=e.outMediaTrack||e.mediaTrack;if(!t||t.length===0||!r||t.find(a=>a.track===r))return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${r.kind} track ${r.id} ${r.label} on ${o?m.AUXILIARY:m.MAIN} stream`),r.kind===m.AUDIO&&t[0]&&(yield t[0].replaceTrack(r)),r.kind===m.VIDEO&&(!o&&t[1]&&(yield t[1].replaceTrack(r)),o&&t[3]&&(yield t[3].replaceTrack(r))),!0})}setBandwidth(o){return p(this,arguments,function*({bandwidth:e,type:t,videoType:r}){if(this.singlePC){let n={};t===m.AUDIO?n.audio=e:r==="big"?n.bigVideo=e:r==="small"?n.smallVideo=e:n.auxVideo=e,yield this.singlePC.setBandwidth(n)}})}sendMutedFlag(e){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info(`send muted state: ${JSON.stringify(this.muteState)}`),this._signalChannel.sendWaitForResponseWithRetry({command:Y.UPDATE_MUTE_STAT,responseCommand:G.MUTE_RESULT,data:this.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&E.emit(I.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(e=m.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===m.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===m.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===m.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===m.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===ur?(this._log.error(xe.NOT_SUPPORTED_H264ENCODE),new y({code:S.NOT_SUPPORTED_H264,message:P({key:L.NOT_SUPPORTED_H264ENCODE})})):new y({code:S.UNKNOWN,message:P({key:L.SIGNAL_RESPONSE_FAILED,data:{signalResponse:G.PUBLISH_RESULT,code:e,message:t}})})}onSinglePCReconnected(){return p(this,null,function*(){this.isMainStreamPublished&&(this._log.warn("republish main stream"),yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(this._log.warn("republish aux stream"),yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0}))})}};N([Ze(function({localVideoTrack:e}){e==null||e.once("6",this.onVideoEncodeFailed,this)})],an.prototype,"publish",1),N([Ze(function({localVideoTrack:e}){e==null||e.off("6",this.onVideoEncodeFailed,this)})],an.prototype,"unpublish",1);var vu=an;function Vp(s){return Object.keys(s).filter(i=>s[i])}var Vs=class extends Jr{constructor(e){super(x(v({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"remoteAudioTrack");d(this,"remoteVideoTrack");d(this,"remoteAuxiliaryTrack");d(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0});d(this,"jitterBufferTimeoutId",-1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=new xi(this._room,this),this.remoteVideoTrack=new ui(this._room,this),this.remoteAuxiliaryTrack=new vs(this._room,this),this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264"}get subscribeState(){return{audio:this.remoteAudioTrack.isSubscribed||this.remoteAudioTrack.isSubscribing,video:this.remoteVideoTrack.isBig&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),smallVideo:this.remoteVideoTrack.isSmall&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),auxiliary:this.remoteAuxiliaryTrack.isSubscribed||this.remoteAuxiliaryTrack.isSubscribing}}get muteState(){return Si(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===m.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){this.installEvents()}close(e){clearTimeout(this.jitterBufferTimeoutId),super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents(),this.removeDownlink()}installEvents(){this.singlePC&&(this.listeners("track").includes(this.onTrack)||this.singlePC.on("track",this.onTrack,this),this.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||this.singlePC.on("spc-reconnected",this.onSinglePCReconnected,this))}uninstallEvents(){this.singlePC&&(this.singlePC.off("track",this.onTrack,this),this.singlePC.off("spc-reconnected",this.onSinglePCReconnected,this))}emitConnectionStateChangedEvent(e){var o,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){var u,h;let t=e.streams[0],{track:r,receiver:o}=e;if(!t.id.includes(this.tinyId))return;let a=t.id.includes("aux")?"auxiliary":"main";this._log.debug(`ontrack ${a} ${r.kind}`);let c=m.AUDIO;r.kind===m.VIDEO&&(c=a===m.MAIN?m.VIDEO:m.AUXILIARY);let l=this.remoteAudioTrack;c===m.VIDEO?l=this.remoteVideoTrack:c===m.AUXILIARY&&(l=this.remoteAuxiliaryTrack),(u=this.singlePC)==null||u.receiverRemoteTrackMap.set(o,l),(h=this.singlePC)!=null&&h.scriptTransformWorker&&this.initReceiverTransform(o,a,r.kind===m.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(o),l.setInputMediaStreamTrack(r)}createEncodedStreams(e){if(!this.singlePC.insertableStreamsAbortMap.has(e)){let t=e.createEncodedStreams(),r=new AbortController,o={abortController:r,enqueue:n=>{var c,l;let a=(c=this.singlePC)==null?void 0:c.receiverRemoteTrackMap.get(e);return!a||a.kind==="video"&&!((l=this.singlePC)!=null&&l.isUsingH264)?n:a.decodeFrame(n)}};t.readable.pipeThrough(new TransformStream({transform:(n,a)=>{let c=o.enqueue(n);c&&a.enqueue(c)}})).pipeTo(t.writable,r).catch(n=>{n!=="destory"&&this._log.warn(n)}),this.singlePC.addAbortController(e,r)}}initReceiverTransform(e,t,r){!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!0,isAudio:r,userId:this.userId,streamType:t}))}subscribe(e,t){return p(this,null,function*(){try{if(this._log.info(`subscribe ${t} ${Vp(e)}`),this.hasSSRC){let r="subscribe_change";Object.values(e).find(o=>o===!0)||(r="unsubscribe"),yield this.sendSubscription(r,e)}else yield this.doSubscribe(e),this.checkTrackEnded(e)}catch(r){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${r.message} ${JSON.stringify(this.muteState)}`),new y({code:S.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):r}})}checkTrackEnded(e){var t,r,o;if((e.audio&&((t=this.remoteAudioTrack.mediaTrack)==null?void 0:t.readyState)==="ended"||e.video&&((r=this.remoteVideoTrack.mediaTrack)==null?void 0:r.readyState)==="ended"||e.auxiliary&&((o=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:o.readState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),Ye&&dt<92)return;this.singlePC.startReconnection()}}unsubscribe(r){return p(this,arguments,function*({remoteTracks:e,streamType:t}){var a;if(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed){this._log.info(`${t} stream already unsubscribed`);return}let o=v({},this.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(o).find(c=>c===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${Vp(o)}]`),n==="unsubscribe"&&((a=this.singlePC)==null||a.removeDownlinkQueue.add(this.tinyId)),yield this.sendSubscription(n,o),n==="unsubscribe"&&(yield this.removeDownlink())})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},o=Y.UNSUBSCRIBE,n=G.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=Y.SUBSCRIBE_CHANGE,n=G.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:o,data:r,responseCommand:n,timeout:1e4,retries:3}).then(({data:a})=>{if(a.code!==0){let c=new y({code:a.code,message:P({key:L.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}onSinglePCReconnected(){return p(this,null,function*(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary)&&(this._log.warn(`resubscribe ${JSON.stringify(this.subscribeState)}`),yield this.doSubscribe(this.subscribeState),this.remoteAudioTrack.checkDecodeResult(),this.remoteVideoTrack.checkDecodeResult(),this.remoteAuxiliaryTrack.checkDecodeResult())})}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return p(this,arguments,function*(e=this.subscribeState,t=!0){if(this.singlePC){this.singlePC.addDownlinkQueue.add(this.tinyId),yield this.singlePC.waitForPeerConnectionConnected();try{if(t||!this.hasSSRC){let r={audioSsrc:Wr(),bigVideoSsrc:Wr(),bigVideoRtxSsrc:Wr(),auxVideoSsrc:Wr(),auxVideoRtxSsrc:Wr()},{audioSsrc:o,bigVideoSsrc:n,bigVideoRtxSsrc:a,auxVideoSsrc:c,auxVideoRtxSsrc:l}=r;this.ssrc={audio:o,video:n,videoRtx:a,auxiliary:c,auxiliaryRtx:l},this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc});try{let u=yield this._signalChannel.sendWaitForResponseWithRetry({command:Y.SPC_SUBSCRIBE,responseCommand:G.SPC_SUBSCRIBE_RESULT,data:{srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:!1,ssrc:r},retries:3,retryTimeout:0});if(u.data.code!==0)throw new y({code:u.data.code,message:u.data.message})}catch(u){throw yield this.removeDownlink(),u}return}this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc})}finally{if(!ca)return;let{main:r,aux:o}=this._room.jitterBufferDelay||{},{jitterDelay:n=r,jitterDelayAux:a=o}=this._room.scheduleResult.config||{};(j(n)||j(a))&&this.setJitterBufferDelay({mainDelay:n,auxDelay:a})}}})}removeDownlink(){return p(this,null,function*(){if(!this.singlePC)return;this.ssrc={audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0},this.singlePC.removeDownlinkQueue.delete(this.tinyId);let e=this._room.scheduleResult.config;(e!=null&&e.jitterDelay||e!=null&&e.jitterDelayAux)&&this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),yield this.singlePC.removeDownlink(this.userId)})}setJitterBufferDelay({mainDelay:e,auxDelay:t}){if(!ca||!this.singlePC||!this._peerConnection||Ci(e)&&Ci(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let r=this.singlePC.getReceiversByUserId(this.userId);return j(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),j(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,Ci(e)&&(this.remoteAudioTrack.jitterBufferDelay=t)),new Promise(o=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o})})}doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o}){try{if(e===0&&t===0)return r.forEach(a=>a.jitterBufferTarget=0),o();if(r.forEach(a=>{var h;let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack||Ci(e)&&a.track===this.remoteAudioTrack.outMediaTrack;if(c&&Ci(t)||!c&&Ci(e))return;let l=c?t||0:e,u=(a.jitterBufferTarget||0)+100;u>l||(a.jitterBufferTarget=u,this._log.debug(`set ${c?"aux ":""}${(h=a==null?void 0:a.track)==null?void 0:h.kind} jitterBuffer delay ${u} -> ${l}`))}),!r.find(a=>{let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack?t||0:e;return a.jitterBufferTarget<c}))return this._log.info(`set jitterBuffer main: ${e} aux: ${t} done`),o();this.jitterBufferTimeoutId=setTimeout(()=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o})},1e3)}catch(n){this._log.warn(`set jitterBuffer delay error: ${n}`),clearTimeout(this.jitterBufferTimeoutId),o()}}get audioReceiver(){var e;return((e=this.singlePC)==null?void 0:e.getReceiversByUserId(this.userId)[0])||null}};N([ni(),Q(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this.off("closed",n),o(new y({code:S.API_CALL_ABORTED,message:P({key:L.CONNECTION_ABORTED,data:a})}))};this.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this.off("closed",n)})})})],Vs.prototype,"subscribe",1),N([ni()],Vs.prototype,"unsubscribe",1),N([Li(()=>"jitter")],Vs.prototype,"setJitterBufferDelay",1);var Bp=Vs;function Fp(){return Q(s=>function(...i){return p(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(i=i.filter(t=>t.outMediaTrack&&t.state==="ready"),!i.length))return;E.emit("61",{room:this});let e=s.apply(this,i);return i.forEach(t=>t.publish(this,e)),e})})}function $p(){return Q(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>t.unpublish()),e})}var Hp=Be(Qe());function sE(){return Math.floor(Math.random()*16383)}var Ic=class Ic extends Hp.EventEmitter{constructor(e,t){super();this.room=e;this.signalChannel=t;d(this,"log");d(this,"cmdIdSeqMap",new Map);d(this,"messageMap",new Map);this.log=R.createLogger({id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(G.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",r=>{[...this.messageMap.keys()].forEach(o=>{o.split("_").slice(0,-1).join("_")===r&&this.messageMap.delete(o)})})}send({cmdId:e,data:t}){let r=this.cmdIdSeqMap.get(e)||sE(),o={cmdId:e,msg:btoa(String.fromCharCode(...new Uint8Array(t))),ordered:!0,reliable:!0,streamSeq:r};this.cmdIdSeqMap.set(e,r+1),this.signalChannel.send(Y.SEND_CUSTOM_MSG,o),this.log.debug(`send custom msg: ${JSON.stringify(o)}`)}onReceiveMsg(e){let{data:t}=e.data,r=this.room.tinyIdToUserIdMap.get(t.srcTinyId);if(r){let o={userId:r,cmdId:t.cmdId,seq:t.streamSeq,data:Uint8Array.from(atob(t.msg),n=>n.charCodeAt(0)).buffer};if(t.ordered){let n=`${r}_${o.cmdId}`,a=this.messageMap.get(n);if(!a||a.lastSeq===0)a||(a={lastSeq:0,cachedMessageMap:new Map},this.messageMap.set(n,a),setTimeout(()=>this.emitMessage(o,!0),100)),a.cachedMessageMap.set(o.seq,{message:o});else if(Math.abs(a.lastSeq-o.seq)>Ic.SEQ_INTERVAL)this.messageMap.set(n,{lastSeq:o.seq,cachedMessageMap:new Map}),this.emitMessage(o);else if(o.seq>a.lastSeq){if(o.seq===a.lastSeq+1)this.emitMessage(o);else if(!a.cachedMessageMap.has(o.seq)){let c=setTimeout(()=>this.emitMessage(o,!0),5e3);a.cachedMessageMap.set(o.seq,{message:o,timeoutId:c})}}else this.log.debug(`drop message ${o.userId}-${o.cmdId}-${o.seq}`)}else this.emit("message",o)}else{this.log.warn(`receive msg from unknown user, wait peer-join tinyId: ${t.srcTinyId}`);let o=n=>{n.tinyId===t.srcTinyId&&(this.room.off("peer-join",o),this.onReceiveMsg(e))};this.room.on("peer-join",o),Ii(2e3).then(()=>this.room.off("peer-join",o))}}emitMessage(e,t=!1){var a;let r=this.messageMap.get(`${e.userId}_${e.cmdId}`),o=e;if(r){if(t){let c=[...r.cachedMessageMap.values()].sort((l,u)=>l.message.seq-u.message.seq);c[0]&&(o=c[0].message)}r.lastSeq!==0&&o.seq-r.lastSeq>1&&this.log.debug(`msg lost userId: ${o.userId} seq: ${r.lastSeq} -> ${o.seq}`),r.lastSeq=o.seq,clearTimeout((a=r.cachedMessageMap.get(o.seq))==null?void 0:a.timeoutId),r.cachedMessageMap.delete(o.seq)}this.log.debug(`receive custom msg: ${JSON.stringify(o)}`),this.emit("message",o);let n=r==null?void 0:r.cachedMessageMap.get(o.seq+1);n&&this.emitMessage(n.message)}};d(Ic,"SEQ_INTERVAL",300);var Sc=Ic;var{isString:Gp,isUndefined:Bs,getNetworkType:oE,isEmpty:cn}=ct,$t=class extends Tc{constructor(e){super(e);d(this,"_businessInfo");d(this,"userManager");d(this,"_version");d(this,"_heartbeat",-1);d(this,"_lastHeartBeatTime",-1);d(this,"_stats");d(this,"_joinTimeout",-1);d(this,"_firstPublishedList",null);d(this,"_joinReject",null);d(this,"_isRelayChanged",!1);d(this,"sdpSemantics");d(this,"signalChannel",null);d(this,"uplinkConnection",null);d(this,"singlePC",null);d(this,"enableSPC",_s);d(this,"_changeBigSmallRecords",new Map);d(this,"networkQuality");d(this,"_iceTransportPolicy");d(this,"forceRelay",!1);d(this,"_turnServers",[]);d(this,"_iceServersFromJoin");d(this,"_syncUserListInterval",-1);d(this,"_smallStreamConfig",{bitrate:100,frameRate:15,height:120,width:160});d(this,"enableSEI",!1);d(this,"_enableAudioVolumeEvaluation",!1);d(this,"_audioVolumeIntervalId",0);d(this,"_enableMultiAuxStream",!1);d(this,"_pureAudioPushMode",!1);d(this,"_customMessageManager");d(this,"preferHW",!1);d(this,"healthDetector");d(this,"playoutDelay");d(this,"jitterBufferDelay");d(this,"_updateAudioLevelTaskId",-1);this._stats=new rn(this,this._log),this.userManager=new Ja(this.userId,this._log),this._version=Me,this.sdpSemantics=qr,Bs(e.sdpSemantics)?ti.isUnifiedPlanDefault()&&(this.sdpSemantics=qi):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${oE()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=Bs(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&_s,!Bs(e.enableSPC)&&_s&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this._initBusinessInfo(e),this.healthDetector=new Dp(this)}get isMainStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isMainStreamPublished)}get isMainAudioPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.localMainAudioTrack)}get isAuxStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isAuxStreamPublished)}get hasAuxStream(){return[...this.remotePublishedUserMap.values()].findIndex(e=>e.muteState.hasAuxiliary)>=0}get userMap(){return this.userManager.userMap}get remotePublishedUserMap(){return this.userManager.remotePublishedUserMap}get tinyIdToUserIdMap(){return new Map([...this.userMap.values()].map(e=>[e.tinyId,e.userId]))}join(e,t,r){return p(this,null,function*(){return this.userManager.mySelfId=this.userId,this.userManager.on("1",o=>{this.emit("peer-join",o)}),this.userManager.on("2",o=>{this.closeDownLinkConnection(o,"remote user exitRoom"),this.emit("peer-leave",o)}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",n=>{var o=ku(n,[]);E.emit(I.REMOTE_PUBLISH_STATE_CHANGED,v({room:this},o)),this.emit("remote-publish-state-changed",v({},o))}),this.joinParams=e,new Promise((o,n)=>p(this,null,function*(){var a,c;this._joinReject=n;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(u){if(u instanceof y&&u.code===S.SPC_INITIALIZED_FAILED)(a=this.signalChannel)==null||a.destroy(),yield this.initialize();else return n(u)}let l=w();yield this.doJoin(e,(c=this.singlePC)==null?void 0:c.clientAbility),b.addSuccessEvent({key:521708,cost:w()-l}),o(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(l){b.addFailedEvent({key:521708,error:l}),n(l)}this._joinReject=null}))})}initSinglePC(){return p(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new Ft({signalChannel:this.signalChannel,room:this,enableCustomMessage:!1}),this.singlePC.on("sei-message",e=>this.emit("sei-message",e)),this.singlePC.on("dump",e=>this.emit("dump",e)),this.singlePC.once("error",()=>this.fallbackToMPC());try{return yield this.singlePC.initialize()}catch(e){throw this.fallbackToMPC(),new y({code:S.SPC_INITIALIZED_FAILED,message:e==null?void 0:e.message})}}})}doJoin(e,t){return new Promise((r,o)=>p(this,null,function*(){var c,l,u;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(ye.SETUP_FAILED,h=>{this.clearJoinTimeout(),E.emit(I.JOIN_SIGNAL_CONNECTION_END,{room:this,error:h}),o(h)}),ge((l=(c=this.scheduleResult)==null?void 0:c.config)==null?void 0:l.singlePC)&&_s&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2),t&&this.playoutDelay&&(t.playoutDelay=this.playoutDelay);let n={roomId:String(e.roomId||e.strRoomId),useStringRoomId:this.useStringRoomId,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel,trtcRole:e.role,trtcScene:this.scene==="live"?2:1,sdpSemantics:this.sdpSemantics,version:this._version,ua:navigator&&navigator.userAgent||"",terminalType:cd(),netType:fr(),bussinessInfo:this._businessInfo,ability:t,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0};this._log.debug(`join room signal data: ${JSON.stringify(n)}`);let a=5e3;(u=this.scheduleResult.config)!=null&&u.enterRoomTimeout&&this.scheduleResult.config.enterRoomTimeout>=1&&(a=this.scheduleResult.config.enterRoomTimeout*1e3),this._joinTimeout=window.setTimeout(()=>{o(new y({code:S.JOIN_ROOM_FAILED,message:P({key:L.JOIN_ROOM_TIMEOUT})}))},a),E.emit(I.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?Y.SPC_JOIN_ROOM:Y.JOIN_ROOM,n),this.signalChannel.once(G.JOIN_ROOM_RESULT,h=>p(this,null,function*(){this.clearJoinTimeout();let{code:f,message:_,data:D,tinyId:g}=h.data;E.emit(I.JOIN_RECEIVED_CMD_RES,{room:this,code:f}),f===0?(this._log.info("Join room success, start heartbeat"),g&&(this.tinyId=g),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=D.publishers,this._iceServersFromJoin=D.iceServer?[D.iceServer]:[],this.singlePC&&this.singlePC.setIceServers(this.getIceServers()).then(()=>{var A;(A=this.singlePC)==null||A.connect(x(v({},D.ability),{useVp8:D.ability.useVp8||!!e.useVp8})).catch(()=>{})}),r()):(this._log.error(`Join room failed result: ${f} error: ${_}`),o(new y({code:S.JOIN_ROOM_FAILED,extraCode:f,message:P({key:L.JOIN_ROOM_FAILED,data:{error:_,code:f}})})))}))}))}reJoin(){return p(this,null,function*(){if(!this.isJoined){this._log.warn("reJoin abort");return}try{this._log.warn(`reJoin pending: ${this.joinParams.roomId}`);let e,t=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,t.push(this.initSinglePC().then(r=>(e=r,r)))),this.signalChannel&&(this.signalChannel.close(),t.push(this.signalChannel.connect())),yield Promise.all(t),yield this.doJoin(x(v({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),e),this._log.warn("reJoin success"),te.logSuccessEvent({userId:this.userId,eventType:rt.REJOIN}),this.singlePC){let r=o=>{var n;o.state==="CONNECTED"&&((n=this.singlePC)==null||n.off(mi.CONNECTION_STATE_CHANGED,r),this.uplinkConnection instanceof vu&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(a=>{a.installEvents(),a.onSinglePCReconnected()}))};this.singlePC.on(mi.CONNECTION_STATE_CHANGED,r),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof tn&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(e){this._log.warn(`reJoin fail ${e}`),this.reset(),te.logFailedEvent({userId:this.userId,eventType:rt.REJOIN,error:e}),this.emit("error",new y({code:S.JOIN_ROOM_FAILED,message:P({key:L.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return p(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),r=this.signalChannel||ip(this.userId),o=!!(r&&r.isConnected&&r.keepAlive&&r.userId===this.userId),n;return Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(n=this.scheduleResult.domains[0]),this._log.info(`${o?"reuse":"setup"} signal channel`),o?(r.url=e,r.backupUrl=t,r.room=this,this.signalChannel=r):(r&&r.close(),this.signalChannel=new Ls({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:e,backupUrl:t,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?n:void 0}),this._customMessageManager=new Sc(this,this.signalChannel),this._customMessageManager.on("message",a=>{this.emit("custom-message",a)})),this.networkQuality||(this.networkQuality=new Us({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(Us.EVENT_NETWORK_QUALITY,a=>{var c;this.emit("network-quality",a),(c=this.singlePC)==null||c.detectTCPAndUDP(a)})),Ge(this,this.signalChannel).add(ye.CONNECTION_STATE_CHANGED,a=>{E.emit(I.SIGNAL_CONNECTION_STATE_CHANGED,v({room:this},a)),this.emit("signal-connection-state-changed",a)}).add(ye.RECONNECT_FAILED,a=>{this.reset(),this.emit("error",a)}).add(G.PEER_JOIN,a=>{let{srcTinyId:c,userId:l,role:u}=a.data.data;this.userManager.addUser({userId:l,tinyId:c,role:u})}).add(G.PEER_LEAVE,a=>{let{userId:c,reason:l=0}=a.data.data;this.userManager.deleteUser(c,l)}).add(G.UPDATE_REMOTE_MUTE_STAT,a=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(a.data)}).add(G.CLIENT_BANNED,a=>{let c=a.data.data,{reason:l}=c;if(te.uploadEvent({log:`stat-banned:${l}`,userId:this.userId}),l==="user_time_out"){this._log.warn(`${l} last heart beat time: ${this._lastHeartBeatTime} interval: ${Date.now()-this._lastHeartBeatTime}, visibility: ${document.visibilityState}`),this.reJoin();return}this._log[l==="kick"?"error":"info"](`user was banned because of [${l}]`),this.reset(),this.emit("banned",{reason:l})}),this.signalChannel.once(ye.SETUP_SUCCESS,a=>{this.tinyId=a.signalInfo.tinyId,E.emit(I.JOIN_SIGNAL_CONNECTION_END,{room:this})}),E.emit(I.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),o&&E.emit(I.JOIN_SIGNAL_CONNECTION_END,{room:this}),o})}setSignalChannel(e){this.signalChannel=e,e||be(this)}leave(){return p(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),E.emit(I.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(Y.LEAVE_ROOM)})}clearNetworkQuality(){this.networkQuality&&(this.networkQuality.stop(),delete this.networkQuality)}closeConnections(){this.remotePublishedUserMap.forEach(e=>{this.closeDownLinkConnection(e.userId,"you exitRoom")})}clearJoinTimeout(){clearTimeout(this._joinTimeout),this._joinTimeout=-1}startHeartbeat(){this._heartbeat===-1&&(this._heartbeat=se.run("ric",this.doHeartbeat.bind(this),{delay:2e3}))}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),se.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return p(this,null,function*(){var n;let e=this.badCaseDetector.getMonitorFreeze(),t=yield this._stats.getStatsReport({uplinkConnection:this.uplinkConnection,downlinkConnections:this.remotePublishedUserMap,freezeMap:e});this.badCaseDetector.resetMonitor();let r=(n=this.signalChannel)!=null&&n.isConnected?Im(this.userId):[],o=x(v({str_sdk_version:Gs,uint64_datetime:new Date().getTime(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyId},msg_event_msg:r,str_acc_ip:this.getSignalInfo().relayIp,str_client_ip:this.getSignalInfo().clientIp},t),{msg_device_info:v({uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:fr()},t.msg_device_info)});if(this.heartbeatReport=o,E.emit(I.HEARTBEAT_REPORT,{room:this,report:o}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(Y.ON_QUALITY_REPORT,o);let a=Date.now();this._lastHeartBeatTime>0&&a-this._lastHeartBeatTime>1e4&&this._log.warn(`heartbeat took ${a-this._lastHeartBeatTime}`),this._lastHeartBeatTime=a,this.signalChannel.isOnline||(this._log.warn("signal channel is not online"),this.signalChannel.startReconnection())}this.emit("heartbeat-report",x(v({},o),{bytes_sent:this._stats.totalBytesSent+this.signalChannel.bytesSent,bytes_received:this._stats.totalBytesReceived+this.signalChannel.bytesReceived}))}!this._isRelayChanged&&this.isRelayMaybeFailed()&&(this.reJoin(),this._isRelayChanged=!0)})}onPublishedUserList(e){if(!this.isJoined)return;let t=e.data.userList.filter(r=>r.flag!==Mc).map(({userId:r,srcTinyId:o,flag:n})=>{r===this.userId&&this.uplinkConnection&&(this.uplinkConnection.flag=n);let a=this.remotePublishedUserMap.get(r);return a&&this.checkSubscribeBigSmallVideo(a),{userId:r,tinyId:o,flag:n}});e.data.mixRobotList.forEach(({userId:r,srcTinyId:o,flag:n,mixUserList:a})=>{t.unshift({userId:r,tinyId:o,flag:n,isRobot:!0,mixUserList:a})}),E.emit(I.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:t}),this.userManager.setRemotePublishedUserList(t)}closeUplink(e="you unpublished"){this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish(),this.uplinkConnection.close(e),this.uplinkConnection instanceof tn&&(this.uplinkConnection=null)),this.localTracks.forEach(t=>t.unpublish()),this.localTracks.clear()}createDownlinkConnection({userId:e,tinyId:t,flag:r,isRobot:o}){let n=new(this.singlePC?Bp:gu)({userId:e,tinyId:t,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:r,isRobot:o});this.userManager.addRemotePublishedUser(n),this.installDownlinkEvents(n,e),this.emit("remote-published",n)}closeDownLinkConnection(e,t="remote user unpublished"){let r=this.remotePublishedUserMap.get(e);r&&(r.close(t),this.emit("remote-unpublished",r))}installDownlinkEvents(e,t){e.on("error",r=>{let o=r.getCode();o!==S.ICE_TRANSPORT_ERROR&&(o===S.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(t),this.emit("error",r))}),e.on("connection-state-changed",r=>{this.emit("media-connection-state-changed",x(v({},r),{userId:e.userId}))}),e.on("firewall-restriction",()=>{this.emit("firewall-restriction")})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=se.run("ric",this.syncUserList.bind(this)))}stopSyncUserListInterval(){se.clearTask(this._syncUserListInterval),this._syncUserListInterval=-1}syncUserList(){return this.getUserList().then(e=>{this.userManager.setUserList(e)}).catch(e=>{this._log.debug(`sync user list failed: ${e}`)})}getUserList(){var e;return(e=this.signalChannel)!=null&&e.isConnected?this.signalChannel.sendWaitForResponse({command:Y.GET_USER_LIST,responseCommand:G.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(({data:t})=>{let{code:r,message:o}=t;if(r===0)return(t.data&&t.data.userList||[]).map(({userId:a,srcTinyId:c,role:l})=>({userId:a,tinyId:c,role:l}));throw P({key:L.SIGNAL_RESPONSE_FAILED,data:{signalResponse:G.USER_LIST_RES,code:r,message:o}})}):Promise.reject("not connected")}getAllConnections(){let e=[...this.remotePublishedUserMap.values()];return this.uplinkConnection&&e.push(this.uplinkConnection),e}isRelayMaybeFailed(){if(this.signalChannel&&!this.signalChannel.isOnline||!uu)return!1;if(this.singlePC)return this.singlePC.reconnectionCount>6;let e=this.getAllConnections();if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(e[t].getReconnectionCount()<6)return!1;return!0}checkConnectionsToReconnect(){var e;this.singlePC?((e=this.singlePC.getPeerConnection())==null?void 0:e.connectionState)===me.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(r=>{if(r instanceof it&&!r.getIsReconnecting()){let o=r.getPeerConnection();o&&o.connectionState===me.CLOSED&&(this._log.warn(`[${r.getUserId()}] pc is closed but not reconnect`),r.startReconnection())}})}fallbackToMPC(){return p(this,null,function*(){var e;if(this._log.warn("fallback to multi pc"),te.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(e=this.singlePC)==null||e.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin()),this.uplinkConnection){let t=this.uplinkConnection;this.uplinkConnection=new tn({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),t.isMainStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localMainAudioTrack,localVideoTrack:t.localMainVideoTrack,isAuxiliary:!1})),t.isAuxStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localAuxAudioTrack,localVideoTrack:t.localAuxVideoTrack,isAuxiliary:!0})),t.close()}for(let t of[...this.remotePublishedUserMap.values()]){let r=new gu({userId:t.userId,tinyId:t.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:t.flag,remoteAudioTrack:t.remoteAudioTrack,remoteVideoTrack:t.remoteVideoTrack,remoteAuxiliaryTrack:t.remoteAuxiliaryTrack});this.installDownlinkEvents(r,t.userId),this.remotePublishedUserMap.set(t.userId,r),t.isMainStreamSubscribed&&(yield r.subscribe(t.subscribeState,"main")),t.isAuxStreamSubscribed&&(yield r.subscribe(t.subscribeState,"auxiliary"))}})}destroy(){this.isDestroyed||(this.signalChannel&&(this._log.info("destroying SignalChannel"),this.signalChannel.close(),this.signalChannel=null),super.destroy(),this._joinReject&&(this._joinReject(new y({code:S.INVALID_OPERATION,message:P({key:L.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.removeAllListeners(),this.healthDetector.destroy(),se.clearTask(this._audioVolumeIntervalId))}switchRole(e){return p(this,null,function*(){this.role!==e&&(e==="audience"&&this.uplinkConnection&&this.closeUplink("you switch role to audience"),yield this.doSwitchRole(e))})}doSwitchRole(e){let t={command:Y.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:G.SWITCH_ROLE_RES,retries:1};return this._log.info(`switchRole signal data: ${JSON.stringify(t.data)}`),this.signalChannel.sendWaitForResponseWithRetry(t).then(r=>{let{code:o,message:n}=r.data;if(o!==0)throw new y({code:S.SWITCH_ROLE_FAILED,message:P({key:L.SWITCH_ROLE_FAILED,data:{message:n,code:o}})});this.role=e}).catch(r=>{throw r instanceof y&&r.getCode()===S.API_CALL_TIMEOUT&&(r=new y({code:S.SWITCH_ROLE_FAILED,message:P({key:L.SWITCH_ROLE_TIMEOUT})})),this._log.error(r),r})}publish(...e){return p(this,null,function*(){let t={},r={};e.forEach(c=>{c instanceof St&&(c instanceof ci?r.audio=c:t.audio=c),c instanceof Je&&(c instanceof at&&c.mediaType===2?r.video=c:t.video=c)});let o=cn(t),n=cn(r);(!o||!n)&&!this.uplinkConnection&&(this.singlePC?this.uplinkConnection=new vu({userId:this.userId,tinyId:this.tinyId,room:this}):this.uplinkConnection=new tn({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",c=>{this.emit("media-connection-state-changed",x(v({},c),{userId:this.userId}))}),this.uplinkConnection.on("firewall-restriction",()=>{this.emit("firewall-restriction")}),this.uplinkConnection.on("error",c=>{let l=c.getCode();l!==S.ICE_TRANSPORT_ERROR&&(l===S.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",c))}));let a=e.map(c=>c.kind).join(",");o||(this._log.info(`publish() => main ${a}`),yield this.uplinkConnection.publish({localAudioTrack:t.audio,localVideoTrack:t.video,isAuxiliary:!1}),this._log.info("main is published")),n||(this._log.info(`publish() => aux ${a}`),yield this.uplinkConnection.publish({localAudioTrack:r.audio,localVideoTrack:r.video,isAuxiliary:!0}),this._log.info("aux is published"))})}unpublish(...e){return p(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||!this.isMainStreamPublished&&!this.isAuxStreamPublished||!this.uplinkConnection)return;let t={},r={};e.forEach(o=>{!o.mediaTrack||!o.isPublished||(o instanceof St&&(o instanceof ci?r.audio=o:t.audio=o),o instanceof Je&&(o instanceof at&&o.mediaType===2?r.video=o:t.video=o))});try{let o=e.map(n=>n.kind).join(",");cn(t)||(this._log.info(`unpublish() => main ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:t.audio,localVideoTrack:t.video})),cn(r)||(this._log.info(`unpublish() => aux ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:r.audio,localVideoTrack:r.video}))}catch(o){}this.localTracks.size===0&&this.closeUplink("you unpublished")})}addTrack(e){if(!this.uplinkConnection||!e.mediaTrack)return Promise.resolve();let t=this.uplinkConnection.addTrack(e);return e.publish(this,t),t}removeTrack(e){return!this.uplinkConnection||!e.mediaTrack?Promise.resolve():this.uplinkConnection.removeTrack(e).then(t=>(e.unpublish(),t))}replaceTrack(e){return!this.uplinkConnection||!e.mediaTrack||!Md()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&E.emit(I.LOCAL_TRACK_REPLACED,{track:e})})}setBandWidth(e){return p(this,null,function*(){this.uplinkConnection&&(yield this.uplinkConnection.setBandwidth(e),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(e){return p(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();e&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:m.VIDEO,videoType:m.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(e)})}subscribe(...e){return p(this,null,function*(){if(e=e.filter(n=>!n.isSubscribed),e.length===0)return;let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let o=e.find(n=>n.mediaType===2)?"auxiliary":"main";try{let n=v({},r.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:n.audio=!0;break;case 4:n.video=!0;break;case 8:n.smallVideo=!0;break;case 2:n.auxiliary=!0;break}});let a=this._changeBigSmallRecords.get(t);a&&a.options.smallVideo&&r.muteState.hasSmall&&n.video&&(n.video=!1,n.smallVideo=!0),E.emit(I.SUBSCRIBE_START,{room:this,streamType:o,remotePublishedUser:r,subscribeState:n}),this._log.info(`subscribe() => ${t} ${o} [${lc(n)}] prev: [${lc(r.subscribeState)}]`),yield r.subscribe(n,o),this._log.info(`subscribe ${t} ${o} done`);for(let c of e)c.mediaTrack||(yield c.waitHasMediaTrack());E.emit(I.SUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})}catch(n){let a=n instanceof y?n.getCode():S.UNKNOWN,c=n;throw n instanceof y?a===S.REMOTE_STREAM_NOT_EXIST&&(c=new y({code:S.API_CALL_ABORTED,message:P({key:L.API_CALL_ABORTED,data:{message:n.message,userId:t,streamType:o}})}),this._log.warn(c)):(c=new y({code:a,message:P({key:L.SUBSCRIBE_FAILED,data:{message:n.message,userId:t,streamType:o}})}),this._log.error(c)),c}})}unsubscribe(...e){return p(this,null,function*(){let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let o=e.find(n=>n.mediaType===2)?"auxiliary":"main";this._log.info(`unsubscribe() => ${t} ${o}`);try{yield r.unsubscribe({remoteTracks:e,streamType:o})}catch(n){this._log.warn(`unsubscribe() => failed ${n}`)}e.forEach(n=>{n.unsubscribe(),n.mediaType===8&&n.setMediaType(4)}),E.emit(I.UNSUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(e=2e3,t){if(e<=0){this._enableAudioVolumeEvaluation=!1,se.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),E.emit(I.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&se.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=se.run("intervalInWorker",()=>{var o;vr.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let r=[];(o=this.remotePublishedUserMap)==null||o.forEach(n=>{if(n.muteState.hasAudio){!vr.isRunning&&n.muteState.audioAvailable&&n.remoteAudioTrack.isSubscribed?this.updateDownlinkAudioLevelFromReceiver(n):n.remoteAudioTrack.volume=0;let a=Math.floor(n.remoteAudioTrack.getAudioLevel()*100);r.push({userId:n.userId,volume:a})}}),this.emit("audio-volume",r)},{delay:e,backgroundTask:t})}updateAudioLevelFromSenderStat(e,t){return p(this,null,function*(){var n;if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack||this._updateAudioLevelTaskId!==-1)return;let r=(n=this.uplinkConnection.getPeerConnection())==null?void 0:n.getSenders()[0];if(!r)return;let o=Math.max(e,500);this._log.warn(`updateAudioLevelFromSenderStat ${o}`),this._updateAudioLevelTaskId=se.run("intervalInWorker",()=>p(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack){this.stopUpdateAudioLevelFromSenderStat();return}let a=yield r.getStats();if(this._updateAudioLevelTaskId<0)return;let{localMainAudioTrack:c}=this.uplinkConnection;a.forEach(l=>{l.type==="media-source"&&l.audioLevel&&(c.volume=l.audioLevel)})}),{delay:o,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),se.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(e=this.uplinkConnection)!=null&&e.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(e){var o;let{audioReceiver:t}=e;if(!kd||!t)return;let r=(o=t.getSynchronizationSources()[0])==null?void 0:o.audioLevel;j(r)?e.remoteAudioTrack.volume=Math.min(r*2,1):t.getStats().then(n=>{n.forEach(a=>{a.type==="inbound-rtp"&&j(a.audioLevel)&&(e.remoteAudioTrack.volume=a.audioLevel)})})}getLocalAudioStats(){return p(this,null,function*(){var t;let e={};return e[this.userId]={bytesSent:0,packetsSent:0,audioLevel:0},(t=this.uplinkConnection)!=null&&t.localMainAudioTrack&&(e[this.userId]=this.uplinkConnection.localMainAudioTrack.stat),e})}getLocalVideoStats(){return p(this,null,function*(){var t,r;let e={};return e[this.userId]=((r=(t=this.uplinkConnection)==null?void 0:t.localMainVideoTrack)==null?void 0:r.stat)||{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0},e})}getTransportStats(){return p(this,null,function*(){let e={rtt:0,downlinksRTT:{}};if(this.uplinkConnection){let t=yield this._stats.getSenderStats(this.uplinkConnection);e.rtt=t.rtt}for(let[,t]of this.remotePublishedUserMap){let r=yield this._stats.getReceiverStats(t);e.downlinksRTT[r.userId]=r.rtt}return e})}getRemoteVideoStats(e){return p(this,null,function*(){let t={};for(let[r,o]of this.remotePublishedUserMap)e==="main"&&o.muteState.hasVideo&&(t[r]=o.remoteVideoTrack.stat),e==="auxiliary"&&o.muteState.hasAuxiliary&&(t[r]=o.remoteAuxiliaryTrack.stat);return t})}getRemoteAudioStats(){return p(this,null,function*(){let e={};for(let[t,r]of this.remotePublishedUserMap)r.muteState.hasAudio&&(e[t]=r.remoteAudioTrack.stat);return e})}setTurnServer(e,t){this._log.info(`set turn server: ${JSON.stringify(e)} ${t||""}`);let r=[];Array.isArray(e)?e.forEach(o=>r.push(ct.getTurnServer(o))):ct.isPlainObject(e)&&r.push(ct.getTurnServer(e)),this._turnServers=r,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Y.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:G.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Y.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:G.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Y.START_PUBLISH_TENCENT_CDN:Y.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?G.START_PUBLISH_TENCENT_CDN_RES:G.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Y.STOP_PUBLISH_TENCENT_CDN:Y.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?G.STOP_PUBLISH_TENCENT_CDN_RES:G.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:G.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:G.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:G.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:Y.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:G.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(r=>{})}getIceServers(e){var t,r;return this._turnServers.length>0?this._turnServers:(t=this.scheduleResult.iceServers)!=null&&t.length?this.scheduleResult.iceServers:e!=null&&e.length?e:(r=this._iceServersFromJoin)!=null&&r.length?this._iceServersFromJoin:[]}getIceTransportPolicy(){return this.forceRelay?"relay":this._iceTransportPolicy||this.scheduleResult.iceTransportPolicy||"all"}getLogger(){return this._log}enableAIVoice(){throw new Error("Method not implemented.")}getSignalChannelUrl(){let e={mainUrl:"",backupUrl:""},t=ct.getEnv();return t?(e.mainUrl=`wss://${t}.rtc.qq.com`,e.backupUrl=e.mainUrl):this.proxy_ws?(e.mainUrl=this.proxy_ws,e.backupUrl=e.mainUrl):this.proxy_unified?(e.mainUrl=`wss://${this.proxy_unified}`,e.backupUrl=e.mainUrl):Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(e.mainUrl=`wss://${this.scheduleResult.domains[0]}`,e.backupUrl=e.mainUrl,this.scheduleResult.domains[1]&&(e.backupUrl=`wss://${this.scheduleResult.domains[1]}`)),e}getSignalInfo(){var e;return((e=this.signalChannel)==null?void 0:e.getSignalInfo())||{clientIp:"",relayIp:""}}reset(e=!1){this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.clearNetworkQuality(),this.closeUplink("you exitRoom"),this.signalChannel&&(e&&this.signalChannel.keepAlive&&this.signalChannel.isConnected?this.signalChannel.stopKeepAliveIn(3600):(this.signalChannel.close(),this.setSignalChannel(null))),this._stats.reset(),this.userManager.clear(),this.userManager.removeAllListeners(),this.singlePC&&(this.singlePC.close(),this.singlePC=null),this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null}}checkSubscribeBigSmallVideo(e){return p(this,null,function*(){let{subscribeState:t,userId:r,muteState:{hasSmall:o,hasVideo:n}}=e;if(!o&&!n||!t.video&&!t.smallVideo)return;let a=this._changeBigSmallRecords.get(r);if(!a||a.isSubscribing||a.reSubscribeCount<=0)return;let{options:c,reSubscribeCount:l}=a;if(c.video&&t.video||c.smallVideo&&t.smallVideo&&o)return;let u={audio:e.remoteAudioTrack.isSubscribed||e.remoteAudioTrack.isSubscribing,auxiliary:e.remoteAuxiliaryTrack.isSubscribed||e.remoteAuxiliaryTrack.isSubscribing,video:c.video,smallVideo:c.smallVideo};try{if(!o&&u.smallVideo&&(u.video=!0,u.smallVideo=!1),u.smallVideo===t.smallVideo&&u.video===t.video)return;a.isSubscribing=!0,a.reSubscribeCount=l-1,yield e.subscribe(u,"main"),e.remoteVideoTrack.setMediaType(u.smallVideo?8:4),this._log.info(`change [${r}] to ${u.smallVideo?"small":"big"} video successfully. count ${Xr-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount=Xr}catch(h){this._log.info(`change [${r}] to ${u.smallVideo?"small":"big"} video failed. count ${Xr-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount===0&&this._changeBigSmallRecords.delete(r)}})}changeType(e,t){let o={options:{video:!e,smallVideo:e},isSubscribing:!1,reSubscribeCount:Xr};this._changeBigSmallRecords.set(t.userId,o),this._log.info(`set [${t.userId}] video prefer type: ${e?"small":"big"}`);let n=this.remotePublishedUserMap.get(t.userId);n&&this.checkSubscribeBigSmallVideo(n)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(e){this._businessInfo=e.businessInfo;let t={};if(Gp(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!Bs(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_PURE_AUDIO})});this._pureAudioPushMode=e.pureAudioPushMode,t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.pure_audio_push_mod=this._pureAudioPushMode}if(!Bs(e.userDefineRecordId)){let r=/^[A-Za-z0-9_-]{1,64}$/gi;if(e.userDefineRecordId.match(r)===null)throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!Bs(e.userDefinePushArgs))if(Gp(e.userDefinePushArgs)&&String(e.userDefinePushArgs)&&String(e.userDefinePushArgs).length<=256)t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_push_args=e.userDefinePushArgs;else throw new y({code:S.INVALID_PARAMETER,message:P({key:L.INVALID_USER_DEFINE_PUSH_ARGS})});cn(t)||(this._businessInfo=JSON.stringify(t))}sendCustomMessage(e){var t;(t=this._customMessageManager)==null||t.send(e)}enableInsertableStreams(){return p(this,null,function*(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&Oi)return this.singlePC.enableInsertableStreams=!0,yield this.singlePC.waitForPeerConnectionConnected(),yield this.singlePC.startReconnection()})}sendSignalMessage(e){var t;return this.signalChannel?(t=this.signalChannel)==null?void 0:t.sendWaitForResponseWithRetry(e):Promise.reject(new y({code:S.INVALID_OPERATION,message:"not join"}))}get enableCodecPipeline(){return this.videoManager.encodePipeline.length>0||this.videoManager.decodePipeline.length>0||this.audioManager.encodePipeline.length>0||this.audioManager.decodePipeline.length>0}get scriptTransformWorker(){var e;return(e=this.singlePC)==null?void 0:e.scriptTransformWorker}};N([pe(["left",H.INIT],"joined"),mt({settings:{retries:1,timeout:0},onRetrying(e){this._log.warn(`join retry ${e}`)},onRetryFailed(e){this._log.error("join failed",e)},onError(e,t){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),Vt(!0),this.reset(),t()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),t()):(this.reset(),t())}}),Ym()],$t.prototype,"join",1),N([pe("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),Km(),ya("leave room"),Mo({fnName:"publish",validateArgs:!1}),Mo({fnName:"unsubscribe",validateArgs:!1})],$t.prototype,"leave",1),N([ni(),Fp(),mt({settings:{retries:gi,timeout:e=>vt(e)},onError(e,t,r){var o;(o=e.message)!=null&&o.includes("timeout")?(this._log.warn("publish timeout"),t()):(this._log.error(`publish failed: ${e}`),r(e),E.emit(I.PUBLISH_FAILED,{room:this}))}})],$t.prototype,"publish",1),N([Mo({fnName:"publish"}),am("api-call"),ni(),$p(),Ze(function(){var e,t;this.localTracks.size===0&&er()&&((t=(e=this.singlePC)==null?void 0:e.getPeerConnection())==null||t.getSenders().forEach(r=>r.track&&r.replaceTrack(null)))})],$t.prototype,"unpublish",1),N([Aa(e=>{if(e.code!==S.API_CALL_ABORTED)throw e}),Li(e=>e.userId)],$t.prototype,"replaceTrack",1),N([Li((...e)=>e[0].userId),va(),Zm(),mt({settings:{retries:gi,timeout:e=>vt(e)},onError(e,t,r,o){e.message.includes("timeout")?(this._log.warn("subscribe timeout"),t()):(this._log.error(`subscribe failed: ${e}`),r(e),E.emit(I.SUBSCRIBE_FAILED,{room:this,remoteTracks:o}))}})],$t.prototype,"subscribe",1),N([Mo({fnName:"subscribe",callback(...e){this.singlePC||e.forEach(t=>{let r=this.remotePublishedUserMap.get(t.userId);r&&!r.isMainStreamSubscribed&&!r.isAuxStreamSubscribed&&r.close("you unsubscribed")})}}),Li((...e)=>e[0].userId)],$t.prototype,"unsubscribe",1);Zo.create=Zo._create.bind(Zo,$t);var H1=Zo;export{H1 as default};