trtc-sdk-v5 5.9.2-beta.9 → 5.10.0-wasm.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-zh_CN.md +2 -1
- package/README.md +2 -1
- package/assets/av_processing.wasm +0 -0
- package/assets/debug-dialog.js +1 -0
- package/assets/selfie_segmentation/package.json +27 -0
- package/assets/selfie_segmentation/selfie_segmentation.binarypb +0 -0
- package/assets/selfie_segmentation/selfie_segmentation.tflite +0 -0
- package/assets/selfie_segmentation/selfie_segmentation_landscape.tflite +0 -0
- package/assets/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.data +0 -0
- package/assets/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.wasm +0 -0
- package/assets/selfie_segmentation/selfie_segmentation_solution_wasm_bin.wasm +0 -0
- package/assets/videodec.wasm +0 -0
- package/assets/videodec_simd.wasm +0 -0
- package/assets/worker.js +17 -0
- package/index.d.ts +1794 -1791
- package/package.json +4 -6
- package/plugins/cdn-streaming/cdn-streaming.esm.js +1 -1
- package/plugins/cdn-streaming/cdn-streaming.umd.js +1 -0
- package/plugins/cdn-streaming/package.json +1 -2
- package/plugins/cross-room/cross-room.esm.js +1 -1
- package/plugins/cross-room/cross-room.umd.js +1 -0
- package/plugins/cross-room/package.json +1 -2
- package/plugins/custom-encryption/custom-encryption.esm.d.ts +31 -0
- package/plugins/custom-encryption/custom-encryption.esm.js +1 -0
- package/plugins/custom-encryption/custom-encryption.umd.js +1 -0
- package/plugins/custom-encryption/package.json +7 -0
- package/plugins/device-detector/device-detector.esm.js +93 -1234
- package/plugins/device-detector/device-detector.umd.js +39 -0
- package/plugins/device-detector/package.json +1 -2
- package/plugins/video-decoder/package.json +1 -1
- package/plugins/video-decoder/video-decoder.esm.js +1 -43
- package/plugins/video-decoder/video-decoder.umd.js +1 -0
- package/plugins/video-effect/basic-beauty/basic-beauty.esm.js +1 -2
- package/plugins/video-effect/basic-beauty/basic-beauty.umd.js +1 -0
- package/plugins/video-effect/basic-beauty/package.json +1 -2
- package/plugins/video-effect/beauty/beauty.esm.js +1 -2954
- package/plugins/video-effect/beauty/beauty.umd.js +1 -0
- package/plugins/video-effect/beauty/package.json +1 -2
- package/plugins/video-effect/virtual-background/package.json +1 -2
- package/plugins/video-effect/virtual-background/virtual-background.esm.js +1 -60
- package/plugins/video-effect/virtual-background/virtual-background.umd.js +1 -0
- package/plugins/video-effect/watermark/package.json +1 -2
- package/plugins/video-effect/watermark/watermark.esm.d.ts +10 -2
- package/plugins/video-effect/watermark/watermark.esm.js +1 -1
- package/plugins/video-effect/watermark/watermark.umd.js +1 -0
- package/plugins/voice-changer/package.json +9 -0
- package/plugins/voice-changer/voice-changer.esm.d.ts +20 -0
- package/plugins/voice-changer/voice-changer.esm.js +1 -0
- package/plugins/voice-changer/voice-changer.umd.js +1 -0
- package/trtc.esm.js +63 -40
- package/trtc.js +1 -1
- package/plugins/cdn-streaming/cdn-streaming.iife.js +0 -1
- package/plugins/cross-room/cross-room.iife.js +0 -1
- package/plugins/device-detector/device-detector.iife.js +0 -1472
- package/plugins/video-decoder/video-decoder.iife.js +0 -43
- package/plugins/video-effect/basic-beauty/basic-beauty.iife.js +0 -2
- package/plugins/video-effect/beauty/beauty.iife.js +0 -2954
- package/plugins/video-effect/virtual-background/virtual-background.iife.js +0 -60
- package/plugins/video-effect/watermark/watermark.iife.js +0 -1
- /package/{plugins/ai-denoiser → assets}/denoiser-wasm.js +0 -0
package/trtc.esm.js
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
var kp=Object.create;var ws=Object.defineProperty,Mp=Object.defineProperties,_u=Object.getOwnPropertyDescriptor,Lp=Object.getOwnPropertyDescriptors,Pp=Object.getOwnPropertyNames,rn=Object.getOwnPropertySymbols,gu=Object.getPrototypeOf,uc=Object.prototype.hasOwnProperty,Tu=Object.prototype.propertyIsEnumerable,wp=Reflect.get;var xs=Math.pow,lc=(s,i,e)=>i in s?ws(s,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[i]=e,v=(s,i)=>{for(var e in i||(i={}))uc.call(i,e)&&lc(s,e,i[e]);if(rn)for(var e of rn(i))Tu.call(i,e)&&lc(s,e,i[e]);return s},M=(s,i)=>Mp(s,Lp(i));var Eu=(s,i)=>{var e={};for(var t in s)uc.call(s,t)&&i.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&rn)for(var t of rn(s))i.indexOf(t)<0&&Tu.call(s,t)&&(e[t]=s[t]);return e};var ai=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports),ci=(s,i)=>{for(var e in i)ws(s,e,{get:i[e],enumerable:!0})},xp=(s,i,e,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of Pp(i))!uc.call(s,r)&&r!==e&&ws(s,r,{get:()=>i[r],enumerable:!(t=_u(i,r))||t.enumerable});return s};var Pe=(s,i,e)=>(e=s!=null?kp(gu(s)):{},xp(i||!s||!s.__esModule?ws(e,"default",{value:s,enumerable:!0}):e,s));var y=(s,i,e,t)=>{for(var r=t>1?void 0:t?_u(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&&ws(i,e,r),r};var c=(s,i,e)=>lc(s,typeof i!="symbol"?i+"":i,e);var we=(s,i,e)=>wp(gu(s),e,i);var f=(s,i,e)=>new Promise((t,r)=>{var o=d=>{try{a(e.next(d))}catch(l){r(l)}},n=d=>{try{a(e.throw(d))}catch(l){r(l)}},a=d=>d.done?t(d.value):Promise.resolve(d.value).then(o,n);a((e=e.apply(s,i)).next())});var Je=ai((VT,hc)=>{"use strict";var Up=Object.prototype.hasOwnProperty,We="~";function Us(){}Object.create&&(Us.prototype=Object.create(null),new Us().__proto__||(We=!1));function Vp(s,i,e){this.fn=s,this.context=i,this.once=e||!1}function Su(s,i,e,t,r){if(typeof e!="function")throw new TypeError("The listener must be a function");var o=new Vp(e,t||s,r),n=We?We+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 sn(s,i){--s._eventsCount===0?s._events=new Us:delete s._events[i]}function Ue(){this._events=new Us,this._eventsCount=0}Ue.prototype.eventNames=function(){var i=[],e,t;if(this._eventsCount===0)return i;for(t in e=this._events)Up.call(e,t)&&i.push(We?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i};Ue.prototype.listeners=function(i){var e=We?We+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};Ue.prototype.listenerCount=function(i){var e=We?We+i:i,t=this._events[e];return t?t.fn?1:t.length:0};Ue.prototype.emit=function(i,e,t,r,o,n){var a=We?We+i:i;if(!this._events[a])return!1;var d=this._events[a],l=arguments.length,m,u;if(d.fn){switch(d.once&&this.removeListener(i,d.fn,void 0,!0),l){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,m=new Array(l-1);u<l;u++)m[u-1]=arguments[u];d.fn.apply(d.context,m)}else{var p=d.length,_;for(u=0;u<p;u++)switch(d[u].once&&this.removeListener(i,d[u].fn,void 0,!0),l){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(!m)for(_=1,m=new Array(l-1);_<l;_++)m[_-1]=arguments[_];d[u].fn.apply(d[u].context,m)}}return!0};Ue.prototype.on=function(i,e,t){return Su(this,i,e,t,!1)};Ue.prototype.once=function(i,e,t){return Su(this,i,e,t,!0)};Ue.prototype.removeListener=function(i,e,t,r){var o=We?We+i:i;if(!this._events[o])return this;if(!e)return sn(this,o),this;var n=this._events[o];if(n.fn)n.fn===e&&(!r||n.once)&&(!t||n.context===t)&&sn(this,o);else{for(var a=0,d=[],l=n.length;a<l;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:sn(this,o)}return this};Ue.prototype.removeAllListeners=function(i){var e;return i?(e=We?We+i:i,this._events[e]&&sn(this,e)):(this._events=new Us,this._eventsCount=0),this};Ue.prototype.off=Ue.prototype.removeListener;Ue.prototype.addListener=Ue.prototype.on;Ue.prefixed=We;Ue.EventEmitter=Ue;typeof hc!="undefined"&&(hc.exports=Ue)});var ld=ai((HE,nh)=>{"use strict";var oh=nh.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(oh).forEach(function(s){var i=oh[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var dh=ai(Ai=>{"use strict";var ds=function(s){return String(Number(s))===s?Number(s):s},Pf=function(s,i,e,t){if(t&&!e)i[t]=ds(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=ds(s[r+1]))},wf=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;Pf(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},ah=ld(),xf=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Ai.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(xf).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<(ah[o]||[]).length;a+=1){var d=ah[o][a];if(d.reg.test(n))return wf(d,t,n)}}),i.media=e,i};var ch=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=ds(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};Ai.parseParams=function(s){return s.split(/;\s?/).reduce(ch,{})};Ai.parseFmtpConfig=Ai.parseParams;Ai.parsePayloads=function(s){return s.toString().split(" ").map(Number)};Ai.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(ds),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};Ai.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(ch,{})})};Ai.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=ds(e):(t=ds(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var uh=ai((GE,lh)=>{"use strict";var ud=ld(),Uf=/%[sdv%]/g,Vf=function(s){var i=1,e=arguments,t=e.length;return s.replace(Uf,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""}})},go=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 Vf.apply(null,r)},Bf=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Ff=["i","c","b","a"];lh.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||Bf,t=i.innerOrder||Ff,r=[];return e.forEach(function(o){ud[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(go(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(go(o,n,a))})})}),s.media.forEach(function(o){r.push(go("m",ud.m[0],o)),t.forEach(function(n){ud[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(go(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(d){r.push(go(n,a,d))})})})}),r.join(`\r
|
|
1
|
+
var Mg=Object.create;var En=Object.defineProperty,Og=Object.defineProperties,bp=Object.getOwnPropertyDescriptor,Pg=Object.getOwnPropertyDescriptors,xg=Object.getOwnPropertyNames,Ap=Object.getOwnPropertySymbols,Rp=Object.getPrototypeOf,vp=Object.prototype.hasOwnProperty,kg=Object.prototype.propertyIsEnumerable,Lg=Reflect.get;var _n=Math.pow,Nu=(i,t,e)=>t in i?En(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Z=(i,t)=>{for(var e in t||(t={}))vp.call(t,e)&&Nu(i,e,t[e]);if(Ap)for(var e of Ap(t))kg.call(t,e)&&Nu(i,e,t[e]);return i},Ee=(i,t)=>Og(i,Pg(t));var Tn=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),qr=(i,t)=>{for(var e in t)En(i,e,{get:t[e],enumerable:!0})},Ug=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of xg(t))!vp.call(i,o)&&o!==e&&En(i,o,{get:()=>t[o],enumerable:!(r=bp(t,o))||r.enumerable});return i};var Di=(i,t,e)=>(e=i!=null?Mg(Rp(i)):{},Ug(t||!i||!i.__esModule?En(e,"default",{value:i,enumerable:!0}):e,i));var X=(i,t,e,r)=>{for(var o=r>1?void 0:r?bp(t,e):t,s=i.length-1,n;s>=0;s--)(n=i[s])&&(o=(r?n(t,e,o):n(o))||o);return r&&o&&En(t,e,o),o};var u=(i,t,e)=>Nu(i,typeof t!="symbol"?t+"":t,e);var Bt=(i,t,e)=>Lg(Rp(i),e,t);var y=(i,t,e)=>new Promise((r,o)=>{var s=p=>{try{d(e.next(p))}catch(m){o(m)}},n=p=>{try{d(e.throw(p))}catch(m){o(m)}},d=p=>p.done?r(p.value):Promise.resolve(p.value).then(s,n);d((e=e.apply(i,t)).next())});var Ui=Tn((KS,sl)=>{"use strict";var FE=Object.prototype.hasOwnProperty,$t="~";function Xn(){}Object.create&&(Xn.prototype=Object.create(null),new Xn().__proto__||($t=!1));function HE(i,t,e){this.fn=i,this.context=t,this.once=e||!1}function ih(i,t,e,r,o){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new HE(e,r||i,o),n=$t?$t+t:t;return i._events[n]?i._events[n].fn?i._events[n]=[i._events[n],s]:i._events[n].push(s):(i._events[n]=s,i._eventsCount++),i}function Bc(i,t){--i._eventsCount===0?i._events=new Xn:delete i._events[t]}function Ot(){this._events=new Xn,this._eventsCount=0}Ot.prototype.eventNames=function(){var t=[],e,r;if(this._eventsCount===0)return t;for(r in e=this._events)FE.call(e,r)&&t.push($t?r.slice(1):r);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Ot.prototype.listeners=function(t){var e=$t?$t+t:t,r=this._events[e];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,s=r.length,n=new Array(s);o<s;o++)n[o]=r[o].fn;return n};Ot.prototype.listenerCount=function(t){var e=$t?$t+t:t,r=this._events[e];return r?r.fn?1:r.length:0};Ot.prototype.emit=function(t,e,r,o,s,n){var d=$t?$t+t:t;if(!this._events[d])return!1;var p=this._events[d],m=arguments.length,E,_;if(p.fn){switch(p.once&&this.removeListener(t,p.fn,void 0,!0),m){case 1:return p.fn.call(p.context),!0;case 2:return p.fn.call(p.context,e),!0;case 3:return p.fn.call(p.context,e,r),!0;case 4:return p.fn.call(p.context,e,r,o),!0;case 5:return p.fn.call(p.context,e,r,o,s),!0;case 6:return p.fn.call(p.context,e,r,o,s,n),!0}for(_=1,E=new Array(m-1);_<m;_++)E[_-1]=arguments[_];p.fn.apply(p.context,E)}else{var b=p.length,C;for(_=0;_<b;_++)switch(p[_].once&&this.removeListener(t,p[_].fn,void 0,!0),m){case 1:p[_].fn.call(p[_].context);break;case 2:p[_].fn.call(p[_].context,e);break;case 3:p[_].fn.call(p[_].context,e,r);break;case 4:p[_].fn.call(p[_].context,e,r,o);break;default:if(!E)for(C=1,E=new Array(m-1);C<m;C++)E[C-1]=arguments[C];p[_].fn.apply(p[_].context,E)}}return!0};Ot.prototype.on=function(t,e,r){return ih(this,t,e,r,!1)};Ot.prototype.once=function(t,e,r){return ih(this,t,e,r,!0)};Ot.prototype.removeListener=function(t,e,r,o){var s=$t?$t+t:t;if(!this._events[s])return this;if(!e)return Bc(this,s),this;var n=this._events[s];if(n.fn)n.fn===e&&(!o||n.once)&&(!r||n.context===r)&&Bc(this,s);else{for(var d=0,p=[],m=n.length;d<m;d++)(n[d].fn!==e||o&&!n[d].once||r&&n[d].context!==r)&&p.push(n[d]);p.length?this._events[s]=p.length===1?p[0]:p:Bc(this,s)}return this};Ot.prototype.removeAllListeners=function(t){var e;return t?(e=$t?$t+t:t,this._events[e]&&Bc(this,e)):(this._events=new Xn,this._eventsCount=0),this};Ot.prototype.off=Ot.prototype.removeListener;Ot.prototype.addListener=Ot.prototype.on;Ot.prefixed=$t;Ot.EventEmitter=Ot;typeof sl!="undefined"&&(sl.exports=Ot)});var Il=Tn((My,gh)=>{"use strict";var fh=gh.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(i){return i.encoding?"rtpmap:%d %s/%s/%s":i.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(i){return i.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(i){return i.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(i){return"extmap:%d"+(i.direction?"/%s":"%v")+(i["encrypt-uri"]?" %s":"%v")+" %s"+(i.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(i){return i.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(i){var t="candidate:%s %d %s %d %s %d typ %s";return t+=i.raddr!=null?" raddr %s rport %d":"%v%v",t+=i.tcptype!=null?" tcptype %s":"%v",i.generation!=null&&(t+=" generation %d"),t+=i["network-id"]!=null?" network-id %d":"%v",t+=i["network-cost"]!=null?" network-cost %d":"%v",t}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(i){var t="ssrc:%d";return i.attribute!=null&&(t+=" %s",i.value!=null&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(i){return i.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(i){return i.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(i){return"imageattr:%s %s %s"+(i.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(i){return"simulcast:%s %s"+(i.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(i){return"ts-refclk:%s"+(i.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(i){var t="mediaclk:";return t+=i.id!=null?"id=%s %s":"%v%s",t+=i.mediaClockValue!=null?"=%s":"",t+=i.rateNumerator!=null?" rate=%s":"",t+=i.rateDenominator!=null?"/%s":"",t}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(fh).forEach(function(i){var t=fh[i];t.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Th=Tn(ii=>{"use strict";var Ps=function(i){return String(Number(i))===i?Number(i):i},QE=function(i,t,e,r){if(r&&!e)t[r]=Ps(i[1]);else for(var o=0;o<e.length;o+=1)i[o+1]!=null&&(t[e[o]]=Ps(i[o+1]))},YE=function(i,t,e){var r=i.name&&i.names;i.push&&!t[i.push]?t[i.push]=[]:r&&!t[i.name]&&(t[i.name]={});var o=i.push?{}:r?t[i.name]:t;QE(e.match(i.reg),o,i.names,i.name),i.push&&t[i.push].push(o)},Eh=Il(),ZE=RegExp.prototype.test.bind(/^([a-z])=(.*)/);ii.parse=function(i){var t={},e=[],r=t;return i.split(/(\r\n|\r|\n)/).filter(ZE).forEach(function(o){var s=o[0],n=o.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),r=e[e.length-1]);for(var d=0;d<(Eh[s]||[]).length;d+=1){var p=Eh[s][d];if(p.reg.test(n))return YE(p,r,n)}}),t.media=e,t};var _h=function(i,t){var e=t.split(/=(.+)/,2);return e.length===2?i[e[0]]=Ps(e[1]):e.length===1&&t.length>1&&(i[e[0]]=void 0),i};ii.parseParams=function(i){return i.split(/;\s?/).reduce(_h,{})};ii.parseFmtpConfig=ii.parseParams;ii.parsePayloads=function(i){return i.toString().split(" ").map(Number)};ii.parseRemoteCandidates=function(i){for(var t=[],e=i.split(" ").map(Ps),r=0;r<e.length;r+=3)t.push({component:e[r],ip:e[r+1],port:e[r+2]});return t};ii.parseImageAttributes=function(i){return i.split(" ").map(function(t){return t.substring(1,t.length-1).split(",").reduce(_h,{})})};ii.parseSimulcastStreamList=function(i){return i.split(";").map(function(t){return t.split(",").map(function(e){var r,o=!1;return e[0]!=="~"?r=Ps(e):(r=Ps(e.substring(1,e.length)),o=!0),{scid:r,paused:o}})})}});var Sh=Tn((Py,Ih)=>{"use strict";var Sl=Il(),KE=/%[sdv%]/g,e_=function(i){var t=1,e=arguments,r=e.length;return i.replace(KE,function(o){if(t>=r)return o;var s=e[t];switch(t+=1,o){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},ea=function(i,t,e){var r=t.format instanceof Function?t.format(t.push?e:e[t.name]):t.format,o=[i+"="+r];if(t.names)for(var s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?o.push(e[t.name][n]):o.push(e[t.names[s]])}else o.push(e[t.name]);return e_.apply(null,o)},t_=["v","o","s","i","u","e","p","c","b","t","r","z","a"],r_=["i","c","b","a"];Ih.exports=function(i,t){t=t||{},i.version==null&&(i.version=0),i.name==null&&(i.name=" "),i.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=t.outerOrder||t_,r=t.innerOrder||r_,o=[];return e.forEach(function(s){Sl[s].forEach(function(n){n.name in i&&i[n.name]!=null?o.push(ea(s,n,i)):n.push in i&&i[n.push]!=null&&i[n.push].forEach(function(d){o.push(ea(s,n,d))})})}),i.media.forEach(function(s){o.push(ea("m",Sl.m[0],s)),r.forEach(function(n){Sl[n].forEach(function(d){d.name in s&&s[d.name]!=null?o.push(ea(n,d,s)):d.push in s&&s[d.push]!=null&&s[d.push].forEach(function(p){o.push(ea(n,d,p))})})})}),o.join(`\r
|
|
2
2
|
`)+`\r
|
|
3
|
-
`}});var hh=ai(Ci=>{"use strict";var _r=dh(),Hf=uh();Ci.write=Hf;Ci.parse=_r.parse;Ci.parseParams=_r.parseParams;Ci.parseFmtpConfig=_r.parseFmtpConfig;Ci.parsePayloads=_r.parsePayloads;Ci.parseRemoteCandidates=_r.parseRemoteCandidates;Ci.parseImageAttributes=_r.parseImageAttributes;Ci.parseSimulcastStreamList=_r.parseSimulcastStreamList});var Zl=ai((qP,Fm)=>{"use strict";var Bm=Fm.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(Bm).forEach(function(s){var i=Bm[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Gm=ai(Ui=>{"use strict";var Ds=function(s){return String(Number(s))===s?Number(s):s},uT=function(s,i,e,t){if(t&&!e)i[t]=Ds(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=Ds(s[r+1]))},hT=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;uT(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},Hm=Zl(),mT=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Ui.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(mT).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<(Hm[o]||[]).length;a+=1){var d=Hm[o][a];if(d.reg.test(n))return hT(d,t,n)}}),i.media=e,i};var $m=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=Ds(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};Ui.parseParams=function(s){return s.split(/;\s?/).reduce($m,{})};Ui.parseFmtpConfig=Ui.parseParams;Ui.parsePayloads=function(s){return s.toString().split(" ").map(Number)};Ui.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(Ds),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};Ui.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce($m,{})})};Ui.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=Ds(e):(t=Ds(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var Jm=ai((XP,Wm)=>{"use strict";var eu=Zl(),pT=/%[sdv%]/g,fT=function(s){var i=1,e=arguments,t=e.length;return s.replace(pT,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""}})},Xo=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 fT.apply(null,r)},_T=["v","o","s","i","u","e","p","c","b","t","r","z","a"],gT=["i","c","b","a"];Wm.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||_T,t=i.innerOrder||gT,r=[];return e.forEach(function(o){eu[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(Xo(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(Xo(o,n,a))})})}),s.media.forEach(function(o){r.push(Xo("m",eu.m[0],o)),t.forEach(function(n){eu[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(Xo(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(d){r.push(Xo(n,a,d))})})})}),r.join(`\r
|
|
4
|
-
`)+`\r
|
|
5
|
-
`}});var tu=ai(Vi=>{"use strict";var Pr=Gm(),TT=Jm();Vi.write=TT;Vi.parse=Pr.parse;Vi.parseParams=Pr.parseParams;Vi.parseFmtpConfig=Pr.parseFmtpConfig;Vi.parsePayloads=Pr.parsePayloads;Vi.parseRemoteCandidates=Pr.parseRemoteCandidates;Vi.parseImageAttributes=Pr.parseImageAttributes;Vi.parseSimulcastStreamList=Pr.parseSimulcastStreamList});import MF from"webrtc-adapter";var km=Pe(Je());var Iu=(P=>(P[P.INVALID_PARAMETER=4096]="INVALID_PARAMETER",P[P.INVALID_OPERATION=4097]="INVALID_OPERATION",P[P.NOT_SUPPORTED=4098]="NOT_SUPPORTED",P[P.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",P[P.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",P[P.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",P[P.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",P[P.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",P[P.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",P[P.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",P[P.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",P[P.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",P[P.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",P[P.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",P[P.CLIENT_BANNED=16448]="CLIENT_BANNED",P[P.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",P[P.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",P[P.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",P[P.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",P[P.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",P[P.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",P[P.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",P[P.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",P[P.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",P[P.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",P[P.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",P[P.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",P[P.API_CALL_ABORTED=16461]="API_CALL_ABORTED",P[P.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",P[P.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",P[P.UNKNOWN=65535]="UNKNOWN",P))(Iu||{}),S=Iu;var Bp=function(s){for(let i in S)if(S[i]===s)return i;return"UNKNOWN"},mc=class extends Error{constructor({name:e="RtcError",message:t,code:r=S.UNKNOWN,extraCode:o=0,constraint:n}){let a=`<${Bp(r)} 0x${r.toString(16)}>`,d=`${t}${n?` constraint: ${n}`:""}${t!=null&&t.includes(a)?"":` ${a}`}`;super(d);c(this,"code");c(this,"extraCode");c(this,"message");c(this,"originMessage");c(this,"name");c(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}},b=mc;var Au=new Date().getTime(),pc=0,Cu=function(s){Au=s,pc=Au-new Date().getTime();let i=new Date;i.setTime(s),C.info(`baseTime from server: ${i} offset: ${pc}`)},Vs=function(){return new Date().getTime()+pc},on=function(){let s=new Date;return s.setTime(Vs()),s.toLocaleString()};var ot={};ci(ot,{bytes2ms:()=>ku,convertObjectNumberToInt:()=>Ys,copyProperties:()=>Ou,deepClone:()=>cr,deepMerge:()=>Gt,delay:()=>pi,fibonacci:()=>lr,formatedTime:()=>Bu,getConstructorName:()=>Qs,getContainerFromElement:()=>Vu,getEnv:()=>vu,getInternalVersion:()=>xu,getLoggerUrl:()=>hi,getMuteStateFromFlag:()=>mi,getNetworkType:()=>Dc,getNumNetworkType:()=>dr,getReconnectionTimeout:()=>yt,getStringByteLength:()=>zs,getTurnServer:()=>Uu,getUint32Version:()=>En,getValueType:()=>Ae,getViewListFromView:()=>Xr,glog:()=>Mc,ipv4ToUint32:()=>jr,isArray:()=>Te,isAudioWorkletSupported:()=>wu,isBoolean:()=>he,isConstructor:()=>Wr,isEmpty:()=>qr,isFunction:()=>oe,isLangChinese:()=>Rt,isMediaStreamTrack:()=>Lu,isNumber:()=>Y,isObject:()=>$t,isOverseaSdkAppId:()=>Xs,isPlainObject:()=>Ye,isPortrait:()=>Tn,isPromise:()=>Gi,isRemoteTrack:()=>Pu,isString:()=>K,isUndefined:()=>g,loadImage:()=>Qr,ms2bytes:()=>Mu,ms2samples:()=>kc,performanceNow:()=>L,promiseAny:()=>Jr,samples2ms:()=>Oc,setNetworkType:()=>_n,stringify:()=>mt,stringifyIncludeValue:()=>gn,throttlePromise:()=>Sn});var vc={};ci(vc,{AUDIO_MUTE_BIT:()=>hn,AUDIO_STAT_BIT:()=>Hi,AUX_STAT_BIT:()=>or,AUX_STREAM_MSID:()=>Sc,BACKEND_ENV:()=>un,BASE_DOC_URL:()=>Ft,BASE_HOST:()=>Ru,CAPABILITIES_KEYS:()=>fn,CLASS_NAME:()=>cf,CLOUD_CONSOLE_URL:()=>Gp,CROSS_ROOM_BIT:()=>Ec,DATA_FREEZE_TIMING:()=>pn,DEFAULT_ASSETS_URL:()=>nn,DOC_URL:()=>Wp,DTLS_STATE_UNKNOWN:()=>Ct,ENV_NAME:()=>di,EXCHANGE_SDP_TIMEOUT:()=>yc,IS_WORKER:()=>Fr,IS_WORKLET:()=>Fs,KIBANA_EVENT:()=>ze,LOCAL_STREAM_PUBLISH_STATE:()=>bu,LOGGER_CMD_TYPE:()=>Bi,LOGGER_DOMAIN:()=>_c,LOGGER_DOMAIN_OVERSEA:()=>gc,LOG_LEVEL:()=>At,LOG_LEVEL_NAME:()=>lf,MAIN_STREAM_MSID:()=>Gs,MAX_RTT:()=>qs,MICROPHONE_COMMUNICATIONS:()=>df,MICROPHONE_DEFAULT:()=>ar,MUTE_ALL_BIT:()=>jp,NAME:()=>h,NETWORK_TYPE:()=>an,NOT_SUPPORTED_H264:()=>nr,PAUSED_RETRY_COUNT:()=>bc,PEERCONNECTION_CONNECTING_TIMEOUT:()=>Ws,PEER_CONNECTION_STATE:()=>de,PEER_LEAVE_REASON:()=>Nc,RECOVER_CAPTURE_INTERVAL:()=>Gr,REMOTE_STREAM_TYPE_AUX:()=>Ac,REMOTE_STREAM_TYPE_MAIN:()=>Ic,RENDER_FREEZE_TIMING:()=>sf,SCHEDULE_DOMAIN:()=>ui,SCHEDULE_TIMEOUT:()=>af,SDP_SEMANTICS_PLAN_B:()=>Hr,SDP_SEMANTICS_UNIFIED_PLAN:()=>$i,SECOND_HOST:()=>Hp,SIGNAL_PING_PONG_INTERVAL:()=>qp,SIGNAL_PING_TIMEOUT:()=>Jp,SIGNAL_RECONNECTION_COUNT:()=>tf,SMALL_STAT_BIT:()=>$s,SPEAKER_DEFAULT:()=>Js,STORAGE_EXPIRES_TIME:()=>cn,STREAM_TYPE_BIG:()=>of,STREAM_TYPE_SMALL:()=>nf,SUBSCRIBE_SMALL_RETRY_COUNT:()=>$r,SYNC_USER_LIST_INTERVAL:()=>rf,Scene:()=>Ht,THIRD_HOST:()=>$p,TRANSPORT_DIRECTION:()=>z,TRTC_ERROR_ASSISTANCE:()=>Tc,TRTC_QUALITY_BAD:()=>Kp,TRTC_QUALITY_DISCONNECTED:()=>ef,TRTC_QUALITY_EXCELLENT:()=>Qp,TRTC_QUALITY_GOOD:()=>zp,TRTC_QUALITY_POOR:()=>Yp,TRTC_QUALITY_UNKNOWN:()=>Xp,TRTC_QUALITY_VERY_BAD:()=>Zp,UPDATE_OFFER_TIMEOUT:()=>Rc,VIDEO_MUTE_BIT:()=>mn,VIDEO_STAT_BIT:()=>Fi,audioProfileMap:()=>dn,getRetryCount:()=>li,getScriptDir:()=>Fp,innerVersion:()=>Bs,loggerProxy:()=>Hs,screenProfileMap:()=>ln,setLoggerProxy:()=>sr,setRetryCount:()=>Cc,setVersion:()=>fc,version:()=>Re,videoProfileMap:()=>ht});var Bs="4.15.00.1600",Re="5.0.0";function fc(s){Re=s;let[i,e,t]=s.split(".").map(r=>parseInt(r,10));Bs=`${i}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var Fr=typeof importScripts!="undefined",Fs=typeof registerProcessor!="undefined",Fp=()=>{let s=Fr?self.location.href:document.currentScript.src;return s.substring(0,s.lastIndexOf("/")+1)},Hs="",sr=s=>Hs=s,Ru="web.sdk.qcloud.com",Hp="web.sdk.tencent.cn",$p="web.sdk.cloud.tencent.cn",Gp="https://console.cloud.tencent.com/trtc",Ft=`https://${Ru}/trtc/webrtc/v5/doc`,nn="https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/",Wp=`${Ft}/zh-cn/`,_c="https://yun.tim.qq.com",gc="https://apisgp.my-imcloud.com",Tc="trtc_error_assistance",Bi={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},di={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},At=(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))(At||{}),Jp=18e3,qp=2e3,an={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},cn=7*24*3600*1e3,dn={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}},ht={"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}},ln={"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}},h={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"},un={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Ht=(e=>(e.LIVE="live",e.RTC="rtc",e))(Ht||{}),Fi=1,$s=2,or=4,Hi=8,hn=64,mn=16,jp=112,Ec=128,Gs="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",Sc="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",Ic=h.MAIN,Ac=h.AUXILIARY,Xp=0,Qp=1,zp=2,Yp=3,Kp=4,Zp=5,ef=6,Ct="unknown",de={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},yu=1/0;function Cc(s){yu=s}function li(){return yu}var tf=30,ze={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,Rc=1e4,yc=1e4,$i="unified-plan",Hr="plan-b",nr=1028,bu=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(bu||{}),pn=500,sf=1e3,of=h.BIG,nf=h.SMALL,Ws=10*1e3,ui={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"},af=2e3,cf={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},bc=5,ar="default",Js=ar,df="communications",lf=Object.keys(At),Nc=["normal leave","timeout leave","kick","role change"],$r=10,Gr=2e3,fn=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],qs=10*1e3;var vu=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Xs=s=>Number(s)<14e8,hi=function(s,i){let e;Hs?e=Hs:e=Xs(s)?gc:_c;let t=Math.floor(Math.random()*xs(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${s}&cmdtype=${i}`},js="unknown";function Dc(){if(js!=="unknown")return js;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&&(js=Du(t,r)),js}function Du(s,i){if(an[s])return s;switch(s){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function _n(s){js=Du(s)}function dr(){return an[Dc()]}function Ou(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 ku(s,i=48e3){return Oc(s/4,i)}function Oc(s,i=48e3){return s*1e3/i}function Mu(s,i=48e3){return kc(s,i)*4}function kc(s,i=48e3){return s*i/1e3}var Mc=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},Rt=()=>{let s=navigator.language;return s=s.substring(0,2),s==="zh"},Ye=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 lr(s,i=1,e=1){return s<=1?e:lr(s-1,e,i+e)}function yt(s){return s>8?30*1e3:lr(s)*1e3}function Ae(s){return Reflect.apply(Object.prototype.toString,s,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var oe=s=>typeof s=="function",g=s=>typeof s=="undefined",K=s=>typeof s=="string",Y=s=>typeof s=="number",he=s=>typeof s=="boolean",$t=s=>Ae(s)==="object",Te=s=>Ae(s)==="array",Lu=s=>Ae(s)==="MediaStreamTrack".toLowerCase(),Pu=s=>s.isRemote,Gi=s=>Ae(s)==="promise",Wr=s=>oe(s)&&s.prototype.constructor===s,Qs=s=>Wr(s)?s.prototype.constructor.name:"",wu=typeof AudioWorkletNode!="undefined";function Jr(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 L(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Nu=s=>+s<10?`0${s}`:s,xu=s=>{let i=s.match(/^\d+\.\d+\.\d+/)[0];if(!i)return s;let e=i.split("."),t=Nu(e[1])+Nu(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},uf=Object.prototype.hasOwnProperty,{toString:XT}=Object.prototype;function qr(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(Ye(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(uf.call(s,i))return!1;return!0}}return!1}function mi(s,i){return{userId:i,hasAudio:!!(s&Hi),hasVideo:!!(s&Fi),hasAuxiliary:!!(s&or),hasSmall:!!(s&$s),audioMuted:!!(s&hn),videoMuted:!!(s&mn),audioAvailable:!!(s&Hi)&&!(s&hn),videoAvailable:!!(s&Fi)&&!(s&mn)}}function Uu(s){let i={urls:s.url.startsWith("turn:")||s.url.startsWith("turns:")?s.url:`turn:${s.url}`};return!g(s.username)&&!g(s.credential)&&(i.username=s.username,i.credential=s.credential,i.credentialType="password",g(s.credentialType)||(i.credentialType=s.credentialType)),i}function jr(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 Gt=function(s,i,e,t){if(!($t(s)&&$t(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],!(g(i[n])||e&&e.includes(n)))if($t(s[n])&&$t(i[n]))r+=Gt(s[n],i[n],e,t);else{if(t&&t.includes(i[n]))continue;s[n]!==i[n]&&(s[n]=cr(i[n]),r+=1)}return r};function cr(s){if(Te(s)){let i=[];return s.forEach((e,t)=>{i[t]=cr(e)}),i}if($t(s)){let i={};return Object.keys(s).forEach(e=>{i[e]=cr(s[e])}),i}return s}var Xr=s=>{let i=[];if(Te(s))i=[...s];else if(K(s)){let e=document.getElementById(s);e&&i.push(e)}else s&&i.push(s);return i},Vu=s=>K(s)?document.getElementById(s):s,hf=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}`},Bu=()=>hf(new Date);function mt(s,{keysToInclude:i,keysToExclude:e}){try{if(Te(s))return`[${s.map(n=>mt(n,{keysToInclude:i,keysToExclude:e})).join(",")}]`;if(!Ye(s)||!Te(i)&&!Te(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]=Ye(s[n])||Te(s[n])?JSON.parse(mt(s[n],{keysToExclude:e,keysToInclude:i})):s[n])}),JSON.stringify(t)}catch(t){return"{}"}}function gn(s,i=!1){let e=[];return Object.keys(s).forEach(t=>{i===s[t]&&e.push(t)}),mt(s,{keysToInclude:e})}function zs(s){return s.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Tn=()=>{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},Qr=s=>f(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 b({code:S.INVALID_PARAMETER,message:`load image failed, url: ${s}`}))}})}),En=s=>{let i=s.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]<<0},Ys=s=>(Object.keys(s).forEach(i=>{Y(s[i])&&(i.startsWith("uint")||i.startsWith("int"))?s[i]=Math.floor(s[i]):(Ye(s[i])||Te(s[i]))&&Ys(s[i])}),s);function pi(s,i){return new Promise(e=>{let t=setTimeout(e,s);i&&i(t)})}function Sn(s,i){let e=null;return function(...t){return e||(e=s.apply(i||this,t),e.finally(()=>e=null),e)}}function fi({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(l){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 Lc(s){return f(this,null,function*(){let i=L(),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 C.debug(`compressJSON ${e.length} -> ${a.byteLength} ${L()-i}ms`),a}catch(t){return e}})}var mf=Object.prototype.hasOwnProperty;var Wt=s=>typeof s=="function",_i=s=>typeof s=="undefined";var Fu=s=>typeof s=="boolean";var Pc=s=>s.isRemote;var pf=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 Hu(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(pf(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(mf.call(s,i))return!1;return!0}}return!1}var ff=0,_f=1,$u=2;function gf({retryFunction:s,settings:i,onError:e,onRetrying:t,onRetryFailed:r,onRetrySuccess:o,context:n}){return function(...a){let{retries:d=5,timeout:l=1e3}=i,m=0,u=-1,p=ff,_=(I,R)=>f(this,null,function*(){let D=n||this;try{let G=yield s.apply(D,a);m>0&&o&&o.call(this,m),m=0,I(G)}catch(G){let te=()=>{clearTimeout(u),m=0,p=$u,R(G)},tn=()=>{p!==$u&&m<(Wt(d)?d():d)?(m++,p=_f,Wt(t)&&t.call(this,m,te),u=window.setTimeout(()=>{u=-1,_(I,R)},Wt(l)?l(m):l)):(te(),Wt(r)&&r.call(this,G))};Wt(e)?e.call(this,{error:G,retry:tn,reject:R,retryFuncArgs:a,retriedCount:m}):tn()}});return new Promise(_)}}var Jt=gf;var zr=class{constructor(i){c(this,"userId");c(this,"remoteUserId");c(this,"id");c(this,"sdkAppId");c(this,"type");c(this,"isLocal");this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=Fu(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}`:""}]`),C.log(i,e,_i(this.userId)||Hu(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 ns={};ci(ns,{ANDROID_VERSION:()=>Uc,CHROME_MAJOR_VERSION:()=>Dt,CHROME_VERSION:()=>Un,EDGE_VERSION:()=>An,EDG_MAJOR_VERSION:()=>Bc,EDG_VERSION:()=>Cn,FIREFOX_MAJOR_VERSION:()=>Vc,FIREFOX_VERSION:()=>In,HUAWEI_VERSION:()=>Ln,IE_VERSION:()=>Af,IOS_MAIN_VERSION:()=>at,IOS_VERSION:()=>qi,IPADQQB_VERSION:()=>kn,IS_ANDROID:()=>pe,IS_ANDROID_WEBVIEW:()=>Jc,IS_ANY_SAFARI:()=>Wi,IS_CHROME:()=>os,IS_CHROME_OS:()=>Fc,IS_CHROMIUM_BASE:()=>pt,IS_EDG:()=>Zr,IS_EDGE:()=>Kr,IS_ELECTRON:()=>Rf,IS_FIREFOX:()=>ae,IS_HEADLESS_CHROME:()=>Wc,IS_HONOR:()=>Gc,IS_HUAWEI:()=>$c,IS_HUAWEIBROWSER:()=>ao,IS_IE:()=>qu,IS_IE8:()=>If,IS_IOS:()=>ve,IS_IOS_13_OR_14:()=>jc,IS_IOS_15_1:()=>qc,IS_IPAD:()=>Ks,IS_IPADQQB:()=>so,IS_IPAD_PRO:()=>xc,IS_IPHONE:()=>ur,IS_IPOD:()=>Ju,IS_LINUX:()=>oo,IS_LOCAL:()=>Ot,IS_MAC:()=>nt,IS_MACQQB:()=>ro,IS_MIBROWSER:()=>no,IS_MQQB:()=>is,IS_NATIVE_ANDROID:()=>Sf,IS_OLD_ANDROID:()=>Ef,IS_OPPOBROWSER:()=>rs,IS_SAFARI:()=>Ve,IS_SAFARI_15_1:()=>yf,IS_SAMSUNGBROWSER:()=>co,IS_SOGOU:()=>eo,IS_SOGOUM:()=>Zs,IS_TBS:()=>vt,IS_UCBROWSER:()=>Hc,IS_VIVOBROWSER:()=>ss,IS_WECHAT:()=>es,IS_WIN:()=>gi,IS_WQQB:()=>io,IS_WX:()=>Cf,IS_X5MQQB:()=>ts,IS_XWEB:()=>to,MACQQB_VERSION:()=>On,MI_VERSION:()=>Mn,MQQB_VERSION:()=>Yr,OPPO_VERSION:()=>wn,SAFARI_VERSION:()=>Ji,SAMSUNG_VERSION:()=>Pn,SOGOUM_VERSION:()=>Rn,SOGOU_VERSION:()=>yn,TBS_VERSION:()=>bn,UA_DATA_STRING:()=>bt,USER_AGENT:()=>Nt,VIVO_VERSION:()=>xn,WECHAT_VERSION:()=>vn,WQQB_VERSION:()=>Dn,XWEB_VERSION:()=>Nn,browserInfo:()=>qt,getBrowserInfo:()=>ju,getChromeMajorVersion:()=>hr,getDeviceModel:()=>mr,getOSName:()=>Vn,getOSNumber:()=>uo,getOSString:()=>Ei,getOSType:()=>bf,getTerminalType:()=>Xc,getUserAgentData:()=>lo,isLocalStorageEnabled:()=>Ti});var Nt=typeof navigator=="undefined"?"":navigator.userAgent,X=s=>new RegExp(s,"i").test(Nt),ye=s=>{if(X(s)){let i=new RegExp(`${s}\\/([\\d.]+)`),e=Nt.match(i);if(e&&e[1])return e[1]}return""},wc=s=>{if(X(s)){let i=new RegExp(`${s}\\/(\\d+)`),e=Nt.match(i);if(e&&e[1])return parseFloat(e[1])}return NaN},Gu=/AppleWebKit\/([\d.]+)/i.exec(Nt),Tf=Gu?parseFloat(Gu[1]):NaN,Ks=X("iPad"),xc=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&X("Macintosh"),ur=X("iPhone")&&!Ks,Ju=X("iPod"),ve=ur||Ks||Ju||xc,pe=X("Android"),Uc=function(){if(pe){let s=Nt.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}(),Ef=pe&&X("webkit")&&Uc<2.3,Sf=pe&&Uc<5&&Tf<537,ae=X("Firefox"),In=ye("Firefox"),Vc=wc("Firefox"),Kr=X("Edge"),An=ye("Edge"),Zr=X("Edg"),Cn=ye("Edg"),Bc=wc("Edg"),Zs=X("SogouMobileBrowser"),Rn=ye("SogouMobileBrowser"),eo=X("MetaSr\\s"),yn=ye("MetaSr\\s"),vt=X("TBS"),bn=ye("TBS"),to=X("XWEB"),Nn=ye("XWEB"),If=X("MSIE\\s8\\.0"),qu=X("MSIE\\/\\d+"),Af=function(){if(qu){let s=/MSIE\s(\d+)\.\d/.exec(Nt),i=s&&parseFloat(s[1]);return!i&&/Trident\/7.0/i.test(Nt)&&/rv:11.0/.test(Nt)&&(i=11),i}return NaN}(),es=X("(micromessenger|webbrowser)"),vn=ye("MicroMessenger"),ts=!vt&&X("MQQBrowser")&&X("COVC"),is=!vt&&X("MQQBrowser")&&!X("COVC"),Yr=is||ts?ye("MQQBrowser"):"",io=!vt&&X(" QQBrowser"),Dn=ye(" QQBrowser"),ro=!vt&&X("QQBrowserLite"),On=ye("QQBrowserLite"),so=!vt&&X("MQBHD"),kn=ye("MQBHD"),gi=X("Windows"),nt=!ve&&X("MAC OS X"),oo=!pe&&X("Linux"),Fc=X("CrOS"),Cf=X("MicroMessenger"),Hc=X("UCBrowser"),Rf=X("Electron"),no=X("MiuiBrowser"),Mn=ye("MiuiBrowser"),ao=X("HuaweiBrowser"),$c=X("Huawei")||X("HUAWEI"),Gc=X("Honor")||X("HONOR"),Ln=ye("HuaweiBrowser"),co=X("SamsungBrowser"),Pn=ye("SamsungBrowser"),rs=X("HeyTapBrowser"),wn=ye("HeyTapBrowser"),ss=X("VivoBrowser"),xn=ye("VivoBrowser"),hr=()=>wc("Chrome"),pt=X("Chrome"),os=!Kr&&!eo&&!Zs&&!vt&&!to&&!Zr&&!io&&!no&&!ao&&!co&&!rs&&!ss&&pt,Wc=X("HeadlessChrome"),Dt=hr(),Un=ye("Chrome"),Ve=!pt&&!is&&!ts&&!ro&&!so&&X("Safari"),Wi=Ve||ve,Ji=ye("Version"),Jc=/Android.*(wv|.0.0.0)/.test(Nt),qi=(()=>{if(xc)return Ji;if(ve){let s=Nt.match(/OS (\d+)_(\d+)/i);if(s&&s[1]){let i=s[1];return s[2]&&(i+=`.${s[2]}`),i}}return""})(),at=Number(qi.split(".")[0]),yf=Ji==="15.1",qc=qi==="15.1",jc=(()=>{let s=Number(qi.split(".")[0]);return s===14||s===13})(),Ot=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",Ti=(()=>{let s;return()=>{if(typeof s=="undefined")try{s=!!window.localStorage}catch(i){s=!1}return s}})(),qt=ju();function ju(){let s=new Map([[ae,["Firefox",In]],[Zr,["Edg",Cn]],[os,["Chrome",Un]],[Ve,["Safari",Ji]],[vt,["TBS",bn]],[to,["XWEB",Nn]],[es&&ur,["WeChat",vn]],[io,["QQ(Win)",Dn]],[is,["QQ(Mobile)",Yr]],[ts,["QQ(Mobile X5)",Yr]],[ro,["QQ(Mac)",On]],[so,["QQ(iPad)",kn]],[no,["MI",Mn]],[ao,["HW",Ln]],[co,["Samsung",Pn]],[rs,["OPPO",wn]],[ss,["VIVO",xn]],[Kr,["EDGE",An]],[Zs,["SogouMobile",Rn]],[eo,["Sogou",yn]]]),i="unknown",e="unknown";return s.has(!0)&&([i,e]=s.get(!0)),{name:i,version:e}}var ne=null,bt="";function lo(){return f(this,null,function*(){if(ne)return ne;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return ne=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),ne&&!bt&&(bt=`UAData: ${ne.platform}/${ne.platformVersion}`,ne.architecture&&ne.bitness&&(bt+=` ${ne.architecture}/${ne.bitness}`),ne.mobile&&(bt+=" mobile"),ne.model&&(bt+=` model: ${ne.model}`),ne.fullVersionList&&(bt+=` ${ne.fullVersionList.filter(s=>s.brand!=="Not/A)Brand").map(s=>`${s.brand}/${s.version}`).join(",")}`)),ne}catch(s){return null}})}function mr(){return(ne==null?void 0:ne.model)||""}var Wu=new Map([[pe,"Android"],[ve,"iOS"],[gi,"Windows"],[nt,"MacOS"],[oo,"Linux"],[Fc,"ChromeOS"]]),Vn=function(){return Wu.get(!0)?Wu.get(!0):ne?ne.platform:"unknown"};function uo(){return gi?1:pe?2:nt?3:ve?4:oo?5:Fc?6:0}var Ei=()=>{let s=Vn();return s+=`/${qt.name}/${Ve?qt.version:qt.version.split(".")[0]}`,ne!=null&&ne.platformVersion&&(s+=`/${ne.platformVersion}`),ne!=null&&ne.architecture&&(s+=`/${ne.architecture}`),s};function Xc(){return pe?4:ur?2:Ks?3:nt?12:gi?5:oo?13:1}function bf(){return pe?"Android":ur?"iPhone":Ks?"iPad":nt?"Mac":gi?"Windows":oo?"Linux":"unknown"}var Xu=Pe(Je(),1),Nf=new Xu.default,E=Nf;var Si=(W=>(W.ROOM_DESTROY="1",W.JOIN_START="21",W.JOIN_SCHEDULE_SUCCESS="22",W.JOIN_SIGNAL_CONNECTION_START="23",W.JOIN_SIGNAL_CONNECTION_END="24",W.JOIN_SEND_CMD="25",W.JOIN_RECEIVED_CMD_RES="26",W.JOIN_SUCCESS="27",W.JOIN_FAILED="28",W.LEAVE_START="51",W.LEAVE_SEND_CMD="52",W.LEAVE_SUCCESS="53",W.PUBLISH_START="61",W.SEND_FIRST_VIDEO_FRAME="62",W.PUBLISH_FAILED="63",W.SUBSCRIBE_START="81",W.SUBSCRIBE_SUCCESS="82",W.SUBSCRIBE_FAILED="84",W.UNSUBSCRIBE_SUCCESS="83",W.LOCAL_TRACK_CAPTURE_START="101",W.LOCAL_TRACK_CAPTURE_SUCCESS="102",W.LOCAL_TRACK_CAPTURE_FAILED="103",W.LOCAL_TRACK_PUBLISHED="104",W.LOCAL_TRACK_UNPUBLISHED="105",W.LOCAL_TRACK_REPLACED="106",W.SWITCH_DEVICE_SUCCESS="107",W.TRACK_MUTED="108",W.TRACK_UNMUTED="109",W.REMOTE_TRACK_SUBSCRIBED="110",W.REMOTE_TRACK_UNSUBSCRIBED="111",W.LOCAL_TRACK_RECAPTURE="112",W.PLAY_TRACK_START="151",W.PLAYER_STATE_CHANGED="152",W.VIDEO_LOADED_DATA="153",W.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",W.SIGNAL_CONNECTION_STATE_CHANGED="201",W.PEER_CONNECTION_STATE_CHANGED="202",W.SINGLE_CONNECTION_STAT="203",W.SPC_RECONNECTED="204",W.HEARTBEAT_REPORT="251",W.RECEIVED_PUBLISHED_USER_LIST="252",W.REMOTE_PUBLISH_STATE_CHANGED="253",W.AUDIO_LEVEL_INTERVAL="260",W.NETWORK_QUALITY="261",W.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",W.QUALITY_LIMITATION_CHANGED="263",W.LOG="264",W))(Si||{});var T=Si;var vf="%cTRTC%c%s",Df="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",Of="display: inline",Bn=class Bn{constructor(){c(this,"_isEnableUploadLog",!0);c(this,"_localJoinedUser",new Map);c(this,"_queue",[]);c(this,"_timeoutId",-1);c(this,"_logLevel",1);c(this,"_logLevelToUpload",2);!Fr&&!Fs&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){E.on(T.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.logLevelToUpload&&At[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),E.on(T.JOIN_SUCCESS,({room:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),E.once(T.JOIN_FAILED,()=>{this.startUpload()}),E.on(T.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)&&Y(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 f(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:on(),sdkAppId:String(a),userId:n,version:Re,log:d.map(l=>l.log).join(`
|
|
6
|
-
`)}),a),d.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:()=>fi({url:hi(e,Bi.LOG),body:i,timeout:5e3,priority:"low"}),settings:{retries:3,timeout:2e3},onError:({retry:t})=>{t()}})()}getPrefix(i){let e=new Date;e.setTime(Vs());let t=String(e.getMilliseconds());return"padStart"in String.prototype&&(t=t.toString().padStart(3,"0")),`[${e.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${t}] <${At[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){g(At[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 d;e.unshift(this.getPrefix(i));let n={log:e.reduce((l,m)=>`${l} ${this.logChunkToString(m)}`.trim(),""),level:i,userId:r,sdkAppId:o,forAllJoinedClients:t};if(E.emit(T.LOG,{log:n}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(n),i<this._logLevel)return;let a=((d=At[i])==null?void 0:d.toLowerCase())||"info";Bn.PRINT_LOG_TAG?console[a](vf,Df,Of,...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 zr(i)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;At[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}};c(Bn,"PRINT_LOG_TAG",!(ve||pe||Wc));var Qc=Bn,C=new Qc;var kf=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)})},ho=kf;var zc=class{constructor(){c(this,"_prefix","TRTC");c(this,"_queue",new Map)}getRealKey(i){return`${this._prefix}_${i}`}checkStorage(){if(!Ti())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(Ti())try{for(let[i,e]of this._queue)localStorage.setItem(i,JSON.stringify(e))}catch(i){C.warn(i)}}getItem(i){if(!Ti())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){C.warn(e)}}setItem(i,e){if(Ti())try{let t={expiresIn:Date.now()+cn,value:e};this._queue.set(this.getRealKey(i),t)}catch(t){C.warn(t)}}deleteItem(i){if(!Ti())return!1;try{return i=this.getRealKey(i),this._queue.delete(i),localStorage.removeItem(i),!0}catch(e){return C.warn(e),!1}}clear(){if(Ti())try{localStorage.clear()}catch(i){C.warn(i)}}},as=new zc;var zt={};ci(zt,{HTTPS_API:()=>Qf,IS_GET_CAPABILITIES_SUPPORTED:()=>Id,IS_GET_SETTINGS_SUPPORTED:()=>Qt,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>Sd,IS_INSERTABLE_STREAM_SUPPORTED:()=>yi,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>zn,IS_RTC_RTP_SENDER_SUPPORTED:()=>So,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>Qn,IS_SEI_SUPPORTED:()=>Ao,IS_SPC_SUPPORTED:()=>ls,basis:()=>Zf,capabilityCheck:()=>Cd,checkSystemRequirementsInternal:()=>Xn,decodeSupportStatus:()=>jn,encodeSupportStatus:()=>_d,getBrowserInfo:()=>qf,getDisplayResolution:()=>fh,isAddTransceiverSupported:()=>_t,isBrowserSupported:()=>gd,isGetReceiversSupported:()=>Tr,isGetSendersSupported:()=>zi,isGetTransceiversSupported:()=>Xt,isGetUserMediaSupported:()=>_h,isMediaDevicesSupported:()=>qn,isMediaSessionSupported:()=>Sh,isMediaStreamTrackProcessorSupported:()=>Td,isReplaceTrackSupported:()=>Ed,isRequestVideoFrameCallbackSupported:()=>Er,isSIMDSupported:()=>Kf,isScreenCaptureApiAvailable:()=>To,isSelectedCandidatePair:()=>Qi,isSetParametersSupported:()=>Io,isSmallStreamAPISupported:()=>Th,isSmallStreamSupported:()=>Eo,isStopTransceiverSupported:()=>Yf,isTRTCSupported:()=>jf,isUnifiedPlanDefault:()=>zf,isUsedInHttpProtocol:()=>Ri,isWebAudioSupported:()=>gh,isWebCodecSupported:()=>Eh,isWebCodecsSupported:()=>ph,isWebRTCSupported:()=>Ad,isWebTransportSupported:()=>Ih});var dd={};ci(dd,{AUDIO_LEVEL_SCALE:()=>ft,AudioCodecPipelineType:()=>ad,AudioDecoderDowngradeState:()=>ed,AudioPlayerMode:()=>od,AudioType:()=>Ku,BASIC_TYPE:()=>fr,BannedReason:()=>nd,CONNECTION_CLOSED_REASON:()=>Kc,ClientEvent:()=>Qu,CodecType:()=>rh,ConnectionEvent:()=>kt,ConnectionState:()=>ct,DECODE_FAILED_ERROR_CODE:()=>cd,FacingMode:()=>Fn,LeaveReason:()=>ih,LocalTrackEvent:()=>mo,MULTI_VIDEO_DATA_TYPE:()=>Mt,MediaType:()=>De,MediaTypeLabel:()=>Mf,MonitorEventId:()=>fo,MutedFlag:()=>Yu,NetworkQualityValue:()=>sd,PlayerState:()=>cs,ReceiveMode:()=>th,RemoteStreamType:()=>Ke,RemoteTrackEvent:()=>po,RoomEvent:()=>ji,SceneNumber:()=>Zc,StreamEvent:()=>zu,StreamType:()=>eh,SubscribeMediaType:()=>Yc,TIMER_TYPE:()=>jt,TRACK_ACTION:()=>rd,TRACK_KIND:()=>id,TrackEvent:()=>Ii,UserRole:()=>qe,UserRoleNumber:()=>pr,VideoCodec:()=>Xi,VideoCodecPipelineType:()=>$n,VideoContentHint:()=>_o,VideoDecoderDowngradeState:()=>td,VideoPlayerMode:()=>Hn,VideoType:()=>Zu});var kt=(R=>(R.TRACK_ADDED="track-added",R.TRACK_UPDATED="track-updated",R.TRACK_SUBSCRIBED="track-subscribed",R.STREAM_ADDED="stream-added",R.STREAM_REMOVED="stream-removed",R.STREAM_UPDATED="stream-updated",R.STREAM_PUBLISHED="stream-published",R.STREAM_SUBSCRIBED="stream-subscribed",R.STREAM_UNSUBSCRIBED="stream-unsubscribed",R.STATE_CHANGED="state-changed",R.ERROR="error",R.CONNECTION_STATE_CHANGED="connection-state-changed",R.FIREWALL_RESTRICTION="firewall-restriction",R.SEI_MESSAGE="sei-message",R.CLOSED="closed",R))(kt||{}),Kc=(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))(Kc||{}),Qu=(D=>(D.STREAM_ADDED="stream-added",D.STREAM_REMOVED="stream-removed",D.STREAM_UPDATED="stream-updated",D.STREAM_SUBSCRIBED="stream-subscribed",D.CONNECTION_STATE_CHANGED="connection-state-changed",D.PEER_JOIN="peer-join",D.PEER_LEAVE="peer-leave",D.MUTE_AUDIO="mute-audio",D.MUTE_VIDEO="mute-video",D.UNMUTE_AUDIO="unmute-audio",D.UNMUTE_VIDEO="unmute-video",D.CLIENT_BANNED="client-banned",D.NETWORK_QUALITY="network-quality",D.AUDIO_VOLUME="audio-volume",D.SEI_MESSAGE="sei-message",D.ERROR="error",D))(Qu||{}),zu=(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))(zu||{}),mo=(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))(mo||{}),cs=(t=>(t.PAUSED="PAUSED",t.PLAYING="PLAYING",t.STOPPED="STOPPED",t))(cs||{}),ji=(te=>(te.PEER_JOIN="peer-join",te.PEER_LEAVE="peer-leave",te.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",te.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",te.BANNED="banned",te.NETWORK_QUALITY="network-quality",te.AUDIO_VOLUME="audio-volume",te.SEI_MESSAGE="sei-message",te.ERROR="error",te.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",te.REMOTE_PUBLISHED="remote-published",te.REMOTE_UNPUBLISHED="remote-unpublished",te.FIREWALL_RESTRICTION="firewall-restriction",te.HEARTBEAT_REPORT="heartbeat-report",te.CUSTOM_MESSAGE="custom-message",te.LAYER_DATA="layerData",te.FIRST_VIDEO_FRAME="first-video-frame",te.DUMP="dump",te))(ji||{}),Ii=(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))(Ii||{}),po=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(po||{}),Yu=(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))(Yu||{}),Zc=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(Zc||{}),pr=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(pr||{}),qe=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(qe||{}),ct=(o=>(o.CONNECTED="CONNECTED",o.DISCONNECTED="DISCONNECTED",o.CONNECTING="CONNECTING",o.RECONNECTED="RECONNECTED",o.RECONNECTING="RECONNECTING",o))(ct||{}),ed=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(ed||{}),td=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(td||{}),id=(t=>(t.AUDIO="audio",t.VIDEO="video",t.AUXILIARY="auxVideo",t))(id||{}),rd=(e=>(e.ADD="add",e.REMOVE="remove",e))(rd||{}),De=(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))(De||{}),Mf={1:"audio",2:"auxVideo",4:"video"},Ku=(i=>(i[i.opus=111]="opus",i))(Ku||{}),Zu=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(Zu||{}),eh=(e=>(e.Big="big",e.Small="small",e))(eh||{}),Ke=(e=>(e.Main="main",e.Aux="auxiliary",e))(Ke||{}),Mt=(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))(Mt||{}),fo=(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))(fo||{}),sd=(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))(sd||{}),th=(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))(th||{}),Fn=(e=>(e.user="user",e.environment="environment",e))(Fn||{}),Hn=(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))(Hn||{}),od=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(od||{}),nd=(r=>(r.BANNED="banned",r.KICK="kick",r.USER_TIME_OUT="user_time_out",r.ROOM_DISBAND="room_disband",r))(nd||{}),ih=(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))(ih||{}),ft=1e8,Yc=class{constructor(){c(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)}},fr=(o=>(o.String="string",o.Number="number",o.Boolean="boolean",o.Array="array",o.Object="object",o))(fr||{}),Xi=(t=>(t.H264="h264",t.H265="h265",t.VP8="vp8",t))(Xi||{}),$n=(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))($n||{}),ad=(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))(ad||{}),rh=(t=>(t.WebRTC="webrtc",t.WebCodecs="webcodecs",t.WebAssembly="webassembly",t))(rh||{}),cd=(u=>(u[u.SUCCESS=0]="SUCCESS",u[u.FAILED=1]="FAILED",u[u.WEBCODEC_INIT=2]="WEBCODEC_INIT",u[u.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",u[u.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",u[u.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",u[u.WASM_INIT=6]="WASM_INIT",u[u.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",u[u.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",u[u.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",u[u.TEST=10]="TEST",u))(cd||{}),_o=(r=>(r.NONE="",r.DETAIL="detail",r.MOTION="motion",r.TEXT="text",r))(_o||{}),jt=(o=>(o.INTERVAL="interval",o.TIMEOUT="timeout",o.RAF="raf",o.RIC="ric",o.INTERVAL_IN_WORKER="intervalInWorker",o))(jt||{});var x={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"},Oe={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: ${Ae(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: ${Ae(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 sh=(s,i)=>i?`${Ft}/${s}/${i}`:`${Ft}/${s}/index.html`;var Lf=()=>{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(Tc);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 U(s){let{key:i,data:e,link:t,addDocLink:r=!0}=s,o="",n="",a="";oe(Oe[i])?o=Oe[i](e):K(Oe[i])&&(o=Oe[i]);let{TRTC_ERROR_INFO:d,TRTC_ERROR_LINK:l}=Lf();t?a=`${t.className}.html#${t.fnName}`:l&&l[i]&&(oe(l[i])?a=l[i](e):K(l[i])&&(a=l[i]));let m=o;return Rt()&&(d&&d[i]&&(oe(d[i])?n=d[i](e):K(d[i])&&(n=d[i])),n&&(r?m=`${n}
|
|
7
|
-
\u8BF7\u67E5\u770B\u6587\u6863: ${sh("zh-cn",a)}
|
|
3
|
+
`}});var yh=Tn(oi=>{"use strict";var Co=Th(),i_=Sh();oi.write=i_;oi.parse=Co.parse;oi.parseParams=Co.parseParams;oi.parseFmtpConfig=Co.parseFmtpConfig;oi.parsePayloads=Co.parsePayloads;oi.parseRemoteCandidates=Co.parseRemoteCandidates;oi.parseImageAttributes=Co.parseImageAttributes;oi.parseSimulcastStreamList=Co.parseSimulcastStreamList});var Cp=(ee=>(ee[ee.INVALID_PARAMETER=4096]="INVALID_PARAMETER",ee[ee.INVALID_OPERATION=4097]="INVALID_OPERATION",ee[ee.NOT_SUPPORTED=4098]="NOT_SUPPORTED",ee[ee.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",ee[ee.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",ee[ee.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",ee[ee.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",ee[ee.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",ee[ee.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",ee[ee.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",ee[ee.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",ee[ee.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",ee[ee.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",ee[ee.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",ee[ee.CLIENT_BANNED=16448]="CLIENT_BANNED",ee[ee.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",ee[ee.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",ee[ee.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",ee[ee.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",ee[ee.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",ee[ee.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",ee[ee.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",ee[ee.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",ee[ee.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",ee[ee.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",ee[ee.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",ee[ee.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",ee[ee.API_CALL_ABORTED=16461]="API_CALL_ABORTED",ee[ee.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",ee[ee.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",ee[ee.UNKNOWN=65535]="UNKNOWN",ee))(Cp||{}),te=Cp;var Vg=function(i){for(let t in te)if(te[t]===i)return t;return"UNKNOWN"},Du=class extends Error{constructor({name:e="RtcError",message:r,code:o=te.UNKNOWN,extraCode:s=0,constraint:n}){let d=`<${Vg(o)} 0x${o.toString(16)}>`,p=`${r}${n?` constraint: ${n}`:""}${r!=null&&r.includes(d)?"":` ${d}`}`;super(p);u(this,"code");u(this,"extraCode");u(this,"message");u(this,"originMessage");u(this,"name");u(this,"constraint");this.code=o,this.extraCode=s,this.name=e,this.message=p,this.constraint=n,this.originMessage=r}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},he=Du;var OS=new Date().getTime(),Bg=0;var In=function(){return new Date().getTime()+Bg},sc=function(){let i=new Date;return i.setTime(In()),i.toLocaleString()};var Lr={};qr(Lr,{bytes2ms:()=>Up,convertObjectNumberToInt:()=>On,copyProperties:()=>Lp,deepClone:()=>go,deepMerge:()=>kr,delay:()=>Pn,fibonacci:()=>Eo,formatedTime:()=>Ec,getConstructorName:()=>wn,getContainerFromElement:()=>jp,getEnv:()=>Pp,getInternalVersion:()=>Wp,getLoggerUrl:()=>Qr,getMuteStateFromFlag:()=>Mn,getNetworkType:()=>Nn,getNumNetworkType:()=>fc,getReconnectionTimeout:()=>Bp,getStringByteLength:()=>qp,getTurnServer:()=>Gp,getUint32Version:()=>Ic,getValueType:()=>mt,getViewListFromView:()=>gs,glog:()=>Dn,ipv4ToUint32:()=>fs,isArray:()=>st,isAudioWorkletSupported:()=>Hp,isBoolean:()=>dt,isConstructor:()=>ps,isEmpty:()=>hs,isFunction:()=>ze,isLangChinese:()=>hr,isMediaStreamTrack:()=>$p,isNumber:()=>je,isObject:()=>xr,isOverseaSdkAppId:()=>Cn,isPlainObject:()=>Gt,isPortrait:()=>Tc,isPromise:()=>Mi,isRemoteTrack:()=>Fp,isString:()=>we,isUndefined:()=>$,loadImage:()=>Es,ms2bytes:()=>Vp,ms2samples:()=>Fu,performanceNow:()=>_e,promiseAny:()=>gc,samples2ms:()=>$u,setNetworkType:()=>kp,stringify:()=>rr,stringifyIncludeValue:()=>_c,throttlePromise:()=>Sc});var Bu={};qr(Bu,{AUDIO_MUTE_BIT:()=>lc,AUDIO_STAT_BIT:()=>ls,AUX_STAT_BIT:()=>An,AUX_STREAM_MSID:()=>Yg,BACKEND_ENV:()=>uc,BASE_DOC_URL:()=>Mr,BASE_HOST:()=>Np,CAPABILITIES_KEYS:()=>hc,CLASS_NAME:()=>SE,CLOUD_CONSOLE_URL:()=>Wg,CROSS_ROOM_BIT:()=>Xg,DATA_FREEZE_TIMING:()=>pc,DEFAULT_ASSETS_URL:()=>nc,DOC_URL:()=>Gg,DTLS_STATE_UNKNOWN:()=>aE,ENV_NAME:()=>Jr,EXCHANGE_SDP_TIMEOUT:()=>pE,IS_WORKER:()=>ds,IS_WORKLET:()=>Sn,KIBANA_EVENT:()=>zr,LOCAL_STREAM_PUBLISH_STATE:()=>wp,LOGGER_CMD_TYPE:()=>wi,LOGGER_DOMAIN:()=>Ou,LOGGER_DOMAIN_OVERSEA:()=>Pu,LOG_LEVEL:()=>pr,LOG_LEVEL_NAME:()=>AE,MAIN_STREAM_MSID:()=>Qg,MAX_RTT:()=>Rn,MICROPHONE_COMMUNICATIONS:()=>yE,MICROPHONE_DEFAULT:()=>fo,MUTE_ALL_BIT:()=>zg,NAME:()=>D,NETWORK_TYPE:()=>ho,NOT_SUPPORTED_H264:()=>fE,PAUSED_RETRY_COUNT:()=>Vu,PEERCONNECTION_CONNECTING_TIMEOUT:()=>TE,PEER_CONNECTION_STATE:()=>cE,PEER_LEAVE_REASON:()=>Mp,RECOVER_CAPTURE_INTERVAL:()=>ms,REMOTE_STREAM_TYPE_AUX:()=>Kg,REMOTE_STREAM_TYPE_MAIN:()=>Zg,RENDER_FREEZE_TIMING:()=>gE,SCHEDULE_DOMAIN:()=>Xr,SCHEDULE_TIMEOUT:()=>IE,SDP_SEMANTICS_PLAN_B:()=>hE,SDP_SEMANTICS_UNIFIED_PLAN:()=>Uu,SECOND_HOST:()=>Fg,SIGNAL_PING_PONG_INTERVAL:()=>qg,SIGNAL_PING_TIMEOUT:()=>jg,SIGNAL_RECONNECTION_COUNT:()=>uE,SMALL_STAT_BIT:()=>ku,SPEAKER_DEFAULT:()=>bn,STORAGE_EXPIRES_TIME:()=>ac,STREAM_TYPE_BIG:()=>EE,STREAM_TYPE_SMALL:()=>_E,SUBSCRIBE_SMALL_RETRY_COUNT:()=>bE,SYNC_USER_LIST_INTERVAL:()=>lE,Scene:()=>Pr,THIRD_HOST:()=>Hg,TRANSPORT_DIRECTION:()=>Jg,TRTC_ERROR_ASSISTANCE:()=>xu,TRTC_QUALITY_BAD:()=>oE,TRTC_QUALITY_DISCONNECTED:()=>nE,TRTC_QUALITY_EXCELLENT:()=>tE,TRTC_QUALITY_GOOD:()=>rE,TRTC_QUALITY_POOR:()=>iE,TRTC_QUALITY_UNKNOWN:()=>eE,TRTC_QUALITY_VERY_BAD:()=>sE,UPDATE_OFFER_TIMEOUT:()=>mE,VIDEO_MUTE_BIT:()=>mc,VIDEO_STAT_BIT:()=>us,audioProfileMap:()=>cc,getRetryCount:()=>dE,getScriptDir:()=>$g,innerVersion:()=>wu,loggerProxy:()=>yn,screenProfileMap:()=>dc,setLoggerProxy:()=>po,setRetryCount:()=>Lu,setVersion:()=>Mu,version:()=>rt,videoProfileMap:()=>Or});var wu="4.15.00.1600",rt="5.0.0";function Mu(i){rt=i;let[t,e,r]=i.split(".").map(o=>parseInt(o,10));wu=`${t}.${Math.min(15,e)}.${Math.min(15,r)}.${e.toString().padStart(2,"0")}${r.toString().padStart(2,"0")}`}var ds=typeof importScripts!="undefined",Sn=typeof registerProcessor!="undefined",$g=()=>{let i=ds?self.location.href:document.currentScript.src;return i.substring(0,i.lastIndexOf("/")+1)},yn="",po=i=>yn=i,Np="web.sdk.qcloud.com",Fg="web.sdk.tencent.cn",Hg="web.sdk.cloud.tencent.cn",Wg="https://console.cloud.tencent.com/trtc",Mr=`https://${Np}/trtc/webrtc/v5/doc`,nc="https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/",Gg=`${Mr}/zh-cn/`,Ou="https://yun.tim.qq.com",Pu="https://apisgp.my-imcloud.com",xu="trtc_error_assistance",wi={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},Jr={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},pr=(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))(pr||{}),jg=18e3,qg=2e3,ho={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},ac=7*24*3600*1e3,cc={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}},Or={"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}},dc={"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}},D={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"},Jg={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},uc={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Pr=(e=>(e.LIVE="live",e.RTC="rtc",e))(Pr||{}),us=1,ku=2,An=4,ls=8,lc=64,mc=16,zg=112,Xg=128,Qg="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",Yg="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",Zg=D.MAIN,Kg=D.AUXILIARY,eE=0,tE=1,rE=2,iE=3,oE=4,sE=5,nE=6,aE="unknown",cE={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Dp=1/0;function Lu(i){Dp=i}function dE(){return Dp}var uE=30,zr={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"},lE=1e4,mE=1e4,pE=1e4,Uu="unified-plan",hE="plan-b",fE=1028,wp=(r=>(r[r.UNPUBLISH=-1]="UNPUBLISH",r[r.PUBLISHING=0]="PUBLISHING",r[r.PUBLISHED=1]="PUBLISHED",r))(wp||{}),pc=500,gE=1e3,EE=D.BIG,_E=D.SMALL,TE=10*1e3,Xr={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"},IE=2e3,SE={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},Vu=5,fo="default",bn=fo,yE="communications",AE=Object.keys(pr),Mp=["normal leave","timeout leave","kick","role change"],bE=10,ms=2e3,hc=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],Rn=10*1e3;var Pp=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Cn=i=>Number(i)<14e8,Qr=function(i,t){let e;yn?e=yn:e=Cn(i)?Pu:Ou;let r=Math.floor(Math.random()*_n(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${r}&sdkappid=${i}&cmdtype=${t}`},vn="unknown";function Nn(){if(vn!=="unknown")return vn;let{userAgent:i,connection:t}=navigator,e=(i.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let r=t&&t.type&&t.type.toLowerCase(),o=t&&t.effectiveType&&t.effectiveType.toLowerCase();return o==="slow-2"&&(o="2g"),r&&(vn=xp(r,o)),vn}function xp(i,t){if(ho[i])return i;switch(i){case"cellular":case"wimax":return t||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function kp(i){vn=xp(i)}function fc(){return ho[Nn()]}function Lp(i,t){for(let e of Reflect.ownKeys(t))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let r=Object.getOwnPropertyDescriptor(t,e)||"";Object.defineProperty(i,e,r)}return i}function Up(i,t=48e3){return $u(i/4,t)}function $u(i,t=48e3){return i*1e3/t}function Vp(i,t=48e3){return Fu(i,t)*4}function Fu(i,t=48e3){return i*t/1e3}var Dn=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},hr=()=>{let i=navigator.language;return i=i.substring(0,2),i==="zh"},Gt=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Eo(i,t=1,e=1){return i<=1?e:Eo(i-1,e,t+e)}function Bp(i){return i>8?30*1e3:Eo(i)*1e3}function mt(i){return Reflect.apply(Object.prototype.toString,i,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var ze=i=>typeof i=="function",$=i=>typeof i=="undefined",we=i=>typeof i=="string",je=i=>typeof i=="number",dt=i=>typeof i=="boolean",xr=i=>mt(i)==="object",st=i=>mt(i)==="array",$p=i=>mt(i)==="MediaStreamTrack".toLowerCase(),Fp=i=>i.isRemote,Mi=i=>mt(i)==="promise",ps=i=>ze(i)&&i.prototype.constructor===i,wn=i=>ps(i)?i.prototype.constructor.name:"",Hp=typeof AudioWorkletNode!="undefined";function gc(i){return new Promise((t,e)=>{let r=[];i.forEach(o=>{o.then(t).catch(s=>{r.push(s),r.length===i.length&&e(r)})})})}function _e(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Op=i=>+i<10?`0${i}`:i,Wp=i=>{let t=i.match(/^\d+\.\d+\.\d+/)[0];if(!t)return i;let e=t.split("."),r=Op(e[1])+Op(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${r}`},RE=Object.prototype.hasOwnProperty,{toString:US}=Object.prototype;function hs(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Gt(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(RE.call(i,t))return!1;return!0}}return!1}function Mn(i,t){return{userId:t,hasAudio:!!(i&ls),hasVideo:!!(i&us),hasAuxiliary:!!(i&An),hasSmall:!!(i&ku),audioMuted:!!(i&lc),videoMuted:!!(i&mc),audioAvailable:!!(i&ls)&&!(i&lc),videoAvailable:!!(i&us)&&!(i&mc)}}function Gp(i){let t={urls:i.url.startsWith("turn:")||i.url.startsWith("turns:")?i.url:`turn:${i.url}`};return!$(i.username)&&!$(i.credential)&&(t.username=i.username,t.credential=i.credential,t.credentialType="password",$(i.credentialType)||(t.credentialType=i.credentialType)),t}function fs(i,t=!0){if(!we(i))return 0;let e=i.split(".");return t?(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 kr=function(i,t,e,r){if(!(xr(i)&&xr(t)))return 0;let o=0,s=Object.keys(t),n;for(let d=0,p=s.length;d<p;d++)if(n=s[d],!($(t[n])||e&&e.includes(n)))if(xr(i[n])&&xr(t[n]))o+=kr(i[n],t[n],e,r);else{if(r&&r.includes(t[n]))continue;i[n]!==t[n]&&(i[n]=go(t[n]),o+=1)}return o};function go(i){if(st(i)){let t=[];return i.forEach((e,r)=>{t[r]=go(e)}),t}if(xr(i)){let t={};return Object.keys(i).forEach(e=>{t[e]=go(i[e])}),t}return i}var gs=i=>{let t=[];if(st(i))t=[...i];else if(we(i)){let e=document.getElementById(i);e&&t.push(e)}else i&&t.push(i);return t},jp=i=>we(i)?document.getElementById(i):i,vE=i=>{let t=p=>p<10?`0${p}`:`${p}`,e=i.getFullYear(),r=i.getMonth()+1,o=i.getDate(),s=t(i.getHours()),n=t(i.getMinutes()),d=t(i.getSeconds());return`${e}/${r}/${o} ${s}:${n}:${d}`},Ec=()=>vE(new Date);function rr(i,{keysToInclude:t,keysToExclude:e}){try{if(st(i))return`[${i.map(n=>rr(n,{keysToInclude:t,keysToExclude:e})).join(",")}]`;if(!Gt(i)||!st(t)&&!st(e))return JSON.stringify(i);let r={},o=new Set(t),s=new Set(e);return Object.keys(i).forEach(n=>{(s.size===0&&o.has(n)||o.size===0&&!s.has(n))&&(r[n]=Gt(i[n])||st(i[n])?JSON.parse(rr(i[n],{keysToExclude:e,keysToInclude:t})):i[n])}),JSON.stringify(r)}catch(r){return"{}"}}function _c(i,t=!1){let e=[];return Object.keys(i).forEach(r=>{t===i[r]&&e.push(r)}),rr(i,{keysToInclude:e})}function qp(i){return i.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Tc=()=>{var i,t,e,r;return(i=window.screen)!=null&&i.orientation?!!((r=(e=(t=window.screen)==null?void 0:t.orientation)==null?void 0:e.type)!=null&&r.includes("portrait")):window.orientation===0||window.orientation===180},Es=i=>y(void 0,null,function*(){return new Promise((t,e)=>{let r;if(we(i))r=new Image,r.crossOrigin="anonymous",r.src=i;else if(r=i,r.complete){t(r);return}r.onload=()=>t(r),r.onerror=()=>{e(new he({code:te.INVALID_PARAMETER,message:`load image failed, url: ${i}`}))}})}),Ic=i=>{let t=i.split(".");return+t[0]<<24|+t[1]<<16|+t[2]<<8|+t[3]<<0},On=i=>(Object.keys(i).forEach(t=>{je(i[t])&&(t.startsWith("uint")||t.startsWith("int"))?i[t]=Math.floor(i[t]):(Gt(i[t])||st(i[t]))&&On(i[t])}),i);function Pn(i,t){return new Promise(e=>{let r=setTimeout(e,i);t&&t(r)})}function Sc(i,t){let e=null;return function(...r){return e||(e=i.apply(t||this,r),e.finally(()=>e=null),e)}}function Yr({url:i,body:t,method:e="POST",timeout:r,priority:o}){return new Promise((s,n)=>{if("fetch"in window)return fetch(i,{method:e,body:t,priority:o}).then(p=>p.text()).then(p=>{try{s({data:JSON.parse(p)})}catch(m){s({data:p})}},n);let d=new XMLHttpRequest;d.onreadystatechange=()=>{if(d.readyState===4)if(d.status>=200&&d.status<300)try{let p=JSON.parse(d.response);s({data:p})}catch(p){s({data:d.response})}else n({status:d.status,statusText:d.statusText||"request failed!"})},d.timeout=r||5e3,d.open(e,i,!0),d.send(t)})}function Hu(i){return y(this,null,function*(){let t=_e(),e=JSON.stringify(i);try{if(!CompressionStream||e.length<=2800)return e;let o=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),d=yield(yield(yield new Response(o)).blob()).arrayBuffer();return B.debug(`compressJSON ${e.length} -> ${d.byteLength} ${_e()-t}ms`),d}catch(r){return e}})}var CE=Object.prototype.hasOwnProperty;var Oi=i=>typeof i=="function",Jp=i=>typeof i=="undefined";var zp=i=>typeof i=="boolean";var Wu=i=>i.isRemote;var NE=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Xp(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(NE(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(CE.call(i,t))return!1;return!0}}return!1}var DE=0,wE=1,Qp=2;function ME({retryFunction:i,settings:t,onError:e,onRetrying:r,onRetryFailed:o,onRetrySuccess:s,context:n}){return function(...d){let{retries:p=5,timeout:m=1e3}=t,E=0,_=-1,b=DE,C=(k,x)=>y(this,null,function*(){let P=n||this;try{let J=yield i.apply(P,d);E>0&&s&&s.call(this,E),E=0,k(J)}catch(J){let Q=()=>{clearTimeout(_),E=0,b=Qp,x(J)},De=()=>{b!==Qp&&E<(Oi(p)?p():p)?(E++,b=wE,Oi(r)&&r.call(this,E,Q),_=window.setTimeout(()=>{_=-1,C(k,x)},Oi(m)?m(E):m)):(Q(),Oi(o)&&o.call(this,J))};Oi(e)?e.call(this,{error:J,retry:De,reject:x,retryFuncArgs:d,retriedCount:E}):De()}});return new Promise(C)}}var Pi=ME;var _s=class{constructor(t){u(this,"userId");u(this,"remoteUserId");u(this,"id");u(this,"sdkAppId");u(this,"type");u(this,"isLocal");this.id=t.id,this.userId=t.userId,this.sdkAppId=t.sdkAppId,this.remoteUserId=t.remoteUserId,this.isLocal=zp(t.isLocal)?t.isLocal:!0,this.type=this.isLocal?"":t.type}createChild(t){return Object.setPrototypeOf(t,this)}setUserId(t){this.userId=t}setSdkAppId(t){this.sdkAppId=t}log(t,e){let r=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${r?`|${r}`:""}]`),B.log(t,e,Jp(this.userId)||Xp(this.userId),this.userId,this.sdkAppId)}info(...t){this.log(2,t)}debug(...t){this.log(1,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}};var Ds={};qr(Ds,{ANDROID_VERSION:()=>qu,CHROME_MAJOR_VERSION:()=>Zr,CHROME_VERSION:()=>Vc,EDGE_VERSION:()=>Ac,EDG_MAJOR_VERSION:()=>zu,EDG_VERSION:()=>bc,FIREFOX_MAJOR_VERSION:()=>Ju,FIREFOX_VERSION:()=>yc,HUAWEI_VERSION:()=>xc,IE_VERSION:()=>LE,IOS_MAIN_VERSION:()=>Qt,IOS_VERSION:()=>Li,IPADQQB_VERSION:()=>Oc,IS_ANDROID:()=>gt,IS_ANDROID_WEBVIEW:()=>el,IS_ANY_SAFARI:()=>xi,IS_CHROME:()=>Cs,IS_CHROME_OS:()=>Xu,IS_CHROMIUM_BASE:()=>Io,IS_EDG:()=>Ss,IS_EDGE:()=>Is,IS_ELECTRON:()=>VE,IS_FIREFOX:()=>gr,IS_HEADLESS_CHROME:()=>Ku,IS_HONOR:()=>Zu,IS_HUAWEI:()=>Yu,IS_HUAWEIBROWSER:()=>Wn,IS_IE:()=>eh,IS_IE8:()=>kE,IS_IOS:()=>It,IS_IOS_13_OR_14:()=>rl,IS_IOS_15_1:()=>tl,IS_IPAD:()=>xn,IS_IPADQQB:()=>$n,IS_IPAD_PRO:()=>ju,IS_IPHONE:()=>_o,IS_IPOD:()=>Kp,IS_LINUX:()=>Fn,IS_LOCAL:()=>Tr,IS_MAC:()=>_r,IS_MACQQB:()=>Bn,IS_MIBROWSER:()=>Hn,IS_MQQB:()=>bs,IS_NATIVE_ANDROID:()=>xE,IS_OLD_ANDROID:()=>PE,IS_OPENHARMONY:()=>th,IS_OPPOBROWSER:()=>Rs,IS_SAFARI:()=>Mt,IS_SAFARI_15_1:()=>$E,IS_SAMSUNGBROWSER:()=>Gn,IS_SOGOU:()=>Ln,IS_SOGOUM:()=>kn,IS_TBS:()=>Er,IS_UCBROWSER:()=>Qu,IS_VIVOBROWSER:()=>vs,IS_WECHAT:()=>ys,IS_WIN:()=>To,IS_WQQB:()=>Vn,IS_WX:()=>UE,IS_X5MQQB:()=>As,IS_XWEB:()=>Un,MACQQB_VERSION:()=>Mc,MI_VERSION:()=>Pc,MQQB_VERSION:()=>Ts,OPENHARMONY_VERSION:()=>BE,OPPO_VERSION:()=>Lc,SAFARI_VERSION:()=>ki,SAMSUNG_VERSION:()=>kc,SOGOUM_VERSION:()=>Rc,SOGOU_VERSION:()=>vc,TBS_VERSION:()=>Cc,UA_DATA_STRING:()=>fr,USER_AGENT:()=>Xt,VIVO_VERSION:()=>Uc,WECHAT_VERSION:()=>Dc,WQQB_VERSION:()=>wc,XWEB_VERSION:()=>Nc,browserInfo:()=>Ur,getBrowserInfo:()=>rh,getChromeMajorVersion:()=>jn,getDeviceModel:()=>Jn,getOSName:()=>Ns,getOSNumber:()=>zn,getOSString:()=>So,getOSType:()=>ol,getTerminalType:()=>il,getUserAgentData:()=>qn,isLocalStorageEnabled:()=>Kr});var Xt=typeof navigator=="undefined"?"":navigator.userAgent,Ie=i=>new RegExp(i,"i").test(Xt),pt=i=>{if(Ie(i)){let t=new RegExp(`${i}\\/([\\d.]+)`),e=Xt.match(t);if(e&&e[1])return e[1]}return""},Gu=i=>{if(Ie(i)){let t=new RegExp(`${i}\\/(\\d+)`),e=Xt.match(t);if(e&&e[1])return parseFloat(e[1])}return NaN},Yp=/AppleWebKit\/([\d.]+)/i.exec(Xt),OE=Yp?parseFloat(Yp[1]):NaN,xn=Ie("iPad"),ju=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Ie("Macintosh"),_o=Ie("iPhone")&&!xn,Kp=Ie("iPod"),It=_o||xn||Kp||ju,gt=Ie("Android"),qu=function(){if(gt){let i=Xt.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(i){let t=i[1]&&parseFloat(i[1]),e=i[2]&&parseFloat(i[2]);if(t&&e)return parseFloat(`${i[1]}.${i[2]}`);if(t)return t}}return NaN}(),PE=gt&&Ie("webkit")&&qu<2.3,xE=gt&&qu<5&&OE<537,gr=Ie("Firefox"),yc=pt("Firefox"),Ju=Gu("Firefox"),Is=Ie("Edge"),Ac=pt("Edge"),Ss=Ie("Edg"),bc=pt("Edg"),zu=Gu("Edg"),kn=Ie("SogouMobileBrowser"),Rc=pt("SogouMobileBrowser"),Ln=Ie("MetaSr\\s"),vc=pt("MetaSr\\s"),Er=Ie("TBS"),Cc=pt("TBS"),Un=Ie("XWEB"),Nc=pt("XWEB"),kE=Ie("MSIE\\s8\\.0"),eh=Ie("MSIE\\/\\d+"),LE=function(){if(eh){let i=/MSIE\s(\d+)\.\d/.exec(Xt),t=i&&parseFloat(i[1]);return!t&&/Trident\/7.0/i.test(Xt)&&/rv:11.0/.test(Xt)&&(t=11),t}return NaN}(),ys=Ie("(micromessenger|webbrowser)"),Dc=pt("MicroMessenger"),As=!Er&&Ie("MQQBrowser")&&Ie("COVC"),bs=!Er&&Ie("MQQBrowser")&&!Ie("COVC"),Ts=bs||As?pt("MQQBrowser"):"",Vn=!Er&&Ie(" QQBrowser"),wc=pt(" QQBrowser"),Bn=!Er&&Ie("QQBrowserLite"),Mc=pt("QQBrowserLite"),$n=!Er&&Ie("MQBHD"),Oc=pt("MQBHD"),To=Ie("Windows"),_r=!It&&Ie("MAC OS X"),Fn=!gt&&Ie("Linux"),Xu=Ie("CrOS"),UE=Ie("MicroMessenger"),Qu=Ie("UCBrowser"),VE=Ie("Electron"),Hn=Ie("MiuiBrowser"),Pc=pt("MiuiBrowser"),Wn=Ie("HuaweiBrowser"),Yu=Ie("Huawei")||Ie("HUAWEI"),Zu=Ie("Honor")||Ie("HONOR"),xc=pt("HuaweiBrowser"),Gn=Ie("SamsungBrowser"),kc=pt("SamsungBrowser"),Rs=Ie("HeyTapBrowser"),Lc=pt("HeyTapBrowser"),vs=Ie("VivoBrowser"),Uc=pt("VivoBrowser"),th=Ie("OpenHarmony"),BE=pt("OpenHarmony"),jn=()=>Gu("Chrome"),Io=Ie("Chrome"),Cs=!Is&&!Ln&&!kn&&!Er&&!Un&&!Ss&&!Vn&&!Hn&&!Wn&&!Gn&&!Rs&&!vs&&Io,Ku=Ie("HeadlessChrome"),Zr=jn(),Vc=pt("Chrome"),Mt=!Io&&!bs&&!As&&!Bn&&!$n&&Ie("Safari"),xi=Mt||It,ki=pt("Version"),el=/Android.*(wv|.0.0.0)/.test(Xt),Li=(()=>{if(ju)return ki;if(It){let i=Xt.match(/OS (\d+)_(\d+)/i);if(i&&i[1]){let t=i[1];return i[2]&&(t+=`.${i[2]}`),t}}return""})(),Qt=Number(Li.split(".")[0]),$E=ki==="15.1",tl=Li==="15.1",rl=(()=>{let i=Number(Li.split(".")[0]);return i===14||i===13})(),Tr=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",Kr=(()=>{let i;return()=>{if(typeof i=="undefined")try{i=!!window.localStorage}catch(t){i=!1}return i}})(),Ur=rh();function rh(){let i=new Map([[gr,["Firefox",yc]],[Ss,["Edg",bc]],[Cs,["Chrome",Vc]],[Mt,["Safari",ki]],[Er,["TBS",Cc]],[Un,["XWEB",Nc]],[ys&&_o,["WeChat",Dc]],[Vn,["QQ(Win)",wc]],[bs,["QQ(Mobile)",Ts]],[As,["QQ(Mobile X5)",Ts]],[Bn,["QQ(Mac)",Mc]],[$n,["QQ(iPad)",Oc]],[Hn,["MI",Pc]],[Wn,["HW",xc]],[Gn,["Samsung",kc]],[Rs,["OPPO",Lc]],[vs,["VIVO",Uc]],[Is,["EDGE",Ac]],[kn,["SogouMobile",Rc]],[Ln,["Sogou",vc]]]),t="unknown",e="unknown";return i.has(!0)&&([t,e]=i.get(!0)),{name:t,version:e}}var We=null,fr="";function qn(){return y(this,null,function*(){if(We)return We;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return We=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),We&&!fr&&(fr=`UAData: ${We.platform}/${We.platformVersion}`,We.architecture&&We.bitness&&(fr+=` ${We.architecture}/${We.bitness}`),We.mobile&&(fr+=" mobile"),We.model&&(fr+=` model: ${We.model}`),We.fullVersionList&&(fr+=` ${We.fullVersionList.filter(i=>i.brand!=="Not/A)Brand").map(i=>`${i.brand}/${i.version}`).join(",")}`)),We}catch(i){return null}})}function Jn(){return(We==null?void 0:We.model)||""}var Zp=new Map([[gt,"Android"],[It,"iOS"],[To,"Windows"],[_r,"MacOS"],[Fn,"Linux"],[Xu,"ChromeOS"]]),Ns=function(){return Zp.get(!0)?Zp.get(!0):We?We.platform:"unknown"};function zn(){return To?1:gt?2:_r?3:It?4:Fn?5:Xu?6:0}var So=()=>{let i=Ns();return i+=`/${Ur.name}/${Mt?Ur.version:Ur.version.split(".")[0]}`,We!=null&&We.platformVersion&&(i+=`/${We.platformVersion}`),We!=null&&We.architecture&&(i+=`/${We.architecture}`),i};function il(){return gt?4:_o?2:xn?3:_r?12:To?5:Fn?13:th?22:1}function ol(){return gt?"Android":_o?"iPhone":xn?"iPad":_r?"Mac":To?"Windows":Fn?"Linux":"unknown"}var oh=Di(Ui(),1),WE=new oh.default,H=WE;var yo=(V=>(V.ROOM_DESTROY="1",V.JOIN_START="21",V.JOIN_SCHEDULE_SUCCESS="22",V.JOIN_SIGNAL_CONNECTION_START="23",V.JOIN_SIGNAL_CONNECTION_END="24",V.JOIN_SEND_CMD="25",V.JOIN_RECEIVED_CMD_RES="26",V.JOIN_SUCCESS="27",V.JOIN_FAILED="28",V.LEAVE_START="51",V.LEAVE_SEND_CMD="52",V.LEAVE_SUCCESS="53",V.PUBLISH_START="61",V.SEND_FIRST_VIDEO_FRAME="62",V.PUBLISH_FAILED="63",V.SUBSCRIBE_START="81",V.SUBSCRIBE_SUCCESS="82",V.SUBSCRIBE_FAILED="84",V.UNSUBSCRIBE_SUCCESS="83",V.LOCAL_TRACK_CAPTURE_START="101",V.LOCAL_TRACK_CAPTURE_SUCCESS="102",V.LOCAL_TRACK_CAPTURE_FAILED="103",V.LOCAL_TRACK_PUBLISHED="104",V.LOCAL_TRACK_UNPUBLISHED="105",V.LOCAL_TRACK_REPLACED="106",V.SWITCH_DEVICE_SUCCESS="107",V.TRACK_MUTED="108",V.TRACK_UNMUTED="109",V.REMOTE_TRACK_SUBSCRIBED="110",V.REMOTE_TRACK_UNSUBSCRIBED="111",V.LOCAL_TRACK_RECAPTURE="112",V.PLAY_TRACK_START="151",V.PLAYER_STATE_CHANGED="152",V.VIDEO_LOADED_DATA="153",V.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",V.SIGNAL_CONNECTION_STATE_CHANGED="201",V.PEER_CONNECTION_STATE_CHANGED="202",V.SINGLE_CONNECTION_STAT="203",V.SPC_RECONNECTED="204",V.HEARTBEAT_REPORT="251",V.RECEIVED_PUBLISHED_USER_LIST="252",V.REMOTE_PUBLISH_STATE_CHANGED="253",V.AUDIO_LEVEL_INTERVAL="260",V.NETWORK_QUALITY="261",V.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",V.QUALITY_LIMITATION_CHANGED="263",V.LOG="264",V))(yo||{});var L=yo;var GE="%cTRTC%c%s",jE="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",qE="display: inline",$c=class $c{constructor(){u(this,"_isEnableUploadLog",!0);u(this,"_localJoinedUser",new Map);u(this,"_queue",[]);u(this,"_timeoutId",-1);u(this,"_logLevel",1);u(this,"_logLevelToUpload",2);!ds&&!Sn&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){H.on(L.JOIN_SCHEDULE_SUCCESS,({schedule:t})=>{var e;(e=t==null?void 0:t.config)!=null&&e.logLevelToUpload&&pr[t.config.logLevelToUpload]&&(this._logLevelToUpload=t.config.logLevelToUpload)}),H.on(L.JOIN_SUCCESS,({room:t})=>{this.addJoinedUser({userId:t.userId,sdkAppId:t.sdkAppId}),this.startUpload()}),H.once(L.JOIN_FAILED,()=>{this.startUpload()}),H.on(L.LEAVE_SUCCESS,({room:t})=>{this.deleteJoinedUser(t.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(t){this._localJoinedUser.set(t.userId,t),this.startUpload()}deleteJoinedUser(t){this._localJoinedUser.delete(t)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let t={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return t;let e=0;for(;e<this._queue.length&&e!==50;e++){let r=this._queue[e];if(r.forAllJoinedClients)this._localJoinedUser.forEach(({userId:o,sdkAppId:s})=>{t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})});else if(we(r.userId)&&je(r.sdkAppId)){let{userId:o,sdkAppId:s}=r;t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})}}return t.map.size>0&&(t.splicedQueue=this._queue.splice(0,e)),t}upload(){return y(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:t,splicedQueue:e}=this.getLogsToUpload();if(t.size===0)return;try{let o=[...t.values()];for(let s=0;s<o.length;s++){let{userId:n,sdkAppId:d,logs:p}=o[s];yield this.uploadLogWithRetry(JSON.stringify({timestamp:sc(),sdkAppId:String(d),userId:n,version:rt,log:p.map(m=>m.log).join(`
|
|
4
|
+
`)}),d),p.forEach(m=>m.uploaded=!0)}}catch(o){}let r=e.filter(o=>!o.uploaded);r.length>0&&(this._queue=r.concat(this._queue))})}uploadLogWithRetry(t,e){return Pi({retryFunction:()=>Yr({url:Qr(e,wi.LOG),body:t,timeout:5e3,priority:"low"}),settings:{retries:3,timeout:2e3},onError:({retry:r})=>{r()}})()}getPrefix(t){let e=new Date;e.setTime(In());let r=String(e.getMilliseconds());return"padStart"in String.prototype&&(r=r.toString().padStart(3,"0")),`[${e.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${r}] <${pr[t]}>`}getLogLevel(){return this._logLevel}setLogLevel(t){$(pr[t])||(this._logLevel!==t&&this.info("setLogLevel",t),this._logLevel=t)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(t){if(we(t))return t;try{return t instanceof Error?t.toString():JSON.stringify(t)}catch(e){return""}}log(t,e,r=!0,o,s){var p;e.unshift(this.getPrefix(t));let n={log:e.reduce((m,E)=>`${m} ${this.logChunkToString(E)}`.trim(),""),level:t,userId:o,sdkAppId:s,forAllJoinedClients:r};if(H.emit(L.LOG,{log:n}),this._isEnableUploadLog&&t>=this._logLevelToUpload&&this._queue.push(n),t<this._logLevel)return;let d=((p=pr[t])==null?void 0:p.toLowerCase())||"info";$c.PRINT_LOG_TAG?console[d](GE,jE,qE,...e):console[d](...e)}debug(...t){this.log(1,t)}info(...t){this.log(2,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}createLogger(t){return new _s(t)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),r=e?Number(e):-1;pr[r]&&(this._logLevelToUpload=r)}getQueue(){return this._queue}};u($c,"PRINT_LOG_TAG",!(It||gt||Ku));var nl=$c,B=new nl;var JE=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let t=Math.random()*16|0;return(i=="x"?t:t&3|8).toString(16)})},Qn=JE;var al=class{constructor(){u(this,"_prefix","TRTC");u(this,"_queue",new Map)}getRealKey(t){return`${this._prefix}_${t}`}checkStorage(){if(!Kr())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(r=>{if(r.startsWith(this._prefix))try{let o=localStorage.getItem(r);if(!o)return!1;let s=JSON.parse(o);if(s&&s.expiresIn<Date.now())return!0}catch(o){return!1}return!1}).forEach(r=>localStorage.removeItem(r))}doFlush(){if(Kr())try{for(let[t,e]of this._queue)localStorage.setItem(t,JSON.stringify(e))}catch(t){B.warn(t)}}getItem(t){if(!Kr())return null;try{let e=localStorage.getItem(this.getRealKey(t));if(!e)return null;let r=JSON.parse(e);return r&&r.expiresIn>=Date.now()?r.value:null}catch(e){B.warn(e)}}setItem(t,e){if(Kr())try{let r={expiresIn:Date.now()+ac,value:e};this._queue.set(this.getRealKey(t),r)}catch(r){B.warn(r)}}deleteItem(t){if(!Kr())return!1;try{return t=this.getRealKey(t),this._queue.delete(t),localStorage.removeItem(t),!0}catch(e){return B.warn(e),!1}}clear(){if(Kr())try{localStorage.clear()}catch(t){B.warn(t)}}},ws=new al;var Vi={};qr(Vi,{HTTPS_API:()=>u_,IS_GET_CAPABILITIES_SUPPORTED:()=>Dl,IS_GET_SETTINGS_SUPPORTED:()=>xs,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>T_,IS_INSERTABLE_STREAM_SUPPORTED:()=>oa,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>A_,IS_RTC_RTP_SENDER_SUPPORTED:()=>ia,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>Oh,IS_SEI_SUPPORTED:()=>sa,IS_SPC_SUPPORTED:()=>f_,basis:()=>S_,capabilityCheck:()=>Ml,checkSystemRequirementsInternal:()=>Kc,decodeSupportStatus:()=>Rh,encodeSupportStatus:()=>vl,getBrowserInfo:()=>Yc,getDisplayResolution:()=>vh,isAddTransceiverSupported:()=>Mh,isBrowserSupported:()=>Cl,isGetReceiversSupported:()=>p_,isGetSendersSupported:()=>wh,isGetTransceiversSupported:()=>h_,isGetUserMediaSupported:()=>Ch,isMediaDevicesSupported:()=>Zc,isMediaSessionSupported:()=>xh,isMediaStreamTrackProcessorSupported:()=>Nl,isReplaceTrackSupported:()=>E_,isRequestVideoFrameCallbackSupported:()=>Do,isSIMDSupported:()=>I_,isScreenCaptureApiAvailable:()=>ta,isSelectedCandidatePair:()=>l_,isSetParametersSupported:()=>__,isSmallStreamAPISupported:()=>Dh,isSmallStreamSupported:()=>ra,isStopTransceiverSupported:()=>g_,isTRTCSupported:()=>c_,isUnifiedPlanDefault:()=>m_,isUsedInHttpProtocol:()=>si,isWebAudioSupported:()=>Nh,isWebCodecSupported:()=>Ph,isWebCodecsSupported:()=>bh,isWebRTCSupported:()=>wl,isWebTransportSupported:()=>kh});var Tl={};qr(Tl,{AUDIO_LEVEL_SCALE:()=>ri,AudioCodecPipelineType:()=>Jc,AudioDecoderDowngradeState:()=>ul,AudioPlayerMode:()=>hl,AudioType:()=>ml,BASIC_TYPE:()=>Ro,BannedReason:()=>fl,CONNECTION_CLOSED_REASON:()=>nh,ClientEvent:()=>cl,CodecType:()=>ph,ConnectionEvent:()=>sh,ConnectionState:()=>Hc,DECODE_FAILED_ERROR_CODE:()=>_l,FacingMode:()=>Gc,LeaveReason:()=>gl,LocalTrackEvent:()=>Fc,MULTI_VIDEO_DATA_TYPE:()=>ti,MediaType:()=>vt,MediaTypeLabel:()=>zE,MonitorEventId:()=>Zn,MutedFlag:()=>ch,NetworkQualityValue:()=>lh,PlayerState:()=>Ms,ReceiveMode:()=>mh,RemoteStreamType:()=>Vr,RemoteTrackEvent:()=>Os,RoomEvent:()=>Ao,SceneNumber:()=>dl,StreamEvent:()=>ah,StreamType:()=>uh,SubscribeMediaType:()=>Yn,TIMER_TYPE:()=>vo,TRACK_ACTION:()=>dh,TRACK_KIND:()=>ll,TrackEvent:()=>ei,UserRole:()=>jt,UserRoleNumber:()=>bo,VideoCodec:()=>El,VideoCodecPipelineType:()=>qc,VideoContentHint:()=>Kn,VideoDecoderDowngradeState:()=>Wc,VideoPlayerMode:()=>jc,VideoType:()=>pl});var sh=(x=>(x.TRACK_ADDED="track-added",x.TRACK_UPDATED="track-updated",x.TRACK_SUBSCRIBED="track-subscribed",x.STREAM_ADDED="stream-added",x.STREAM_REMOVED="stream-removed",x.STREAM_UPDATED="stream-updated",x.STREAM_PUBLISHED="stream-published",x.STREAM_SUBSCRIBED="stream-subscribed",x.STREAM_UNSUBSCRIBED="stream-unsubscribed",x.STATE_CHANGED="state-changed",x.ERROR="error",x.CONNECTION_STATE_CHANGED="connection-state-changed",x.FIREWALL_RESTRICTION="firewall-restriction",x.SEI_MESSAGE="sei-message",x.CLOSED="closed",x))(sh||{}),nh=(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))(nh||{}),cl=(P=>(P.STREAM_ADDED="stream-added",P.STREAM_REMOVED="stream-removed",P.STREAM_UPDATED="stream-updated",P.STREAM_SUBSCRIBED="stream-subscribed",P.CONNECTION_STATE_CHANGED="connection-state-changed",P.PEER_JOIN="peer-join",P.PEER_LEAVE="peer-leave",P.MUTE_AUDIO="mute-audio",P.MUTE_VIDEO="mute-video",P.UNMUTE_AUDIO="unmute-audio",P.UNMUTE_VIDEO="unmute-video",P.CLIENT_BANNED="client-banned",P.NETWORK_QUALITY="network-quality",P.AUDIO_VOLUME="audio-volume",P.SEI_MESSAGE="sei-message",P.ERROR="error",P))(cl||{}),ah=(s=>(s.PLAYER_STATE_CHANGED="player-state-changed",s.SCREEN_SHARING_STOPPED="screen-sharing-stopped",s.CONNECTION_STATE_CHANGED="connection-state-changed",s.DEVICE_AUTO_RECOVERED="device-auto-recovered",s.ERROR="error",s))(ah||{}),Fc=(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))(Fc||{}),Ms=(r=>(r.PAUSED="PAUSED",r.PLAYING="PLAYING",r.STOPPED="STOPPED",r))(Ms||{}),Ao=(Q=>(Q.PEER_JOIN="peer-join",Q.PEER_LEAVE="peer-leave",Q.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",Q.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",Q.BANNED="banned",Q.NETWORK_QUALITY="network-quality",Q.AUDIO_VOLUME="audio-volume",Q.SEI_MESSAGE="sei-message",Q.ERROR="error",Q.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",Q.REMOTE_PUBLISHED="remote-published",Q.REMOTE_UNPUBLISHED="remote-unpublished",Q.FIREWALL_RESTRICTION="firewall-restriction",Q.HEARTBEAT_REPORT="heartbeat-report",Q.CUSTOM_MESSAGE="custom-message",Q.LAYER_DATA="layerData",Q.FIRST_VIDEO_FRAME="first-video-frame",Q.DUMP="dump",Q))(Ao||{}),ei=(d=>(d.PLAYER_STATE_CHANGED="player-state-changed",d.MUTE="mute",d.UNMUTE="unmute",d.ERROR="error",d.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",d.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",d.FIRST_VIDEO_FRAME="first-video-frame",d))(ei||{}),Os=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(Os||{}),ch=(d=>(d[d.VIDEO=1]="VIDEO",d[d.SMALL=2]="SMALL",d[d.AUX=4]="AUX",d[d.AUDIO=8]="AUDIO",d[d.VIDEO_MUTE=16]="VIDEO_MUTE",d[d.AUX_MUTE=32]="AUX_MUTE",d[d.AUDIO_MUTE=64]="AUDIO_MUTE",d))(ch||{}),dl=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(dl||{}),bo=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(bo||{}),jt=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(jt||{}),Hc=(s=>(s.CONNECTED="CONNECTED",s.DISCONNECTED="DISCONNECTED",s.CONNECTING="CONNECTING",s.RECONNECTED="RECONNECTED",s.RECONNECTING="RECONNECTING",s))(Hc||{}),ul=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(ul||{}),Wc=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(Wc||{}),ll=(r=>(r.AUDIO="audio",r.VIDEO="video",r.AUXILIARY="auxVideo",r))(ll||{}),dh=(e=>(e.ADD="add",e.REMOVE="remove",e))(dh||{}),vt=(s=>(s[s.NULL=0]="NULL",s[s.AUDIO=1]="AUDIO",s[s.AUX_VIDEO=2]="AUX_VIDEO",s[s.BIG_VIDEO=4]="BIG_VIDEO",s[s.SMALL_VIDEO=8]="SMALL_VIDEO",s))(vt||{}),zE={1:"audio",2:"auxVideo",4:"video"},ml=(t=>(t[t.opus=111]="opus",t))(ml||{}),pl=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(pl||{}),uh=(e=>(e.Big="big",e.Small="small",e))(uh||{}),Vr=(e=>(e.Main="main",e.Aux="auxiliary",e))(Vr||{}),ti=(s=>(s[s.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",s[s.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",s[s.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",s[s.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",s[s.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",s))(ti||{}),Zn=(G=>(G[G.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",G[G.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",G[G.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",G[G.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",G[G.MUTE_AUDIO=32772]="MUTE_AUDIO",G[G.MUTE_VIDEO=32773]="MUTE_VIDEO",G[G.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",G[G.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",G[G.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",G[G.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",G[G.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",G[G.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",G[G.SWITCH_CAMERA=32780]="SWITCH_CAMERA",G[G.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",G[G.REPLACE_VIDEO=32782]="REPLACE_VIDEO",G[G.REPLACE_AUDIO=32783]="REPLACE_AUDIO",G[G.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",G[G.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",G[G.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",G[G.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",G[G.JOIN=32788]="JOIN",G[G.LEAVE=32789]="LEAVE",G[G.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",G[G.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",G[G.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",G[G.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",G[G.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",G[G.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",G[G.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",G[G.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",G[G.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",G[G.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",G[G.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",G[G.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",G[G.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",G[G.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",G[G.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",G[G.PUBLISH_AUX=32805]="PUBLISH_AUX",G[G.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",G[G.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",G[G.VIDEO_ENCODER=4004]="VIDEO_ENCODER",G[G.VIDEO_DECODER=4005]="VIDEO_DECODER",G))(Zn||{}),lh=(d=>(d[d.UNKNOWN=0]="UNKNOWN",d[d.EXCELLENT=1]="EXCELLENT",d[d.GOOD=2]="GOOD",d[d.POOR=3]="POOR",d[d.BAD=4]="BAD",d[d.VERY_BAD=5]="VERY_BAD",d[d.DISCONNECTED=6]="DISCONNECTED",d))(lh||{}),mh=(o=>(o[o.MANUAL=0]="MANUAL",o[o.AUTO_AUDIO=1]="AUTO_AUDIO",o[o.AUTO_VIDEO=2]="AUTO_VIDEO",o[o.AUTO_ALL=3]="AUTO_ALL",o))(mh||{}),Gc=(e=>(e.user="user",e.environment="environment",e))(Gc||{}),jc=(r=>(r[r.ELEMENT=0]="ELEMENT",r[r.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",r[r.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",r))(jc||{}),hl=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(hl||{}),fl=(o=>(o.BANNED="banned",o.KICK="kick",o.USER_TIME_OUT="user_time_out",o.ROOM_DISBAND="room_disband",o))(fl||{}),gl=(m=>(m[m.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",m[m.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",m[m.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",m[m.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",m[m.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",m[m.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",m[m.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",m[m.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",m[m.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",m))(gl||{}),ri=1e8,Yn=class{constructor(){u(this,"mediaType",0)}set audio(t){t?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(t){t?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(t){t?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(t){t?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},Ro=(s=>(s.String="string",s.Number="number",s.Boolean="boolean",s.Array="array",s.Object="object",s))(Ro||{}),El=(r=>(r.H264="h264",r.H265="h265",r.VP8="vp8",r))(El||{}),qc=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.DUMP=1]="DUMP",o[o.SEI=2]="SEI",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(qc||{}),Jc=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",o[o.DUMP=2]="DUMP",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(Jc||{}),ph=(r=>(r.WebRTC="webrtc",r.WebCodecs="webcodecs",r.WebAssembly="webassembly",r))(ph||{}),_l=(_=>(_[_.SUCCESS=0]="SUCCESS",_[_.FAILED=1]="FAILED",_[_.WEBCODEC_INIT=2]="WEBCODEC_INIT",_[_.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",_[_.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",_[_.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",_[_.WASM_INIT=6]="WASM_INIT",_[_.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",_[_.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",_[_.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",_[_.TEST=10]="TEST",_))(_l||{}),Kn=(o=>(o.NONE="",o.DETAIL="detail",o.MOTION="motion",o.TEXT="text",o))(Kn||{}),vo=(s=>(s.INTERVAL="interval",s.TIMEOUT="timeout",s.RAF="raf",s.RIC="ric",s.INTERVAL_IN_WORKER="intervalInWorker",s))(vo||{});var nt={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"},qt={AVOID_REPEATED_CALL(i){return`previous ${i.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${mt(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${mt(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_MIN({key:i,rule:t,fnName:e,value:r}){return`the min value of ${i||t.name} is ${t.min}, received: ${r}.`},INVALID_PARAMETER_MAX({key:i,rule:t,fnName:e,value:r}){return`the max value of ${i||t.name} is ${t.max}, received: ${r}.`},API_CALL_TIMEOUT(i){return`${i.commandDesc||i.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(i){return`SignalChannel setup failure: (errorCode: ${i.errorCode}, errorMsg: ${i.errorMsg} }).`},ERROR_MESSAGE(i){let t=`${i.type} failed`;return i.message&&(t=`${t}: ${i.message}.`),t},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(i){return`exchange sdp failed ${i.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(i){return`'${i}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(i){return`'${i}' 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:i,code:t}){return`Failed to join room - ${i} code: ${t}`},REJOIN_ROOM_FAILED(i){return`reJoin room: ${i.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(i){return`duplicate ${i} stream publishing, please unpublish your prev ${i} 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:i,userId:t,streamType:e}){return`failed to subscribe ${t} ${e} stream, reason: ${i}.`},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(i){return`switchRole failed, errCode: ${i.code} errMsg: ${i.message}.`},CLIENT_BANNED(i){return`client was banned because of ${i.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(i){return`startPublishCDNStream failed, errMsg: ${i.message}.`},STOP_PUBLISH_CDN_FAILED(i){return`stopPublishCDNStream failed, errMsg: ${i.message}.`},INVALID_STREAM_ID(i){return`'${i}' 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(i){return`cannot replace ${i.kind} track because stream has not ${i.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(i){return`startMixTranscode failed, errMsg: ${i.message}.`},STOP_MIX_TRANSCODE_FAILED(i){return`stopMixTranscode failed, errMsg: ${i.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:i,rule:t,fnName:e,value:r}){return`'${i||t.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(i){return`'${i}' 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:i,fnName:t})=>`'${i}' is not found in the document object when calling ${t}().`,INVALID_ELEMENT_ID_TYPE:({key:i,fnName:t,type:e})=>`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`,PLAY_FAILED:i=>`${i.media} play failed, browser exception: ${i.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(i){return`${i}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(i){return`${i.signalResponse} failed, response code is ${i.code} , errMsg: ${i.message}.`},CATCH_HANDLER_ERROR({name:i,event:t}){return`an error was caught in ${i}.on('${t}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:i}){return`experimental api ${i} does not exist.`},REPEAT_JOIN:i=>"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:i}){return`failed to call ${i}() because client was destroyed.`},SEI_NOT_SUPPORT:i=>`not support to sendSEIMessage${i===!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:i,name:t,timesInSecond:e,maxSizeInSecond:r})=>`api ${t} call ${i?"size":"times"} is over ${i?`${r} bytes`:e} in a second.`,CONNECTION_ABORTED(i){return`connection aborted due to: ${i}`},API_CALL_ABORTED(i){let t;return i.message.includes("REMOTE_STREAM_NOT_EXIST")?t=`Subscribe ${i.userId} ${i.streamType} stream aborted, reason: remote user ${i.userId} unpublished stream.`:t=`API aborted, reason: ${i.message}`,t},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:i=>`'streamType' is required when 'userId' is not '*', calling ${i}()`};var hh=(i,t)=>t?`${Mr}/${i}/${t}`:`${Mr}/${i}/index.html`;var XE=()=>{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 i=localStorage==null?void 0:localStorage.getItem(xu);if(i){i=JSON.parse(i);let t=document.createElement("script");t.type="text/javascript",t.text=i.message,document.body.appendChild(t);let e=window.TRTC_ERROR_INFO,r=window.TRTC_ERROR_LINK;return document.body.removeChild(t),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:r}}return{}};function at(i){let{key:t,data:e,link:r,addDocLink:o=!0}=i,s="",n="",d="";ze(qt[t])?s=qt[t](e):we(qt[t])&&(s=qt[t]);let{TRTC_ERROR_INFO:p,TRTC_ERROR_LINK:m}=XE();r?d=`${r.className}.html#${r.fnName}`:m&&m[t]&&(ze(m[t])?d=m[t](e):we(m[t])&&(d=m[t]));let E=s;return hr()&&(p&&p[t]&&(ze(p[t])?n=p[t](e):we(p[t])&&(n=p[t])),n&&(o?E=`${n}
|
|
5
|
+
\u8BF7\u67E5\u770B\u6587\u6863: ${hh("zh-cn",d)}
|
|
8
6
|
|
|
9
|
-
`:
|
|
7
|
+
`:E=`${n}
|
|
10
8
|
|
|
11
|
-
`,
|
|
12
|
-
Refer to: ${
|
|
13
|
-
`),m}var fd=Pe(hh(),1);var $f=1,Gf=0,Gn=class{constructor(i=!0){c(this,"countMap",new Map);c(this,"distributionMap",new Map);c(this,"version");c(this,"log",C.createLogger({id:"kv"}));i&&(E.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===h.AUDIO?501700:511700,cost:t})}),E.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===h.AUDIO?501700:511700,error:t})}))}getReportData(){let i={msg_sdk_basic_info:{uint32_sdk_version:En(this.version||Re),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(Y(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:$f,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&&(Y(e)?t=e:(!g(e.extraCode)||!g(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:i,value:Gf,useUV:!1}),this.addEnum({key:i,value:t,useUV:!1})}},Wn=(j=>(j[j.enterRoom=500700]="enterRoom",j[j.exitRoom=500701]="exitRoom",j[j.switchRole=500702]="switchRole",j[j.destroy=500703]="destroy",j[j.startLocalAudio=500704]="startLocalAudio",j[j.updateLocalAudio=500705]="updateLocalAudio",j[j.stopLocalAudio=500706]="stopLocalAudio",j[j.startLocalVideo=500707]="startLocalVideo",j[j.updateLocalVideo=500708]="updateLocalVideo",j[j.stopLocalVideo=500709]="stopLocalVideo",j[j.startScreenShare=500710]="startScreenShare",j[j.updateScreenShare=500711]="updateScreenShare",j[j.stopScreenShare=500712]="stopScreenShare",j[j.startRemoteVideo=500713]="startRemoteVideo",j[j.updateRemoteVideo=500714]="updateRemoteVideo",j[j.stopRemoteVideo=500715]="stopRemoteVideo",j[j.muteRemoteAudio=500716]="muteRemoteAudio",j[j.setRemoteAudioVolume=500717]="setRemoteAudioVolume",j[j.use=500718]="use",j[j.sendSEIMessage=5e5]="sendSEIMessage",j[j.sendCustomMessage=500001]="sendCustomMessage",j))(Wn||{}),hd=(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))(hd||{}),md=(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))(md||{}),pd=(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))(pd||{});var Wf=new Gn(!0),gr=new Gn(!1);var N=Wf;var ie={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},Jf=new Map([[ae,["Firefox",In]],[Zr,["Edg",Cn]],[os,["Chrome",Un]],[Ve,["Safari",Ji]],[vt,["TBS",bn]],[to,["XWEB",Nn]],[es&&ur,["WeChat",vn]],[io,["QQ(Win)",Dn]],[is,["QQ(Mobile)",Yr]],[ts,["QQ(Mobile X5)",Yr]],[ro,["QQ(Mac)",On]],[so,["QQ(iPad)",kn]],[no,["MI",Mn]],[ao,["HW",Ln]],[co,["Samsung",Pn]],[rs,["OPPO",wn]],[ss,["VIVO",xn]],[Kr,["EDGE",An]],[Zs,["SogouMobile",Rn]],[eo,["Sogou",yn]]]);function qf(){let s=Jf.get(!0),i=s?s[0]:"unknown",e=s?s[1]:"unknown";return{browserName:i,browserVersion:e}}var gd=function(){return!(Hc||Kr||Zr&&Bc<80||ae&&Vc<56)},ph=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder","MediaStreamTrackGenerator"].every(i=>i in window)},qn=function(){if(!navigator.mediaDevices)return Ri()||C.error(Oe.NOT_SUPPORTED_MEDIA),!1;let s=["getUserMedia","enumerateDevices"];return s.filter(i=>i in navigator.mediaDevices).length===s.length},mh=!1;function Ri(){return location.protocol==="http:"&&!Ot?(mh||C.error(U({key:x.NOT_SUPPORTED_HTTP})),mh=!0,!0):!1}var Td=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},_d=function(){return f(this,null,function*(){if(ie.detail.isH264EncodeSupported&&ie.detail.isVp8EncodeSupported)return{isH264EncodeSupported:ie.detail.isH264EncodeSupported,isVp8EncodeSupported:ie.detail.isVp8EncodeSupported};let s,i=!1,e=!1;try{let t=new RTCPeerConnection,r=document.createElement(h.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(),ie.detail.isH264EncodeSupported=i,ie.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:ie.detail.isH264EncodeSupported,isVp8EncodeSupported:ie.detail.isVp8EncodeSupported}}catch(t){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},jn=function(){return f(this,null,function*(){if(ie.detail.isH264DecodeSupported&&ie.detail.isVp8DecodeSupported)return{isH264DecodeSupported:ie.detail.isH264DecodeSupported,isVp8DecodeSupported:ie.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}}})},Xn=Sn(()=>f(void 0,null,function*(){if(ie.result&&ie.detail.isH264EncodeSupported&&ie.detail.isVp8EncodeSupported&&ie.detail.isH264DecodeSupported&&ie.detail.isVp8DecodeSupported)return ie;let s=Date.now(),i=gd(),e=Ad(),t=ph(),r=qn(),{isH264EncodeSupported:o,isVp8EncodeSupported:n}=yield _d(),{isH264DecodeSupported:a,isVp8DecodeSupported:d}=yield jn();if(!o||!n){let l=yield _d();C.warn(`detect encode again h264:${o} vp8:${n} result: ${JSON.stringify(l)}`),o=l.isH264EncodeSupported,n=l.isVp8EncodeSupported}if(o&&a&&(rs||ss||Jc)&&!vt&&hr()<79){let{encode:l,decode:m}=yield Xf();o=l,a=m}return ie.result=i&&e&&r&&(o||n)&&(a||d),ie.detail.isBrowserSupported=i,ie.detail.isWebRTCSupported=e,ie.detail.isWebCodecsSupported=t,ie.detail.isMediaDevicesSupported=r,ie.detail.isScreenShareSupported=To(),ie.detail.isSmallStreamSupported=Eo(),ie.detail.isH264EncodeSupported=o,ie.detail.isVp8EncodeSupported=n,ie.detail.isH264DecodeSupported=a,ie.detail.isVp8DecodeSupported=d,ie.result||C.error(`${navigator.userAgent} ${gn(ie.detail,!1)}`),e_(),N.addNumber({key:523800,value:Date.now()-s}),ie})),jf=function(){return ie.result},To=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},Jn=null;function Xf(){return f(this,null,function*(){return Jn||(Jn=new Promise(s=>f(this,null,function*(){let i={encode:!1,decode:!1},e=()=>{};try{C.warn("detectH264Supported start");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(),m.close(),d.getTracks().forEach(R=>R.stop())},a=setTimeout(()=>{e(),s(i)},2*1e3);let d=t.captureStream(),l=new RTCPeerConnection({}),m=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});l.addEventListener("icecandidate",R=>m.addIceCandidate(R.candidate)),m.addEventListener("icecandidate",R=>l.addIceCandidate(R.candidate)),l.addTrack(d.getVideoTracks()[0],d);let u=yield l.createOffer();yield l.setLocalDescription(u),yield m.setRemoteDescription(u);let p=yield m.createAnswer(),_=fd.default.parse(p.sdp),I=_.media[0].rtp.findIndex(R=>R.codec==="H264");_.media[0].rtp=[_.media[0].rtp[I]],_.media[0].fmtp=_.media[0].fmtp.filter(R=>R.payload===_.media[0].rtp[0].payload),_.media[0].rtcpFb&&(_.media[0].rtcpFb=_.media[0].rtcpFb.filter(R=>R.payload===_.media[0].rtp[0].payload)),p.sdp=fd.default.write(_),yield m.setLocalDescription(p),yield l.setRemoteDescription(p),n=setInterval(()=>f(this,null,function*(){i.encode&&i.decode&&(e(),s(i));let R=yield l.getSenders()[0].getStats(),D=yield m.getReceivers()[0].getStats();i.encode||R.forEach(G=>{G.type==="outbound-rtp"&&G.mediaType===h.VIDEO&&G.bytesSent>0&&(i.encode=!0)}),i.decode||D.forEach(G=>{G.type==="inbound-rtp"&&G.mediaType===h.VIDEO&&G.bytesReceived>0&&(i.decode=!0)})}),100)}catch(t){e(),C.warn(t),s(i)}})).then(s=>((!s.encode||!s.decode)&&C.warn(`detectH264Supported encode: ${s.encode} decode: ${s.decode} ${bt}`),s)),Jn)})}var Qf=(s,i,e)=>{location.protocol==="http:"&&!Ot&&(s[i]=()=>{throw new b({code:S.INVALID_OPERATION,message:Oe.NOT_SUPPORTED_HTTP})})},Qi=function(s){return s.type==="candidate-pair"&&s.nominated&&(s.state==="in-progress"||s.state==="succeeded")?!(he(s.selected)&&!s.selected):!1};function fh(){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 _h(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function gh(){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 Th(){return"captureStream"in HTMLCanvasElement.prototype}function Eo(){return es||ve||Dt&&Dt<63?!1:!!(gd()&&Th())}var zf=function(){if(g(window.RTCRtpTransceiver)||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let s=null,i=!1;try{s=new RTCPeerConnection({sdpSemantics:$i}),s.addTransceiver(h.AUDIO),i=!0}catch(e){}return s==null||s.close(),i};function Tr(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function zi(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function Xt(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function _t(){return at===11?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var ls=!(!_t()||pt&&Dt<86);function Yf(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var So="RTCRtpSender"in window;function Ed(){return So&&"replaceTrack"in window.RTCRtpSender.prototype}function Io(){return So&&"setParameters"in window.RTCRtpSender.prototype&&zi()}var Sd="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,Qt=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Id=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,yi=So&&"createEncodedStreams"in window.RTCRtpSender.prototype&&hr()>=86,Qn="RTCRtpScriptTransform"in window,Ao=So&&(yi||Qn),Ad=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(i=>i in window).length>0};function Eh(){let s={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return g(window.AudioDecoder)||(s.AudioDecoder=!0),g(window.AudioEncoder)||(s.AudioEncoder=!0),g(window.VideoDecoder)||(s.VideoDecoder=!0),g(window.VideoEncoder)||(s.VideoEncoder=!0),g(window.ImageDecoder)||(s.ImageDecoder=!0),s}function Sh(){return"mediaSession"in navigator&&!g(navigator.mediaSession.setActionHandler)}function Ih(){return!g(window.WebTransport)}function Kf(){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 Zf(){let s={browser:`${qt.name}/${qt.version}`,os:Vn(),displayResolution:fh(),isScreenShareSupported:To(),isWebRTCSupported:Ad(),isGetUserMediaSupported:_h(),isWebAudioSupported:gh(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Eh(),isMediaSessionSupported:Sh(),isWebTransportSupported:Ih()};return navigator.userAgent.includes("miniProgram")&&(s.browser=`mini/${s.browser}`),s}var Ah="checkResult";function e_(){as.setItem(Ah,{ua:navigator.userAgent,checkResult:ie})}function Cd(){Ri();let s=as.getItem(Ah);s&&s.ua===navigator.userAgent&&(ie=s.checkResult),Xn()}function Er(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var zn="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;var Rh=Pe(Je(),1);var Ch=Symbol("instance"),uS=Symbol("abortCtrl"),Yn=Symbol("cacheResult"),Co=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,bo.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},Ro=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function t_(s){return typeof s=="object"&&s&&"then"in s}var yo=new Map;function le(s,i,e={}){return(t,r,o)=>{let n=e.action||r;if(!e.context){let d=yo.get(t)||[];yo.has(t)||yo.set(t,d),d.push({from:s,to:i,action:n})}let a=o.value;o.value=function(...d){let l=this;if(e.context&&(l=Q.get(typeof e.context=="function"?e.context.call(this,...d):e.context)),l.state===i)return e.sync?l[Yn]:Promise.resolve(l[Yn]);l.state instanceof Co&&l.state.action==e.abortAction&&l.state.abort(l);let m=null;Array.isArray(s)?s.length==0?l.state instanceof Co&&l.state.abort(l):(typeof l.state!="string"||!s.includes(l.state))&&(m=new Ro(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${s.join("|")}`)):s!==l.state&&(m=new Ro(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${s}`));let u=D=>{if(e.fail&&e.fail.call(this,D),e.sync){if(e.ignoreError)return D;throw D}else return e.ignoreError?Promise.resolve(D):Promise.reject(D)};if(m)return u(m);let p=l.state,_=new Co(p,i,n);bo.call(l,_);let I=D=>{var G;return l[Yn]=D,_.aborted||(bo.call(l,i),(G=e.success)===null||G===void 0||G.call(this,l[Yn])),D},R=D=>(bo.call(l,p,D),u(D));try{let D=a.apply(this,d);return t_(D)?D.then(I).catch(R):e.sync?I(D):Promise.resolve(I(D))}catch(D){return R(new Ro(l._state,`${l.name} ${n} from ${s} to ${i} failed: ${D}`,D instanceof Error?D:new Error(String(D))))}}}}var i_=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 bo(s,i){let e=this._state;this._state=s;let t=s.toString();s&&this.emit(t,e),this.emit(Q.STATECHANGED,s,e,i),this.updateDevTools({value:s,old:e,err:i instanceof Error?i.message:String(i)})}var Q=class s extends Rh.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[Ch];r?this.name=r.name+"-"+r.count++:t[Ch]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=yo.get(i)||[],t=new Set,r=[],o=[],n=new Set,a=Object.getPrototypeOf(i);yo.has(a)&&(a.stateDiagram.forEach(l=>t.add(l)),a.allStates.forEach(l=>n.add(l))),e.forEach(({from:l,to:m,action:u})=>{typeof l=="string"?r.push({from:l,to:m,action:u}):l.length?l.forEach(p=>{r.push({from:p,to:m,action:u})}):o.push({to:m,action:u})}),r.forEach(({from:l,to:m,action:u})=>{n.add(l),n.add(m),n.add(u+"ing"),t.add(`${l} --> ${u}ing : ${u}`),t.add(`${u}ing --> ${m} : ${u} \u{1F7E2}`),t.add(`${u}ing --> ${l} : ${u} \u{1F534}`)}),o.forEach(({to:l,action:m})=>{t.add(`${m}ing --> ${l} : ${m} \u{1F7E2}`),n.forEach(u=>{u!==l&&t.add(`${u} --> ${m}ing : ${m}`)})});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={}){i_(s.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){bo.call(this,i)}};Q.STATECHANGED="stateChanged";Q.UPDATEAFSM="updateAFSM";Q.INIT="[*]";Q.ON="on";Q.OFF="off";Q.instances=new Map;Q.instances2=new WeakMap;var yd=typeof window!="undefined",yh=yd&&window.requestIdleCallback||function(s){let i=Date.now();return setTimeout(()=>{s({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-i))}})},1e3)},r_=yd&&window.cancelIdleCallback||function(s){clearTimeout(s)},bh=yd&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),Ce=class Ce{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=M(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,Ce.isBreakLoop(i)};return i.intervalID=setInterval(e,i.delay)}static intervalInWorker(i){Ce.sharedWorker||(Ce.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
|
|
9
|
+
`,E+=s)),o&&(E+=`
|
|
10
|
+
Refer to: ${hh("en",d)}
|
|
11
|
+
`),E}var Rl=Di(yh(),1);var o_=1,s_=0,zc=class{constructor(t=!0){u(this,"countMap",new Map);u(this,"distributionMap",new Map);u(this,"version");u(this,"log",B.createLogger({id:"kv"}));t&&(H.on("102",({track:e,cost:r})=>{this.addSuccessEvent({key:e.kind===D.AUDIO?501700:511700,cost:r})}),H.on("103",({track:e,error:r})=>{this.addFailedEvent({key:e.kind===D.AUDIO?501700:511700,error:r})}))}getReportData(){let t={msg_sdk_basic_info:{uint32_sdk_version:Ic(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,r])=>({uint32_key:e,uint32_count:r})),stats_distribution:[...this.distributionMap.entries()].map(([e,r])=>({uint32_key:e,distribution_items:[...r.entries()].map(([o,s])=>({uint32_item_key:o,uint32_item_value:s}))}))};return this.countMap.clear(),this.distributionMap.clear(),t}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(t){let e=+String(t).slice(-3);return e>=700&&e<799}isErrorCodeKey(t){let e=+String(t).slice(-3);return e>=600&&e<699}isCountKey(t){let e=+String(t).slice(-3);return e>=0&&e<599}isNumberKey(t){let e=+String(t).slice(-3);return e>=800&&e<899}addCount({key:t,useUV:e=!1}){if(!this.isCountKey(t)){this.log.debug(`${t} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(t)||this.countMap.set(t,(this.countMap.get(t)||0)+1)}addEnum({key:t,value:e,useUV:r=!0}){var s;if(!this.isEnumKey(t))return this.log.debug(`${t} is not enum key, last 3 number should be 700~799`);if(r&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);let o=((s=this.distributionMap)==null?void 0:s.get(t))||new Map;o.set(e,(o.get(e)||0)+1),this.distributionMap.set(t,o)}addNumber({key:t,value:e,split:r=100,useUV:o=!1}){var d;if(!this.isNumberKey(t))return this.log.debug(`${t} is not number key, last 3 number should be 800~899`);if(o&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);let s=((d=this.distributionMap)==null?void 0:d.get(t))||new Map,n=0;if(je(r))n=Math.floor(e/r);else for(let p=r.length-1;p>0;p--)if(e>r[p]){n=p;break}s.set(n,(s.get(n)||0)+1),this.distributionMap.set(t,s)}addSuccessEvent({key:t,cost:e,timeKey:r,split:o}){if(t&&(this.addEnum({key:t,value:o_,useUV:!1}),e)){let s=+String(t).slice(-3);s<800&&s>=700?this.addNumber({key:r||t+100,value:e,split:o}):r||this.log.debug(`time stat ignored, ${t}`)}}addFailedEvent({key:t,error:e}){if(!t)return;let r=te.UNKNOWN;e&&(je(e)?r=e:(!$(e.extraCode)||!$(e.code))&&(r=e.extraCode||e.code)),this.addEnum({key:t,value:s_,useUV:!1}),this.addEnum({key:t,value:r,useUV:!1})}},Xc=(me=>(me[me.enterRoom=500700]="enterRoom",me[me.exitRoom=500701]="exitRoom",me[me.switchRole=500702]="switchRole",me[me.destroy=500703]="destroy",me[me.startLocalAudio=500704]="startLocalAudio",me[me.updateLocalAudio=500705]="updateLocalAudio",me[me.stopLocalAudio=500706]="stopLocalAudio",me[me.startLocalVideo=500707]="startLocalVideo",me[me.updateLocalVideo=500708]="updateLocalVideo",me[me.stopLocalVideo=500709]="stopLocalVideo",me[me.startScreenShare=500710]="startScreenShare",me[me.updateScreenShare=500711]="updateScreenShare",me[me.stopScreenShare=500712]="stopScreenShare",me[me.startRemoteVideo=500713]="startRemoteVideo",me[me.updateRemoteVideo=500714]="updateRemoteVideo",me[me.stopRemoteVideo=500715]="stopRemoteVideo",me[me.muteRemoteAudio=500716]="muteRemoteAudio",me[me.setRemoteAudioVolume=500717]="setRemoteAudioVolume",me[me.use=500718]="use",me[me.sendSEIMessage=5e5]="sendSEIMessage",me[me.sendCustomMessage=500001]="sendCustomMessage",me))(Xc||{}),yl=(m=>(m[m.AudioMixer=550700]="AudioMixer",m[m.AIDenoiser=551700]="AIDenoiser",m[m.VirtualBackground=570700]="VirtualBackground",m[m.Beauty=571700]="Beauty",m[m.Watermark=572700]="Watermark",m[m.BasicBeauty=574700]="BasicBeauty",m[m.CDNStreaming=590700]="CDNStreaming",m[m.DeviceDetector=591700]="DeviceDetector",m[m.Debug=592700]="Debug",m))(yl||{}),Al=(m=>(m[m.AudioMixer=550701]="AudioMixer",m[m.AIDenoiser=551701]="AIDenoiser",m[m.VirtualBackground=570701]="VirtualBackground",m[m.Beauty=571701]="Beauty",m[m.Watermark=572701]="Watermark",m[m.BasicBeauty=574701]="BasicBeauty",m[m.CDNStreaming=590701]="CDNStreaming",m[m.DeviceDetector=591701]="DeviceDetector",m[m.Debug=592701]="Debug",m))(Al||{}),bl=(m=>(m[m.AudioMixer=550702]="AudioMixer",m[m.AIDenoiser=551702]="AIDenoiser",m[m.VirtualBackground=570702]="VirtualBackground",m[m.Beauty=571702]="Beauty",m[m.Watermark=572702]="Watermark",m[m.BasicBeauty=574702]="BasicBeauty",m[m.CDNStreaming=590702]="CDNStreaming",m[m.DeviceDetector=591702]="DeviceDetector",m[m.Debug=592702]="Debug",m))(bl||{});var n_=new zc(!0),No=new zc(!1);var Y=n_;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}},a_=new Map([[gr,["Firefox",yc]],[Ss,["Edg",bc]],[Cs,["Chrome",Vc]],[Mt,["Safari",ki]],[Er,["TBS",Cc]],[Un,["XWEB",Nc]],[ys&&_o,["WeChat",Dc]],[Vn,["QQ(Win)",wc]],[bs,["QQ(Mobile)",Ts]],[As,["QQ(Mobile X5)",Ts]],[Bn,["QQ(Mac)",Mc]],[$n,["QQ(iPad)",Oc]],[Hn,["MI",Pc]],[Wn,["HW",xc]],[Gn,["Samsung",kc]],[Rs,["OPPO",Lc]],[vs,["VIVO",Uc]],[Is,["EDGE",Ac]],[kn,["SogouMobile",Rc]],[Ln,["Sogou",vc]]]);function Yc(){let i=a_.get(!0),t=i?i[0]:"unknown",e=i?i[1]:"unknown";return{browserName:t,browserVersion:e}}var Cl=function(){return!(Qu||Is||Ss&&zu<80||gr&&Ju<56)},bh=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder","MediaStreamTrackGenerator"].every(t=>t in window)},Zc=function(){if(!navigator.mediaDevices)return si()||B.error(qt.NOT_SUPPORTED_MEDIA),!1;let i=["getUserMedia","enumerateDevices"];return i.filter(t=>t in navigator.mediaDevices).length===i.length},Ah=!1;function si(){return location.protocol==="http:"&&!Tr?(Ah||B.error(at({key:nt.NOT_SUPPORTED_HTTP})),Ah=!0,!0):!1}var Nl=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},vl=function(){return y(this,null,function*(){if(xe.detail.isH264EncodeSupported&&xe.detail.isVp8EncodeSupported)return{isH264EncodeSupported:xe.detail.isH264EncodeSupported,isVp8EncodeSupported:xe.detail.isVp8EncodeSupported};let i,t=!1,e=!1;try{let r=new RTCPeerConnection,o=document.createElement(D.CANVAS);o.getContext("2d");let s=o.captureStream(0);return r.addTrack(s.getVideoTracks()[0],s),i=yield r.createOffer(),i.sdp.toLowerCase().indexOf("h264")!==-1&&(t=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),r.close(),xe.detail.isH264EncodeSupported=t,xe.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:xe.detail.isH264EncodeSupported,isVp8EncodeSupported:xe.detail.isVp8EncodeSupported}}catch(r){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},Rh=function(){return y(this,null,function*(){if(xe.detail.isH264DecodeSupported&&xe.detail.isVp8DecodeSupported)return{isH264DecodeSupported:xe.detail.isH264DecodeSupported,isVp8DecodeSupported:xe.detail.isVp8DecodeSupported};let i,t=!1,e=!1;try{let r=new RTCPeerConnection;return i=yield r.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),i.sdp.toLowerCase().indexOf("h264")!==-1&&(t=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),r.close(),{isH264DecodeSupported:t,isVp8DecodeSupported:e}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}})},Kc=Sc(()=>y(void 0,null,function*(){if(xe.result&&xe.detail.isH264EncodeSupported&&xe.detail.isVp8EncodeSupported&&xe.detail.isH264DecodeSupported&&xe.detail.isVp8DecodeSupported)return xe;let i=Date.now(),t=Cl(),e=wl(),r=bh(),o=Zc(),{isH264EncodeSupported:s,isVp8EncodeSupported:n}=yield vl(),{isH264DecodeSupported:d,isVp8DecodeSupported:p}=yield Rh();if(!s||!n){let m=yield vl();B.warn(`detect encode again h264:${s} vp8:${n} result: ${JSON.stringify(m)}`),s=m.isH264EncodeSupported,n=m.isVp8EncodeSupported}if(s&&d&&(Rs||vs||el)&&!Er&&jn()<79){let{encode:m,decode:E}=yield d_();s=m,d=E}return xe.result=t&&e&&o&&(s||n)&&(d||p),xe.detail.isBrowserSupported=t,xe.detail.isWebRTCSupported=e,xe.detail.isWebCodecsSupported=r,xe.detail.isMediaDevicesSupported=o,xe.detail.isScreenShareSupported=ta(),xe.detail.isSmallStreamSupported=ra(),xe.detail.isH264EncodeSupported=s,xe.detail.isVp8EncodeSupported=n,xe.detail.isH264DecodeSupported=d,xe.detail.isVp8DecodeSupported=p,xe.result||B.error(`${navigator.userAgent} ${_c(xe.detail,!1)}`),y_(),Y.addNumber({key:523800,value:Date.now()-i}),xe})),c_=function(){return xe.result},ta=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},Qc=null;function d_(){return y(this,null,function*(){return Qc||(Qc=new Promise(i=>y(this,null,function*(){let t={encode:!1,decode:!1},e=()=>{};try{B.warn("detectH264Supported start");let r=document.createElement("canvas"),o=r.getContext("2d");r.width=320,r.height=240;let s=setInterval(()=>{o.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,d=-1;e=()=>{clearInterval(n),clearInterval(s),clearTimeout(d),m.close(),E.close(),p.getTracks().forEach(x=>x.stop())},d=setTimeout(()=>{e(),i(t)},2*1e3);let p=r.captureStream(),m=new RTCPeerConnection({}),E=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});m.addEventListener("icecandidate",x=>E.addIceCandidate(x.candidate)),E.addEventListener("icecandidate",x=>m.addIceCandidate(x.candidate)),m.addTrack(p.getVideoTracks()[0],p);let _=yield m.createOffer();yield m.setLocalDescription(_),yield E.setRemoteDescription(_);let b=yield E.createAnswer(),C=Rl.default.parse(b.sdp),k=C.media[0].rtp.findIndex(x=>x.codec==="H264");C.media[0].rtp=[C.media[0].rtp[k]],C.media[0].fmtp=C.media[0].fmtp.filter(x=>x.payload===C.media[0].rtp[0].payload),C.media[0].rtcpFb&&(C.media[0].rtcpFb=C.media[0].rtcpFb.filter(x=>x.payload===C.media[0].rtp[0].payload)),b.sdp=Rl.default.write(C),yield E.setLocalDescription(b),yield m.setRemoteDescription(b),n=setInterval(()=>y(this,null,function*(){t.encode&&t.decode&&(e(),i(t));let x=yield m.getSenders()[0].getStats(),P=yield E.getReceivers()[0].getStats();t.encode||x.forEach(J=>{J.type==="outbound-rtp"&&J.mediaType===D.VIDEO&&J.bytesSent>0&&(t.encode=!0)}),t.decode||P.forEach(J=>{J.type==="inbound-rtp"&&J.mediaType===D.VIDEO&&J.bytesReceived>0&&(t.decode=!0)})}),100)}catch(r){e(),B.warn(r),i(t)}})).then(i=>((!i.encode||!i.decode)&&B.warn(`detectH264Supported encode: ${i.encode} decode: ${i.decode} ${fr}`),i)),Qc)})}var u_=(i,t,e)=>{location.protocol==="http:"&&!Tr&&(i[t]=()=>{throw new he({code:te.INVALID_OPERATION,message:qt.NOT_SUPPORTED_HTTP})})},l_=function(i){return i.type==="candidate-pair"&&i.nominated&&(i.state==="in-progress"||i.state==="succeeded")?!(dt(i.selected)&&!i.selected):!1};function vh(){let i="";if(screen.width){let t=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";i+=`${t} * ${e}`}return i}function Ch(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Nh(){let i={isSupported:!1},t=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<t.length;e++)if(t[e]in window){i.isSupported=!0;break}return i.isSupported}function Dh(){return"captureStream"in HTMLCanvasElement.prototype}function ra(){return ys||It||Zr&&Zr<63?!1:!!(Cl()&&Dh())}var m_=function(){if($(window.RTCRtpTransceiver)||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let i=null,t=!1;try{i=new RTCPeerConnection({sdpSemantics:Uu}),i.addTransceiver(D.AUDIO),t=!0}catch(e){}return i==null||i.close(),t};function p_(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function wh(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function h_(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function Mh(){return Qt===11?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var f_=!(!Mh()||Io&&Zr<86);function g_(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var ia="RTCRtpSender"in window;function E_(){return ia&&"replaceTrack"in window.RTCRtpSender.prototype}function __(){return ia&&"setParameters"in window.RTCRtpSender.prototype&&wh()}var T_="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,xs=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Dl=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,oa=ia&&"createEncodedStreams"in window.RTCRtpSender.prototype&&jn()>=86,Oh="RTCRtpScriptTransform"in window,sa=ia&&(oa||Oh),wl=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(t=>t in window).length>0};function Ph(){let i={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return $(window.AudioDecoder)||(i.AudioDecoder=!0),$(window.AudioEncoder)||(i.AudioEncoder=!0),$(window.VideoDecoder)||(i.VideoDecoder=!0),$(window.VideoEncoder)||(i.VideoEncoder=!0),$(window.ImageDecoder)||(i.ImageDecoder=!0),i}function xh(){return"mediaSession"in navigator&&!$(navigator.mediaSession.setActionHandler)}function kh(){return!$(window.WebTransport)}function I_(){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 S_(){let i={browser:`${Ur.name}/${Ur.version}`,os:Ns(),displayResolution:vh(),isScreenShareSupported:ta(),isWebRTCSupported:wl(),isGetUserMediaSupported:Ch(),isWebAudioSupported:Nh(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Ph(),isMediaSessionSupported:xh(),isWebTransportSupported:kh()};return navigator.userAgent.includes("miniProgram")&&(i.browser=`mini/${i.browser}`),i}var Lh="checkResult";function y_(){ws.setItem(Lh,{ua:navigator.userAgent,checkResult:xe})}function Ml(){si();let i=ws.getItem(Lh);i&&i.ua===navigator.userAgent&&(xe=i.checkResult),Kc()}function Do(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var A_="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;var Vh=Di(Ui(),1);var Uh=Symbol("instance"),tA=Symbol("abortCtrl"),ed=Symbol("cacheResult"),na=class{constructor(t,e,r){this.oldState=t,this.newState=e,this.action=r,this.aborted=!1}abort(t){this.aborted=!0,da.call(t,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},aa=class extends Error{constructor(t,e,r){super(e),this.state=t,this.message=e,this.cause=r}};function b_(i){return typeof i=="object"&&i&&"then"in i}var ca=new Map;function qe(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let p=ca.get(r)||[];ca.has(r)||ca.set(r,p),p.push({from:i,to:t,action:n})}let d=s.value;s.value=function(...p){let m=this;if(e.context&&(m=ne.get(typeof e.context=="function"?e.context.call(this,...p):e.context)),m.state===t)return e.sync?m[ed]:Promise.resolve(m[ed]);m.state instanceof na&&m.state.action==e.abortAction&&m.state.abort(m);let E=null;Array.isArray(i)?i.length==0?m.state instanceof na&&m.state.abort(m):(typeof m.state!="string"||!i.includes(m.state))&&(E=new aa(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(E=new aa(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i}`));let _=P=>{if(e.fail&&e.fail.call(this,P),e.sync){if(e.ignoreError)return P;throw P}else return e.ignoreError?Promise.resolve(P):Promise.reject(P)};if(E)return _(E);let b=m.state,C=new na(b,t,n);da.call(m,C);let k=P=>{var J;return m[ed]=P,C.aborted||(da.call(m,t),(J=e.success)===null||J===void 0||J.call(this,m[ed])),P},x=P=>(da.call(m,b,P),_(P));try{let P=d.apply(this,p);return b_(P)?P.then(k).catch(x):e.sync?k(P):Promise.resolve(k(P))}catch(P){return x(new aa(m._state,`${m.name} ${n} from ${i} to ${t} failed: ${P}`,P instanceof Error?P:new Error(String(P))))}}}}var R_=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function da(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(ne.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var ne=class i extends Vh.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=i.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[Uh];o?this.name=o.name+"-"+o.count++:r[Uh]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=ca.get(t)||[],r=new Set,o=[],s=[],n=new Set,d=Object.getPrototypeOf(t);ca.has(d)&&(d.stateDiagram.forEach(m=>r.add(m)),d.allStates.forEach(m=>n.add(m))),e.forEach(({from:m,to:E,action:_})=>{typeof m=="string"?o.push({from:m,to:E,action:_}):m.length?m.forEach(b=>{o.push({from:b,to:E,action:_})}):s.push({to:E,action:_})}),o.forEach(({from:m,to:E,action:_})=>{n.add(m),n.add(E),n.add(_+"ing"),r.add(`${m} --> ${_}ing : ${_}`),r.add(`${_}ing --> ${E} : ${_} \u{1F7E2}`),r.add(`${_}ing --> ${m} : ${_} \u{1F534}`)}),s.forEach(({to:m,action:E})=>{r.add(`${E}ing --> ${m} : ${E} \u{1F7E2}`),n.forEach(_=>{_!==m&&r.add(`${_} --> ${E}ing : ${E}`)})});let p=[...r];return Object.defineProperties(t,{stateDiagram:{value:p},allStates:{value:n}}),p}static get(t){let e;return typeof t=="string"?(e=i.instances.get(t),e||i.instances.set(t,e=new i(t,void 0,Object.create(i.prototype)))):(e=i.instances2.get(t),e||i.instances2.set(t,e=new i(t.constructor.name,void 0,Object.create(i.prototype)))),e}static getState(t){var e;return(e=i.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){R_(i.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){da.call(this,t)}};ne.STATECHANGED="stateChanged";ne.UPDATEAFSM="updateAFSM";ne.INIT="[*]";ne.ON="on";ne.OFF="off";ne.instances=new Map;ne.instances2=new WeakMap;var Pl=typeof window!="undefined",Bh=Pl&&window.requestIdleCallback||function(i){let t=Date.now();return setTimeout(()=>{i({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-t))}})},1e3)},v_=Pl&&window.cancelIdleCallback||function(i){clearTimeout(i)},$h=Pl&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),ht=class ht{static generateTaskID(){return this.currentTaskID++}static run(t,e,r){r!=null&&r.fps&&(r.delay=r.delay||Number((1e3/r.fps).toFixed(2))),t==="interval"?r=Z({delay:2e3,count:0,backgroundTask:!0},r):t==="ric"?r=Z({delay:1e4,count:0},r):t==="raf"?r=Z({fps:60,delay:16.6,count:0,backgroundTask:!0},r):r=Z({delay:2e3,count:0,backgroundTask:!0},r);let o=Ee(Z({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:t,callback:e},r),{delay:r.delay});return this.taskMap.set(o.taskID,o),this[t](o),o.taskID}static interval(t){let e=()=>{t.callback(),t.loopCount+=1,ht.isBreakLoop(t)};return t.intervalID=setInterval(e,t.delay)}static intervalInWorker(t){ht.sharedWorker||(ht.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
|
|
14
12
|
const timers = new Map();
|
|
15
13
|
self.onmessage = function(e) {
|
|
16
14
|
const { taskId, delay, type } = e.data;
|
|
@@ -23,14 +21,14 @@ Refer to: ${sh("en",a)}
|
|
|
23
21
|
timers.delete(taskId);
|
|
24
22
|
}
|
|
25
23
|
};
|
|
26
|
-
`],{type:"application/javascript"}))),
|
|
27
|
-
${t.stack}`)),this.sendRequest(hi(this._configs.sdkAppId,Bi.LOG),r)}sendRequest(i,e){setTimeout(()=>fi({url:i,body:JSON.stringify(e),priority:"low"}).catch(()=>{}),2e3)}},ee=new bd;var Kt=new WeakMap;function Ze({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:d,retry:l,reject:m,retryFuncArgs:u}){var p;i?i.call(this,d,()=>{var _;(_=Kt.get(r))!=null&&_.has(o)?l():m(d)},m,u):(p=Kt.get(r))!=null&&p.has(o)?l():m(d)},onRetrying(d,l){var m;Wt(e)&&e.call(this,d,l),(m=Kt.get(r))!=null&&m.has(o)&&(Kt.get(r).get(o).stopRetry=l)},onRetryFailed:t});return n.value=function(...d){let l=Kt.get(r);return l?l.set(o,{args:d}):Kt.set(r,new Map([[o,{args:d}]])),a.apply(this,d).finally(()=>{var m;return(m=Kt.get(r))==null?void 0:m.delete(o)})},n}}function vo({fnName:s,callback:i,validateArgs:e=!0}){return function(t,r,o){let n=o.value;return o.value=function(...a){var d,l;if((d=Kt.get(t))!=null&&d.has(s)){let{stopRetry:m,args:u}=Kt.get(t).get(s),p=!0;if(e){for(let _ of u)if(!a.find(I=>I===_)){p=!1;break}}p&&(i&&i.apply(this,a),m&&m(),(l=Kt.get(t))==null||l.delete(s))}return n.apply(this,a)},o}}var Zt=class extends Q{constructor(e,t){super(e.id,`${t}-player`);this.kind=t;c(this,"id");c(this,"element",null);c(this,"track");c(this,"url");c(this,"attr");c(this,"mode");c(this,"muted");c(this,"_log");c(this,"_pausedRetryCount");c(this,"_isElementPlayingFired",!1);c(this,"_interval");c(this,"_delayDestroyTimeoutId",0);c(this,"_playSuccessResolve");c(this,"_isReplayByRecreateMediaStreamCalled",!1);c(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=bc,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||this.track&&this.track.readyState==="live"&&!this.track.muted)}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 f(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=U({key:x.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 b({code:S.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!Wi?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(h.ENDED),this._interval>0&&re.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():qc?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 Be(this.element,this.element).add(h.PLAYING,e).add(h.ENDED,e).add(h.PAUSE,e).add(h.ERROR,e).add(h.LOADEDDATA,e).add(h.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let t=this.handleTrackEvent.bind(this);Yt==null||Yt.create(e,e).add(h.ENDED,t).add(h.MUTE,t).add(h.UNMUTE,t),e.readyState===h.ENDED&&this.handleTrackEvent({type:h.ENDED}),e.muted&&this.handleTrackEvent({type:h.MUTE})}}bindAutoPlayEvent(){E.on(T.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&Se(e)}unbindEvents(){this.element&&Se(this.element),this.unbindTrackEvents(),E.off(T.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case h.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(h.PLAYING),this._interval&&(re.clearTask(this._interval),this._interval=-1);break;case h.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(h.ENDED);break;case h.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(h.PAUSE),ve&&(this._interval=re.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case h.ERROR:if(this.element&&this.element.error){this.handlePaused(h.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}`),ee.uploadEvent({log:`stat-${this.kind}-${ze.PLAYER_ERROR}-${r}-${navigator.userAgent}`,error:this.element.error}),Gc||$c?this.emit(ce.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case h.LOADEDDATA:this.kind===h.VIDEO&&this.emit(ce.LOADED_DATA);break;case h.LOADEDMETADATA:this.kind===h.VIDEO&&this.emit(ce.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),ee.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),N.addSuccessEvent({key:this.kind===h.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),ee.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),N.addFailedEvent({key:this.kind===h.AUDIO?506700:516700,error:(t=this.element)==null?void 0:t.error}),this.emit(ce.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,r)=>{pi(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)}),pi(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 h.ENDED:this.handleStopped(h.ENDED);break;case h.MUTE:this.handlePaused(h.MUTE);break;case h.UNMUTE:this._isElementPlayingFired?this.handlePlaying(h.UNMUTE):this.mode>0&&this.handlePlaying(this.mode.toString());break}}handlePlaying(e){var t;(t=this._playSuccessResolve)==null||t.call(this,e),this.emit(ce.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this.emit(ce.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this.emit(ce.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};y([Ze({settings:{retries:2,timeout:0},onError(e,t,r,o){o[0]=(o[0]||1e3)+1e3,t()}})],Zt.prototype,"doReplayByRecreateMediaStream",1),y([le([],"PLAYING",{sync:!0})],Zt.prototype,"handlePlaying",1),y([le("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],Zt.prototype,"handlePaused",1),y([le([],"STOPPED",{sync:!0})],Zt.prototype,"handleStopped",1);var bi="trtc_autoplay",Nd=`${bi}_mask`,us=`${bi}_wrapper`,Nh=`${bi}_header`,vd=`${bi}_content`,Kn=`${bi}_action_wrapper`,Dd=`${bi}_question`,Od=`${bi}_collapse`,Zn=`${bi}_action_confirm`,vh=`${bi}_detail`,Dh="#2473E8",Md="dialog",o_=`${Md}-show`,n_=`${Md}-1`,a_=`${Md}-2`,Oh=!1,Ld=()=>!!document.querySelector(`.${us}`),Mh=`${Ft}/${Rt()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,kh=`<br><a href='${Mh}' target='_blank'>${Rt()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,c_=`${Rt()?`\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${kh}`:`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. ${kh}`}`,kd=class{constructor(){c(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");c(this,"_dialogNode",null);c(this,"_bodyPosition","");c(this,"_showDetail",!1);c(this,"_isCollapseClicked",!1);c(this,"_isQuestionClicked",!1);if(Rt()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!Oh){let i=document.createElement("style");i.innerHTML=`.${Nd}{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;}.${Nd} div:not(.${Kn}){display:block !important;}.${us}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${us} a{color:${Dh};}.${Nh}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${vd}{margin:8px 0;}.${Kn}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Od}{margin-right:auto;cursor:pointer}.${Dd}{height:100%;line-height:16px;cursor:pointer;}.${Zn}{margin-left:8px;color:#fff;background:${Dh};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${Zn}:hover{opacity:0.9;}.${Od},.${Zn},.${vd},.${Dd}{font-size:14px;}@media screen and (max-width:750px){.${us}{width:80vw;}}`,document.head.appendChild(i),Oh=!0}this.addDiaLog()}createDiaLog(){let i=document.createElement("template");i.innerHTML=`<div class="${Nd}"><div class='${us}'><div class='${Nh}'>${location.host}</div><div class='${vd}'>${this.content}</div><div class='${vh}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${c_}</div><div class='${Kn}'></div></div></div>`.trim();let e=document.createElement("button");e.className=Zn,e.innerText=Rt()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=Dd,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
|
|
24
|
+
`],{type:"application/javascript"}))),ht.sharedWorker.onmessage=e=>{var r;if(e.data.type==="tick"){let o=ht.workerTasks.get(e.data.taskId);o&&(o.callback(),o.loopCount+=1,ht.isBreakLoop(o)&&((r=ht.sharedWorker)==null||r.postMessage({type:"stop",taskId:o.taskID}),ht.workerTasks.delete(o.taskID)))}}),ht.workerTasks.set(t.taskID,t),ht.sharedWorker.postMessage({taskId:t.taskID,delay:t.delay,type:"start"})}static timeout(t){let e=()=>{if(t.callback(),t.loopCount+=1,!ht.isBreakLoop(t))return t.timeoutID=setTimeout(e,t.delay)};return t.timeoutID=setTimeout(e,t.delay)}static ric(t){let e=_e(),r,o=()=>{if(r=_e()-e,r>=t.delay&&(e=_e()-Math.floor(r%t.delay),t.callback(),t.loopCount+=1),!ht.isBreakLoop(t))return t.ricID=Bh(o,{timeout:t.delay})};return t.ricID=Bh(o,{timeout:t.delay})}static raf(t){let e=_e(),r,o=()=>{if(document.hidden&&t.backgroundTask)return r=_e()-e,e=_e(),t.callback(),t.loopCount+=1,ht.isBreakLoop(t)?void 0:t.timeoutID=setTimeout(o,t.delay-Math.floor(r%t.delay));if(r=_e()-e,r>=t.delay&&(e=_e()-Math.floor(r%t.delay),t.callback(),t.loopCount+=1),!ht.isBreakLoop(t))return t.rafID=requestAnimationFrame(o)};if(t.rafID=requestAnimationFrame(o),t.backgroundTask){let s=()=>{if(document.hidden){let n=_e()-e;n>=t.delay?o():t.timeoutID=setTimeout(o,t.delay-n)}};document.addEventListener("visibilitychange",s),t.onVisibilitychange=s,document.hidden&&s()}return t.taskID}static hasTask(t){return this.taskMap.has(t)}static clearTask(t){if(!this.taskMap.has(t))return!0;let{intervalID:e,timeoutID:r,rafID:o,ricID:s,onVisibilitychange:n,worker:d}=this.taskMap.get(t);return d&&d.terminate(),e&&clearInterval(e),r&&clearTimeout(r),o&&$h&&$h(o),s&&v_(s),n&&document.removeEventListener("visibilitychange",n),this.taskMap.delete(t),!0}static isBreakLoop(t){return this.taskMap.has(t.taskID)?t.count!==0&&t.loopCount>=t.count?(this.clearTask(t.taskID),!0):!1:!0}};u(ht,"taskMap",new Map),u(ht,"currentTaskID",1),u(ht,"sharedWorker",null),u(ht,"workerTasks",new Map);var Ol=ht,St=Ol;var lA={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:D.SEI_MESSAGE,ERROR:"error"};var Xe={LOADED_DATA:D.LOADEDDATA,LOADED_META_DATA:D.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var Br={};qr(Br,{create:()=>Pt,remove:()=>ut});var ua=new WeakMap;function Pt(i,t){ua.has(i)||ua.set(i,[]);let e=ua.get(i),o={add:(s,n)=>("addEventListener"in t?(e.push(t.removeEventListener.bind(t,s,n)),t.addEventListener(s,n)):(e.push(t.off.bind(t,s,n)),t.on(s,n)),o)};return o}function ut(i){let t=ua.get(i);t&&(t.forEach(e=>e()),ua.delete(i))}var xl=class{constructor(){u(this,"_roomIdMap",new Map);u(this,"_configs");typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:rt,env:Jr.QCLOUD,browserVersion:Ur.name+Ur.version,ua:navigator.userAgent})}setConfig({sdkAppId:t,env:e,userId:r,roomId:o}){t!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(t)),this._configs.env=e,this._configs.userId=r,this._roomIdMap.set(r,String(o))}logSuccessEvent(t){Tr||!B.isAbleToUpload||this._configs.env===Jr.QCLOUD&&this.uploadEventToKibana(Ee(Z({},t),{result:"success"}))}logFailedEvent(t){if(Tr||!B.isAbleToUpload)return;let{eventType:e,code:r,error:o,userId:s}=t,n={roomId:this._roomIdMap.get(s||this._configs.userId),userId:s,eventType:e,result:"failed",code:r||(o==null?void 0:o.extraCode)||(o==null?void 0:o.code)||te.UNKNOWN};this._configs.env===Jr.QCLOUD&&this.uploadEventToKibana(Ee(Z({},n),{error:o}))}uploadEventToKibana(t){let e=`stat-${t.eventType}-${t.result}`;(t.eventType==="delta-join"||t.eventType==="delta-leave"||t.eventType==="delta-publish")&&(e=`${t.eventType}:${t.delta}`),this.uploadEvent({log:e,userId:t.userId}),t.result==="failed"&&(e=`stat-${t.eventType}-${t.result}-${t.code}`,this.uploadEvent({log:e,userId:t.userId,error:t.error}))}uploadEvent({log:t,userId:e,error:r}){let o={timestamp:sc(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:rt,log:t};r&&(o.errorInfo=r.message,r.stack&&(o.errorInfo+=`
|
|
25
|
+
${r.stack}`)),this.sendRequest(Qr(this._configs.sdkAppId,wi.LOG),o)}sendRequest(t,e){setTimeout(()=>Yr({url:t,body:JSON.stringify(e),priority:"low"}).catch(()=>{}),2e3)}},$e=new xl;var wo=new WeakMap;function Bi({settings:i={retries:5,timeout:2e3},onError:t,onRetrying:e,onRetryFailed:r}){return function(o,s,n){let d=Pi({retryFunction:n.value,settings:i,onError({error:p,retry:m,reject:E,retryFuncArgs:_}){var b;t?t.call(this,p,()=>{var C;(C=wo.get(o))!=null&&C.has(s)?m():E(p)},E,_):(b=wo.get(o))!=null&&b.has(s)?m():E(p)},onRetrying(p,m){var E;Oi(e)&&e.call(this,p,m),(E=wo.get(o))!=null&&E.has(s)&&(wo.get(o).get(s).stopRetry=m)},onRetryFailed:r});return n.value=function(...p){let m=wo.get(o);return m?m.set(s,{args:p}):wo.set(o,new Map([[s,{args:p}]])),d.apply(this,p).finally(()=>{var E;return(E=wo.get(o))==null?void 0:E.delete(s)})},n}}var $r=class extends ne{constructor(e,r){super(e.id,`${r}-player`);this.kind=r;u(this,"id");u(this,"element",null);u(this,"track");u(this,"url");u(this,"attr");u(this,"mode");u(this,"muted");u(this,"_log");u(this,"_pausedRetryCount");u(this,"_isElementPlayingFired",!1);u(this,"_interval");u(this,"_delayDestroyTimeoutId",0);u(this,"_playSuccessResolve");u(this,"_isReplayByRecreateMediaStreamCalled",!1);u(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=Vu,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${r}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&(((e=this.element)==null?void 0:e.paused)===!1||this.track&&this.track.readyState==="live"&&!this.track.muted)}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 y(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,r)=>{this._playSuccessResolve=e,this.element.play().then(e,r)})}catch(e){let r=at({key:nt.PLAY_FAILED,data:{media:this.kind,error:e}});if(this.track&&!this.track.muted&&this._log.warn(e),r.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new he({code:te.PLAY_NOT_ALLOWED,message:r})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!xi?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(D.ENDED),this._interval>0&&St.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():tl?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 Pt(this.element,this.element).add(D.PLAYING,e).add(D.ENDED,e).add(D.PAUSE,e).add(D.ERROR,e).add(D.LOADEDDATA,e).add(D.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let r=this.handleTrackEvent.bind(this);Br==null||Br.create(e,e).add(D.ENDED,r).add(D.MUTE,r).add(D.UNMUTE,r),e.readyState===D.ENDED&&this.handleTrackEvent({type:D.ENDED}),e.muted&&this.handleTrackEvent({type:D.MUTE})}}bindAutoPlayEvent(){H.on(L.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&ut(e)}unbindEvents(){this.element&&ut(this.element),this.unbindTrackEvents(),H.off(L.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case D.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(D.PLAYING),this._interval&&(St.clearTask(this._interval),this._interval=-1);break;case D.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(D.ENDED);break;case D.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(D.PAUSE),It&&(this._interval=St.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case D.ERROR:if(this.element&&this.element.error){this.handlePaused(D.ERROR);let{code:o,message:s}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${o} message: ${s} userAgent: ${navigator.userAgent}`),$e.uploadEvent({log:`stat-${this.kind}-${zr.PLAYER_ERROR}-${o}-${navigator.userAgent}`,error:this.element.error}),Zu||Yu?this.emit(Xe.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case D.LOADEDDATA:this.kind===D.VIDEO&&this.emit(Xe.LOADED_DATA);break;case D.LOADEDMETADATA:this.kind===D.VIDEO&&this.emit(Xe.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),$e.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),Y.addSuccessEvent({key:this.kind===D.AUDIO?506700:516700})}).catch(()=>{var r;this._log.error("replayByRecreateMediaStream failed"),$e.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),Y.addFailedEvent({key:this.kind===D.AUDIO?506700:516700,error:(r=this.element)==null?void 0:r.error}),this.emit(Xe.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((r,o)=>{Pn(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var s,n,d;this._log.warn(`element onerror ${(n=(s=this.element)==null?void 0:s.error)==null?void 0:n.code} fired after recreated mediaStream`),o((d=this.element)==null?void 0:d.error)}),Pn(5e3).then(()=>{var s,n;(!this.isPlaying||(s=this.element)!=null&&s.error)&&o((n=this.element)==null?void 0:n.error),r()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){switch(e.type){case D.ENDED:this.handleStopped(D.ENDED);break;case D.MUTE:this.handlePaused(D.MUTE);break;case D.UNMUTE:this._isElementPlayingFired?this.handlePlaying(D.UNMUTE):this.mode>0&&this.handlePlaying(this.mode.toString());break}}handlePlaying(e){var r;(r=this._playSuccessResolve)==null||r.call(this,e),this.emit(Xe.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this.emit(Xe.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this.emit(Xe.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};X([Bi({settings:{retries:2,timeout:0},onError(e,r,o,s){s[0]=(s[0]||1e3)+1e3,r()}})],$r.prototype,"doReplayByRecreateMediaStream",1),X([qe([],"PLAYING",{sync:!0})],$r.prototype,"handlePlaying",1),X([qe("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],$r.prototype,"handlePaused",1),X([qe([],"STOPPED",{sync:!0})],$r.prototype,"handleStopped",1);var ni="trtc_autoplay",kl=`${ni}_mask`,ks=`${ni}_wrapper`,Fh=`${ni}_header`,Ll=`${ni}_content`,td=`${ni}_action_wrapper`,Ul=`${ni}_question`,Vl=`${ni}_collapse`,rd=`${ni}_action_confirm`,Hh=`${ni}_detail`,Wh="#2473E8",$l="dialog",N_=`${$l}-show`,D_=`${$l}-1`,w_=`${$l}-2`,Gh=!1,Fl=()=>!!document.querySelector(`.${ks}`),qh=`${Mr}/${hr()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,jh=`<br><a href='${qh}' target='_blank'>${hr()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,M_=`${hr()?`\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${jh}`:`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. ${jh}`}`,Bl=class{constructor(){u(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");u(this,"_dialogNode",null);u(this,"_bodyPosition","");u(this,"_showDetail",!1);u(this,"_isCollapseClicked",!1);u(this,"_isQuestionClicked",!1);if(hr()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!Gh){let t=document.createElement("style");t.innerHTML=`.${kl}{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;}.${kl} div:not(.${td}){display:block !important;}.${ks}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${ks} a{color:${Wh};}.${Fh}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Ll}{margin:8px 0;}.${td}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Vl}{margin-right:auto;cursor:pointer}.${Ul}{height:100%;line-height:16px;cursor:pointer;}.${rd}{margin-left:8px;color:#fff;background:${Wh};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${rd}:hover{opacity:0.9;}.${Vl},.${rd},.${Ll},.${Ul}{font-size:14px;}@media screen and (max-width:750px){.${ks}{width:80vw;}}`,document.head.appendChild(t),Gh=!0}this.addDiaLog()}createDiaLog(){let t=document.createElement("template");t.innerHTML=`<div class="${kl}"><div class='${ks}'><div class='${Fh}'>${location.host}</div><div class='${Ll}'>${this.content}</div><div class='${Hh}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${M_}</div><div class='${td}'></div></div></div>`.trim();let e=document.createElement("button");e.className=rd,e.innerText=hr()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let r=document.createElement("div");r.className=Ul,r.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
|
|
28
26
|
<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">
|
|
29
27
|
<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"/>
|
|
30
28
|
<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"/>
|
|
31
29
|
<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"/>
|
|
32
30
|
</svg>
|
|
33
|
-
`,t.onclick=this.onQuestionClick.bind(this);let r=document.createElement("div");r.className=Od,r.innerText=`${Rt()?"\u8BE6\u60C5 >":"Detail >"}`,r.onclick=this.onCollapseClick.bind(this);let o=i.content.firstChild,n=o.querySelector(`.${Kn}`);return n.appendChild(r),n.appendChild(t),n.appendChild(e),o}addDiaLog(){Ld()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${us}`).onclick=i=>i.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",C.info("show autoplay dialog"),ee.uploadEvent({log:o_}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){C.warn("confirm clicked, try resume stream"),E.emit(T.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let i=this._dialogNode.querySelector(`.${vh}`);i.style.visibility=`${this._showDetail?"hidden":"visible"}`,i.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||ee.uploadEvent({log:n_}),this._isCollapseClicked=!0}onQuestionClick(){window.open(Mh,"_blank"),this._isQuestionClicked||ee.uploadEvent({log:a_}),this._isQuestionClicked=!0}},Lh=kd;var dt=class extends Zt{constructor(e){super(e,h.VIDEO);c(this,"stat",{});c(this,"_calculateTimeout",-1);c(this,"viewMirror",!1);c(this,"objectFit");c(this,"container");c(this,"canvas");c(this,"canvasTrack");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,g(e.viewMirror)||(this.viewMirror=e.viewMirror),g(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}initializeElement(){var t;let e=document.createElement(h.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.canvasTrack)&&this.elementToRender&&((t=this.container)==null||t.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(h.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(h.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var t;super.handleTrackEvent(e),e.type===h.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===h.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&&!Ld()&&(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===h.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=o.replace("scaleX(-1)",""):t===h.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}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(ce.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(Er()&&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 Sr(s,i){return f(this,null,function*(){if(!s.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield s.audioWorklet.addModule(i),C.info("worklet addModule success")}catch(e){throw C.info(`worklet addModule catch error. ${e.message}`),e}})}var Do;typeof AudioContext!="undefined"?Do=AudioContext:typeof webkitAudioContext!="undefined"?Do=webkitAudioContext:typeof mozAudioContext!="undefined"&&(Do=mozAudioContext);var Lt,Ph=-1;wh();function wh(){try{if(Lt)return;Lt=new Do({sampleRate:48e3}),Lt.onstatechange=()=>{C.info(`context state: ${Lt.state}${Lt.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),hs()},clearTimeout(Ph)}catch(s){C.error(`initAudioContext failed: ${s} typeof AudioContextClass: ${typeof Do}`),Ph=setTimeout(wh,1e3)}}var hs=()=>{Lt.state==="suspended"?(ms(),document.addEventListener("click",hs)):Lt.state==="interrupted"?ms():(document.removeEventListener("visibilitychange",hs),document.removeEventListener("click",hs))},Pd=0,wd=-1;function ms(){return new Promise((s,i)=>{if(Lt.state==="running")return s();Date.now()-Pd<1e3?(clearTimeout(wd),wd=setTimeout(()=>{Pd=Date.now(),Lt.resume().then(s,i)},1e3)):(clearTimeout(wd),Pd=Date.now(),Lt.resume().then(s,i))}).catch(s=>{C.warn(`context resume failed: ${s}`),document.addEventListener("visibilitychange",hs)})}document.addEventListener("click",hs);var et=s=>Lt;var gt=class{constructor(){c(this,"node");c(this,"pre",new Set);c(this,"next",new Set);c(this,"context");c(this,"connectedNodes",new Set);c(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(i){this._channelCount=i,this.node&&(this.node.channelCount=i),this.next.forEach(e=>e.channelCount=i)}setContext(i){this.context=i,this.node&&i.addMixWeight()}removeContext(){var i;this.node&&((i=this.context)==null||i.reduceMixWeight()),delete this.context}setNode(i){var e;if(!this.node)try{(e=this.context)==null||e.addMixWeight(),this.node=i,this.node.channelCountMode="explicit",this.node.channelCount=this._channelCount,this.preNodeReconnect(),this.reconnect(),N.addSuccessEvent({key:502701})}catch(t){C.error(t),N.addFailedEvent({key:502701,error:t})}}deleteNode(){var i;if(this.node)try{this._disconnect(),delete this.node,(i=this.context)==null||i.reduceMixWeight(),this.preNodeReconnect(),N.addSuccessEvent({key:502702})}catch(e){C.error(e),N.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.node.connect(i),this.connectedNodes.add(i),!0)}_disconnect(){this.connectedNodes.forEach(i=>{var e;return(e=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}},ea=class extends gt{constructor(e=256){super();this.fftSize=e;c(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}},Oo=class{constructor(){c(this,"source",new gt);c(this,"gain",new gt);c(this,"destination",new gt)}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(this.source.node.context.createGain()),this.gain.node.gain.value=i}replaceSource(i){this.source.deleteNode(),this.source.setNode(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}},ps=class extends Oo{constructor(e){super();this.context=e;c(this,"denoiser",new gt);this.source.pipeTo(this.denoiser.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.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.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.denoiser.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}},ta=class{constructor(){c(this,"audioContext",et("audio-mixer"));c(this,"destination",this.audioContext.createMediaStreamDestination());c(this,"inputs",new Set);c(this,"mixWeight",0)}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]}},xh=new WeakMap;function xd(s){let i=xh.get(s);if(i)return i;let e=et();if(s instanceof HTMLAudioElement)i=e.createMediaElementSource(s);else if(s instanceof MediaStreamTrack)i=e.createMediaStreamSource(new MediaStream([s]));else return s;return xh.set(s,i),i}var lt=class lt{constructor(i){c(this,"_volume",0);c(this,"_volumeDb",0);c(this,"_log");c(this,"_scriptProcessorNode",null);c(this,"_audioWorkletNode",null);c(this,"_interval",200);c(this,"ready",this.preload());let{log:e}=i;this._log=e,E.on(T.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-lt.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!lt.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);';lt.workletReady=Sr(lt.audioContext,URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}return lt.workletReady.then(()=>this.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(lt.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=e=>{lt.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}`),ee.logFailedEvent({userId:this._log.userId,eventType:ze.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=et("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{lt.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(T.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})}};c(lt,"lastMessageTime",0),c(lt,"audioContext",et("volume-meter")),c(lt,"workletReady");var ia=lt,ra=class extends gt{constructor(e){super();c(this,"_volumeMeter");this._volumeMeter=new ia(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return f(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()}}},Ir=ia;var Fh=Pe(Je(),1);var Vh=s=>i=>i.deviceId===s;var ko=class{constructor(i,e="Input"){c(this,"kind");c(this,"type");c(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&&fs(this.devices[0])){this.devices=t;return}e&&(t.forEach(r=>{if(r.deviceId&&!this.devices.find(Vh(r.deviceId))){let o=`${this.kind}${this.type}Added`;C.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}}),this.devices.forEach(r=>{if(r.deviceId&&!t.find(Vh(r.deviceId))){let o=`${this.kind}${this.type}Removed`;C.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}})),this.devices=t}hasDevice(i){return!!this.devices.find(e=>e.deviceId===i)}},Ud=class extends Fh.EventEmitter{constructor(){super();c(this,"audioInputs",new ko(h.AUDIO));c(this,"videoInputs",new ko(h.VIDEO));c(this,"audioOutputs",new ko(h.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||re.run("interval",()=>{this.update()},{delay:1e4}))}init(){sa().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return f(this,arguments,function*(e=0){let t=yield sa(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}},be=Fs||Fr?null:new Ud;function fs(s){return s.deviceId===s.groupId&&s.groupId===""}function sa(){return f(this,arguments,function*(s=0){if(Ri()||!qn())return[];let i=yield navigator.mediaDevices.enumerateDevices();if(s!==0){let e={audio:!1,video:!1};if(i.forEach(t=>{fs(t)&&(t.kind===h.AUDIO_INPUT?e.audio=!0:t.kind===h.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&&ms()}catch(r){C.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&&Vd.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(r.getCapabilities=()=>e.getCapabilities()),r})})}function tt(s=!1){return be.update(s?1:0).then(i=>i.audioInputs.devices)}function ut(s=!1){return be.update(s?2:0).then(i=>i.videoInputs.devices)}var Bh=!1;function Hh(){return f(this,null,function*(){try{Bh||(Bh=!0,C.info(`speakers:${(yield Yi()).map(s=>` ${s.deviceId.slice(0,8)}: ${s.label}`)}`))}catch(s){}})}function Yi(s=!1){return f(this,null,function*(){return(ve||Ve)&&(s=!1),be.update(s?1:0).then(i=>i.audioOutputs.devices)})}var Vd=new Set;function $h(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}_${h.VIDEO_INPUT}`;return!!Vd.has(t)}function Gh(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}_${h.AUDIO_INPUT}`;return!!Vd.has(t)}function Bd(s,i){return f(this,null,function*(){let t=(yield tt()).find(r=>r.deviceId===ar);return!i&&(t==null?void 0:t.groupId)===s||(t==null?void 0:t.groupId)===s&&t.label===i})}function Wh(o){return f(this,arguments,function*({newDeviceId:s,oldDeviceId:i,oldGroupId:e,oldLabel:t,kind:r}){return s!==i?!1:r===h.AUDIO&&s===ar?yield Bd(e,t):!0})}var oa,Fd=class extends Oo{constructor(e){super();this.log=e;c(this,"volumeMeter");c(this,"volumeDestination");c(this,"analyser",new ea);this.volumeMeter=new ra({log:this.log}),this.volumeDestination=new gt,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},na=class s extends Zt{constructor(e){super(e,h.AUDIO);c(this,"_outputDeviceId");c(this,"_volume",1);c(this,"_destination",et("player").createMediaStreamDestination());c(this,"pipeline");c(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new Fd(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((qi==="15.2"||qi==="15.3"||qi==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let r=oa||new Audio;r.setAttribute("autoplay","autoplay"),r.srcObject=this.getMediaStream(),r.muted=this.muted,this.element=r,Y(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),r===oa&&(oa=void 0),this.bindElementEvents()}play(e){return f(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(et("player").createAnalyser()),Hh(),we(s.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return f(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()}},aa=class extends na{constructor(i){super(i),this.pipeline.source.pipeTo(this.pipeline.volumeMeter,this.pipeline.destination)}setTrack(i){var e;this.track!==i&&(this.unbindTrackEvents(),this.track=i,this.emit(ce.MEDIA_TRACK_CHANGED,i),i?(this.bindTrackEvents(),this.pipeline.source.channelCount=((e=i.getSettings())==null?void 0:e.channelCount)||1,this.pipeline.replaceSource(i),!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([i]))):this.pipeline.source.deleteNode())}setSourceNode(i){!i||this.pipeline.source.node===i||(this.pipeline.replaceSource(i),i instanceof MediaStreamAudioSourceNode?this.pipeline.destination.setNode(this._destination):this.pipeline.destination.deleteNode(),this.element&&(this.element.srcObject=this.getMediaStream(),this.element.play().catch(()=>{}),this.setVolume(this._volume)))}setVolume(i){this._volume=i,this.element&&(this.element.volume=i)}},ca=class extends na{constructor(e){super(e);c(this,"_sourceElement");c(this,"_output",new gt);this.pipeline.source.pipeTo(this.pipeline.gain.pipeTo(this.pipeline.volumeMeter.pipeTo(this._output),this.pipeline.destination))}setOutput(){this.mode=1,this._output.setNode(et("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(ce.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"):ve||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),Se(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&&Wi&&(oa=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var Ar=class extends Q{constructor({userId:e,sdkAppId:t,mediaType:r,room:o,PlayerClass:n=r===1?ca:dt}){var a;super();c(this,"id",ho());c(this,"userId","");c(this,"isRemote");c(this,"mediaType");c(this,"room");c(this,"user");c(this,"_log");c(this,"_inputTrack");c(this,"_outputTrack");c(this,"isPlayCalled");c(this,"container",null);c(this,"player");c(this,"subVideoPlayerMap");c(this,"muted",!1);c(this,"abortCtrl");c(this,"objectFit","cover");c(this,"mirror");c(this,"isScreen",!1);c(this,"manager");c(this,"trackSettings");c(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=r,this._log=C.createLogger({id:`${this.kind[0]}t`,userId:(a=o||this.room)==null?void 0:a.userId,remoteUserId:this instanceof Ni?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof Ni}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(ce.PLAYER_STATE_CHANGED,d=>{E.emit(T.PLAYER_STATE_CHANGED,v({track:this},d)),this.emit("player-state-changed",d)}),this.kind===h.VIDEO&&(this.player.on(ce.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(ce.LOADED_DATA),E.emit(T.VIDEO_LOADED_DATA,{track:this})}),this.player.on(ce.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(ce.LOADED_META_DATA)}),this.player.on(ce.MEDIA_TRACK_CHANGED,d=>{var l;(l=this.subVideoPlayerMap)==null||l.forEach(m=>m.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(ce.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||C}get kind(){return this.mediaType===1?h.AUDIO:h.VIDEO}get strMediaType(){return this.mediaType===4?h.VIDEO:this.mediaType===2?h.SCREEN:h.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 f(this,null,function*(){let r=Te(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(t)}`),t&&!g(t.muted)&&this.setPlayerMute(t.muted),t&&!g(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof dt&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&(this.container=r,this.player.setContainer(r)),Te(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),t)));return}if(t&&!g(t.muted)?this.setPlayerMute(t.muted):(!this.isRemote||this.kind===h.VIDEO)&&this.setPlayerMute(!0),t&&!g(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof dt&&this.player.setObjectFit(this.objectFit),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof dt&&this.player.setContainer(r)),E.emit(T.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),Te(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!==h.VIDEO||g(e)||e===this.mirror)return;this.mirror=e;let r=this.player;t&&(r=t);let o=this.manager;if(he(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 f(this,null,function*(){if(!this._outputTrack||this.kind===h.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&&(g(t.objectFit)||a.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(n,new dt({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(Pc(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(t=>{t.stop()}),this.container=null)}resume(){return f(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?T.TRACK_MUTED:T.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){Be(e,e).add(h.MUTE,this.onTrackMuted).add(h.UNMUTE,this.onTrackUnmuted).add(h.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===h.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){Se(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(Pc(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 Lh;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 dt?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===ce.LOADED_META_DATA&&!r&&!o||(e===ce.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`)}};y([le([],Q.INIT,{sync:!0})],Ar.prototype,"close",1);var d_=Object.prototype.hasOwnProperty,{toString:$A}=Object.prototype;function l_(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(Ye(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(d_.call(s,i))return!1;return!0}}return!1}var ei=l_;var u_=function(s){return f(this,null,function*(){let i=m_(s);C.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let e=[],t=[],r=["label","deviceId","groupId"];i.audio&&(e=yield tt(),C.info(`microphones: ${mt(e.map(o=>M(v({},o),{groupId:o.groupId.substring(0,8)})),{keysToInclude:r})}`)),i.video&&(t=yield ut(),C.info(`cameras: ${mt(t,{keysToInclude:r})}`));try{let o=yield navigator.mediaDevices.getUserMedia(i);return Id&&o.getTracks().forEach(n=>{C.info(`${n.kind} capabilities: ${mt(n.getCapabilities(),{keysToInclude:fn})}`)}),i.audio&&ms(),o}catch(o){let{message:n}=o;throw o.name==="NotFoundError"&&(s.video&&t&&t.length===0&&(n=U({key:x.CAMERA_NOT_FOUND})),s.audio&&e&&e.length===0&&(n=U({key:x.MICROPHONE_NOT_FOUND}))),new b({code:S.INITIALIZE_FAILED,name:o.name,message:n,constraint:o.constraint})}})},h_=Jt({retryFunction:u_,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,(!Ve||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&&Jh(t[0].microphoneId,!1),t[0].cameraId&&Jh(t[0].cameraId,!0)},onRetrying:s=>{C.warn(`getUserMedia NotReadableError observed, retrying [${s}/3]`)},onRetryFailed:s=>{ee.logFailedEvent({eventType:ze.GET_USER_MEDIA_RETRY,error:s})},onRetrySuccess:s=>{ee.logSuccessEvent({eventType:ze.GET_USER_MEDIA_RETRY}),ee.uploadEvent({log:`stat-${ze.GET_USER_MEDIA_RETRY}-success-${s}`})}});function Jh(s,i){return f(this,null,function*(){let t=(i?yield ut():yield tt()).find(r=>r.deviceId===s);t&&oe(t.getCapabilities)&&C.warn(mt(t.getCapabilities(),{keysToInclude:fn}))})}function m_(s){return{audio:p_(s),video:f_(s)}}function p_(s){if(!s.audio)return!1;if(s.useTrueAsConstraint)return!0;let i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:s.sampleRate};return!ei(s.microphoneId)&&(i.deviceId=s.useExactDeviceId?{exact:s.microphoneId}:s.microphoneId,s.useDeviceIdOnly)?i:(Y(s.channelCount)&&(i.channelCount=s.channelCount),he(s.echoCancellation)&&!s.echoCancellation&&(i.echoCancellation=!1),he(s.noiseSuppression)&&!s.noiseSuppression&&(i.noiseSuppression=!1),he(s.autoGainControl)&&!s.autoGainControl&&(i.autoGainControl=!1),ei(i)?!0:i)}function f_(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&&!ei(e)?e:(s.width&&(e.width={ideal:s.width},i&&!ae&&(e.width.max=s.width)),s.height&&(e.height={ideal:s.height},i&&!ae&&(e.height.max=s.height)),ae&&nt&&s.width&&s.height&&s.width*s.height<352*288&&(e.width=s.width,e.height=s.height),s.frameRate&&(e.frameRate=s.frameRate),ei(e)?!0:e)}var qh=h_;function da(s){return J((i,e)=>function(...t){return f(this,null,function*(){return yield s.apply(this,t),i.apply(this,t)})})}function je(s){return J((i,e)=>function(...t){return f(this,null,function*(){let r=yield i.apply(this,t);return yield s.call(this,...t),r})})}function la(s){return J((i,e)=>function(...t){return f(this,null,function*(){try{return yield i.apply(this,t)}catch(r){s.call(this,r)}})})}function J(s){return function(i,e,t){return t.value=s(t.value,e),t}}var jh=(()=>{let s=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&C.info(`visibility change: ${document.visibilityState}`),!s&&(document.addEventListener("visibilitychange",()=>{C.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),s=!0)}})();var __=0,ua=class{constructor(){c(this,"log",C.createLogger({id:`fq${++__}`}));c(this,"isRunning",!1);c(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,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()})}},Mo=new WeakMap,ha=new WeakMap;function ti(s=!1){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=Mo.get(this)||new ua;return Mo.set(this,n),n.push({fn:r,args:o,context:this},s)},t}}function Xh(s){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=Mo.get(this);if(n){let a=n.queue.filter((d,l)=>{if(l===0)return!0;let m=!0;return d.args.forEach(u=>{o.find(p=>p===u)||(m=!1)}),m?(d.reject(new b({code:S.API_CALL_ABORTED,message:s})),!1):!0});n.queue=a}return r.apply(this,o)},t}}function ma(s){return function(i,e,t){let r=t.value;return t.value=function(...o){var a,d,l;let n=[];return(d=(a=Mo.get(this))==null?void 0:a.queue)==null||d.forEach(m=>n.push(m)),(l=ha.get(this))==null||l.forEach(m=>m==null?void 0:m.queue.forEach(u=>n.push(u))),n.forEach(m=>{m.reject(new b({code:S.API_CALL_ABORTED,message:s}))}),Mo.delete(this),ha.delete(this),r.apply(this,o)},t}}function vi(s){return function(i,e,t){let r=t.value,o=n=>s(...n);return t.value=function(...n){let a=ha.get(this)||new Map,d=a.get(o(n))||new ua;return a.set(o(n),d),ha.set(this,a),d.push({fn:r,args:n,context:this})},t}}function it(s,i){return J((e,t)=>function(...r){let o=s;try{let n=e.apply(this,r),a=L();return Gi(n)?n.then(d=>(i?N.addSuccessEvent({key:o,cost:L()-a}):N.addSuccessEvent({key:o}),d)).catch(d=>{throw N.addFailedEvent({key:o,error:d}),d}):(N.addSuccessEvent({key:o}),n)}catch(n){throw N.addFailedEvent({key:o,error:n}),n}})}var Cr=class Cr extends Ar{constructor(e,t){super({mediaType:e,PlayerClass:t});c(this,"isRemote",!1);c(this,"deviceId");c(this,"groupId","");c(this,"label","");c(this,"_isRecapturing",!1);c(this,"_lastRecaptureTime",0);c(this,"_onMuteTimeoutId",-1);c(this,"_encodeCheckTimeoutId",-1);c(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){Be(e,e).add(h.MUTE,this.onTrackMuted).add(h.UNMUTE,this.onTrackUnmuted).add(h.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===h.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){Se(e)}setStateToCapture(){}capture(e){return f(this,null,function*(){var t;try{let r=L();E.emit(T.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 qh(e));let n=o.getTracks()[0];return yield this.setInputMediaStreamTrack(n),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),E.emit(T.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:L()-r}),o}catch(r){throw E.emit(T.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:r}),this.log.error(`getUserMedia error observed ${r}`),r}})}setInputMediaStreamTrack(e){return this.state===Q.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),E.emit(T.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return f(this,null,function*(){if(this.mediaTrack&&Qt){let{deviceId:e,groupId:t}=this.mediaTrack.getSettings(),{label:r}=this.mediaTrack;(yield Wh({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=r,t&&(this.groupId=t),sa().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===h.AUDIO&&!Gh(this.mediaTrack)||this.kind===h.VIDEO&&!$h(this.mediaTrack)||this._isRecapturing||e&&nt&&Ve)}onTrackMuted(){if(super.onTrackMuted(),jh(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<Gr){setTimeout(()=>this.onTrackMuted(),Gr);return}this._onMuteTimeoutId=setTimeout(()=>f(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((ve||pe)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return f(this,null,function*(){if(we(Cr.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<Gr){setTimeout(()=>this.onTrackEnded(),Gr);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return f(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 tt():yield ut()).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(T.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(o=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${o.message}`),this.emit("5",o),E.emit(T.LOCAL_TRACK_RECAPTURE,{track:this,error:o})})})}getRecoverCaptureDeviceId(){return f(this,null,function*(){let e=this instanceof Fe;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let r=(Lo.get(t)||0)+1;if(Lo.set(t,r),r>=3){let o=e?(yield ut()).find(n=>!Lo.has(n.deviceId)):(yield tt()).find(n=>!Lo.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)}};y([le(Q.INIT,"capture",{ignoreError:!0,sync:!0})],Cr.prototype,"setStateToCapture",1),y([ti()],Cr.prototype,"capture",1),y([le("capture","publish",{ignoreError:!0,success(){var t,r;this.room.localTracks.add(this),E.emit(T.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===h.AUDIO,l=this.stat.bytesSent>0;N[l?"addSuccessEvent":"addFailedEvent"]({key:d?503700:513702}),l||(N.addEnum({key:d?503701:513703,value:uo()}),ee.uploadEvent({log:`stat-encode-failed-${this.kind}-${mr()||Ei()}`,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})}}),it(521714,!1)],Cr.prototype,"publish",1),y([J(e=>function(){return f(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)})}),le([],"capture",{sync:!0})],Cr.prototype,"unpublish",1);var Ni=Cr,Lo=new Map;E.on(T.SWITCH_DEVICE_SUCCESS,s=>{s.track.deviceId&&Lo.delete(s.track.deviceId)});var Tt=class s extends Ni{constructor(e){super(1,aa);c(this,"mediaType",1);c(this,"volume",0);c(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});c(this,"playerMuted",!0);c(this,"pipeline");c(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});this.manager=e,this.pipeline=new ps(e),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}get dbVolume(){return Ir.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}get playerMediaTrack(){return this.mediaTrack}setInputMediaStreamTrack(e){return f(this,null,function*(){let t=this.trackSettings||{};N.addEnum({key:501701,value:t.channelCount||0,useUV:!1}),N.addEnum({key:501702,value:t.sampleRate||0,useUV:!1}),N.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 we(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 f(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===ar){if(yield Bd(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(T.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(){be&&!be.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&be.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),me(this.userId,{eventId:2003,param1:6,streamType:1});let t=yield tt();t[0]?this.recapture(t[0].deviceId):be.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(o){return f(this,arguments,function*({echoCancellation:e,noiseSuppression:t,autoGainControl:r}){let n=!1;!g(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,n=!0),!g(t)&&t!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=t,n=!0),!g(r)&&r!==this.profile.autoGainControl&&(this.profile.autoGainControl=r,n=!0),n&&this.deviceId&&(yield this.recapture(this.deviceId))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&N.addEnum({key:502700,value:2}),this.resetPlayerSource()}enableTrackANS(e){if(!this._inputTrack)return;let t=this._inputTrack.getConstraints();return t.noiseSuppression=e,this._inputTrack.applyConstraints(t).catch(r=>this._log.warn(`${e?"enable":"disable"} ANS failed `,r))}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}N.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.resetPlayerSource(),this.enableTrackANS(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.resetPlayerSource(),this.enableTrackANS(!0))}resetPlayerSource(){this.player.setSourceNode(this.pipeline.gain.node||this.pipeline.denoiser.node||this.pipeline.source.node)}close(){this.pipeline.remove(),be.off("audioInputAdded",this.handleMicrophoneAdded,this),be.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield we(s.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield tt()).find(o=>o.deviceId!==e);if(r)yield we(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 Di=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 pa=class{constructor(){c(this,"_seiMessageList",[]);c(this,"_smallSeiMessageList",[]);c(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 Di(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((p,_)=>p+_.dataView.byteLength,0),d=new ArrayBuffer(a+i.data.byteLength),l=new DataView(d),m=new DataView(i.data),u=0;for(let p=0;p<n.length;p++)for(let _=0;_<n[p].dataView.byteLength;_++)l.setInt8(u++,n[p].dataView.getInt8(_));for(let p=0;p<i.data.byteLength;p++)l.setInt8(u++,m.getInt8(p));return i.data=d,n.length}return 0}};var Rr=class Rr extends Ni{constructor(e,t=4){super(t,dt);c(this,"profile",{width:640,height:480,frameRate:15,bitrate:500});c(this,"preferFullFrame",!1);c(this,"_scaleResolutionDownBy");c(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});c(this,"small");c(this,"isNeedToSetBandwidth");c(this,"muteImage");c(this,"manager");c(this,"_seiCodec",new pa);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(M(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(!(!Qt||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return f(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,we(Rr.prototype,this,"setMute").call(this,!1)}else yield(o=this.manager)==null?void 0:o.deleteWatermark("mute"),this.muteImage=void 0,we(Rr.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&&pe&&pt&&(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&&jc&&(t.width=r?1280:720,t.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),this.preferFullFrame&&pt&&(gi||nt)&&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(M(v({},this.profile),{width:1920,height:1080})))}applyProfile(){return f(this,null,function*(){var r;if(!this.mediaTrack)return;let e=this.settings;if(!(!(e.height!==this.profile.height||e.width!==this.profile.width||e.frameRate!==this.profile.frameRate)||!this.deviceId)&&(at===16?yield this.recapture(this.deviceId):(yield(r=this.mediaTrack)==null?void 0:r.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))return this.isNeedToSetBandwidth=!1,this.room.setBandWidth({bandwidth:this.profile.bitrate,type:h.VIDEO,videoType:h.BIG})})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate};return Qt&&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:Tn()&&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 f(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(T.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(){be&&!be.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&be.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),me(this.userId,{eventId:2003,param1:7,streamType:2});let t=yield ut();t[0]?this.recapture(t[0].deviceId):be.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return f(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 g(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,t)}close(){be.off("videoInputAdded",this.handleCameraAdded,this),be.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield we(Rr.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield ut()).find(o=>o.deviceId!==e);if(r)yield we(Rr.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))}};y([je(function(e){this.setContentHint(e.contentHint||"motion")})],Rr.prototype,"capture",1);var Fe=Rr;var zh=ho();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:zh,exposeOrigin:!0,permittedOrigins:["*"]})}catch(s){}var S_=function(s){return f(this,null,function*(){let i=null,e=C_(s);C.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);s.systemAudio&&t.getAudioTracks().length===0&&(os&&Dt<74||Ve||ae)&&C.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){C.warn(`screen applyConstraints failed: ${o}`)}s.captureElement&&(yield I_(r,s.captureElement))}if(s.audio){let o=A_(s);C.info(`getUserMedia with constraints: ${JSON.stringify(o)}`),i=yield navigator.mediaDevices.getUserMedia(o),t.addTrack(i.getAudioTracks()[0])}return t})};function I_(s,i){return f(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)===zh))return;let r=yield CropTarget.fromElement(i);yield s.cropTo(r)}catch(t){C.warn(`cropTo target failed ${t}`)}})}function A_(s){let i={echoCancellation:s.echoCancellation,autoGainControl:s.autoGainControl,noiseSuppression:s.noiseSuppression,sampleRate:s.sampleRate,channelCount:s.channelCount};return g(s.microphoneId)||(i.deviceId=s.microphoneId),{audio:i,video:!1}}function C_(s){let i={preferCurrentTab:s.preferDisplaySurface==="current-tab"||!!s.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:Ve?{max:s.width}:{ideal:s.width,max:s.width},height:Ve?{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 Yh=S_;var rt=class extends Fe{constructor(e){super(e,2);c(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});c(this,"objectFit","contain");c(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}capture(m){return f(this,arguments,function*({systemAudio:e=!1,autoGainControl:t,echoCancellation:r,noiseSuppression:o,audioTrack:n,videoTrack:a,captureElement:d,preferDisplaySurface:l}){try{let u;return a||n?(u=new MediaStream,a&&u.addTrack(a),n&&u.addTrack(n)):u=yield Yh({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:l}),yield this.setInputMediaStreamTrack(u.getVideoTracks()[0]),u}catch(u){throw this.log.error(`getDisplayMedia error observed ${u}`),u instanceof b?u:new b({code:S.INITIALIZE_FAILED,name:u.name,message:u.message})}})}switchDevice(e){return f(this,null,function*(){throw new Error("Method not implemented.")})}};y([je(function(e){this.setContentHint(e.contentHint||"detail")})],rt.prototype,"capture",1);var ri=class extends Tt{constructor(i){super(i),this._log.id=`s-${this._log.id}`}};var R_="registerProcessor('dumper', class extends AudioWorkletProcessor {process(inputs) {this.port.postMessage(inputs);return true;}});",Hd;function Po(s){return f(this,null,function*(){let i=et("dump");Hd||(Hd=Sr(i,URL.createObjectURL(new Blob([R_],{type:"application/javascript"})))),yield Hd;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 fa=class extends ta{constructor(e){super();this.room=e;c(this,"_localAudioTrack");c(this,"_localScreenAudioTrack");c(this,"log",C.createLogger({id:"am"}));c(this,"denoiser");c(this,"mixChangedDebounce");c(this,"encodePipeline",[]);c(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId))}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}dump(e){var m,u;if(!this._localAudioTrack)return;let t=[],r=[];(m=this._localAudioPipline)!=null&&m.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 p=0;p<r.length;p++){let _=URL.createObjectURL(new Blob(n[p])),I=document.createElement("a");I.href=_,I.download=`${r[p]}.pcm`,I.style.display="none",document.body.appendChild(I),I.click(),URL.revokeObjectURL(_),I.remove()}clearTimeout(a),o.abort("download")},l=Po(t).then(p=>p.pipeTo(new WritableStream({write(_){_.forEach((I,R)=>n[R]=n[R]?n[R].concat(I[0]):[I[0]])}}),o).catch(_=>d));return{then:l.then.bind(l),download:d}}getPCM(e){var n;if(g(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 Po([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!g(this._localAudioTrack)}changeInput(e){if(e instanceof ri)return this._localScreenAudioTrack=e,e.pipeline.connect(),this.mixOnChange();if(e instanceof Tt)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),e.pipeline.connect(),this.mixOnChange();if(e instanceof Oi)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 ri?delete this._localScreenAudioTrack:e instanceof Tt?delete this._localAudioTrack:e instanceof Oi}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)}destroy(){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}};function _a(s=30,i=2){return J((e,t)=>function(...r){return new Promise((o,n)=>{let a=setTimeout(()=>{let d=new b({code:S.API_CALL_TIMEOUT,message:`checkPendingPromise ${t}() timeout ${s}s`});C.warn(d),i===2?n(d):i===1&&o()},s*1e3);e.apply(this,r).then(o,n).finally(()=>{clearTimeout(a)})})})}var ki=class ki extends Ar{constructor(e,t,r){super({userId:t.userId,sdkAppId:e.sdkAppId,mediaType:r,room:e});this.room=e;this.user=t;c(this,"tinyId");c(this,"isRemote",!0);c(this,"jitterBufferDelay",0);c(this,"_decodeCheckTimeoutId",-1);this.tinyId=t.tinyId}setMute(e){this.isAvailable&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isAvailable&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===ki.STATE_SUBSCRIBE}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===h.AUDIO;N[e?"addSuccessEvent":"addFailedEvent"]({key:r?504700:514702}),e||(N.addEnum({key:r?504701:514703,value:uo()}),ee.uploadEvent({log:`stat-decode-failed-${this.kind}-${mr()||Ei()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===h.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.isAvailable||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isAvailable} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.updatePlayingState(this.isAvailable)}onTrackMuted(){this.isAvailable&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackMuted()}onTrackUnmuted(){this.isAvailable&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackUnmuted()}onTrackEnded(){this.isAvailable&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackEnded()}};c(ki,"STATE_SUBSCRIBE","subscribe"),y([_a(5,1)],ki.prototype,"waitHasMediaTrack",1),y([le(Q.INIT,ki.STATE_SUBSCRIBE,{success(){var t,r;this.log.info("subscribed"),E.emit(T.REMOTE_TRACK_SUBSCRIBED,{track:this}),this.updatePlayingState(!0),!((((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState)&&(this._decodeCheckTimeoutId=setTimeout(()=>{var n,a;if(!((((a=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:a.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState)&&this.isSubscribed&&this.isPlayCalled&&this.stat.bytesReceived>0){let d=this.kind===h.AUDIO,l=this.player.isPlaying||(d?this.getAudioLevel()>0:this.stat.framesDecoded>0);this.reportDecodeResult(l)}},5e3),this.player.once(ce.ERROR,o=>{o.code===MediaError.MEDIA_ERR_DECODE&&(clearTimeout(this._decodeCheckTimeoutId),this.reportDecodeResult(!1,3))}))},ignoreError:!0}),it(521716,!1)],ki.prototype,"subscribe",1),y([le(ki.STATE_SUBSCRIBE,Q.INIT,{sync:!0,success(){this.log.info("unsubscribed"),this.updatePlayingState(!1),E.emit(T.REMOTE_TRACK_UNSUBSCRIBED,{track:this}),clearTimeout(this._decodeCheckTimeoutId)}})],ki.prototype,"unsubscribe",1);var _s=ki;var Oi=class extends _s{constructor(e,t){super(e,t,1);c(this,"volume",0);c(this,"mediaType",1);c(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return Ir.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 isAvailable(){return this.user.muteState.audioAvailable}};var b_=[-1,-1,1,-1,-1,1,1,1],N_=[0,0,1,0,0,1,1,1];var Xe=class extends Q{constructor(e,t){super();this.context=e;c(this,"name");c(this,"input");c(this,"output");c(this,"texture");c(this,"ctx2d",null);c(this,"fbo");c(this,"width",0);c(this,"height",0);c(this,"x",0);c(this,"y",0);c(this,"program");c(this,"vertexShader");c(this,"fragmentShader");c(this,"totalFrames",0);c(this,"dropFrames",0);c(this,"matchInputSize",!0);c(this,"texCoordBuffer");c(this,"positionBuffer");c(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});c(this,"cost",0);c(this,"_canvas",null);c(this,"_image");c(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 He){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&at!==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(N_),this.positionBuffer=this.createBuffer(b_),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 b({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 ke&&this.render(e)||this.context instanceof He&&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 ke){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,l=Date.now(),m=(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:m,name:a,cost:d},v({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}};y([le(Q.INIT,"connected",{sync:!0})],Xe.prototype,"connect",1),y([le("connected",Q.INIT,{ignoreError:!0,sync:!0})],Xe.prototype,"disconnect",1),y([le([],"closed",{sync:!0})],Xe.prototype,"close",1);var bl={};ci(bl,{Events:()=>fe,Inspect:()=>Et,LastSink:()=>yr,Sink:()=>F,Subscribe:()=>br,TimeoutError:()=>wo,audit:()=>lg,bindCallback:()=>Q_,bindNodeCallback:()=>z_,buffer:()=>V_,bufferCount:()=>U_,bufferTime:()=>Dg,call:()=>Zh,catchError:()=>Uo,combineLatest:()=>tm,concat:()=>M_,concatMap:()=>Ig,concatMapTo:()=>Ag,count:()=>Z_,create:()=>Z,debounce:()=>ug,debounceTime:()=>hg,defer:()=>im,delay:()=>Og,deliver:()=>$,dispose:()=>ga,elementAt:()=>mg,empty:()=>vr,every:()=>Tg,exhaustMap:()=>yg,exhaustMapTo:()=>bg,filter:()=>Aa,find:()=>pg,findIndex:()=>fg,first:()=>_g,fromAnimationFrame:()=>j_,fromArray:()=>H_,fromEvent:()=>Ie,fromEventPattern:()=>$_,fromFetch:()=>G_,fromIterable:()=>W_,fromPromise:()=>om,fromReadableStream:()=>q_,fromReader:()=>J_,groupBy:()=>Ng,identity:()=>v_,ignoreElements:()=>rg,iif:()=>P_,inspect:()=>em,interval:()=>jd,last:()=>gg,map:()=>Al,mapTo:()=>Sg,max:()=>eg,merge:()=>O_,mergeMap:()=>Cg,mergeMapTo:()=>Rg,min:()=>tg,never:()=>Y_,nothing:()=>se,of:()=>F_,pairwise:()=>Eg,pipe:()=>_e,race:()=>k_,range:()=>X_,reduce:()=>Qd,retry:()=>Pg,scan:()=>Il,share:()=>Mi,shareReplay:()=>L_,skip:()=>og,skipUntil:()=>ng,skipWhile:()=>Ca,startWith:()=>Nr,subject:()=>st,subscribe:()=>Ne,sum:()=>ig,switchMap:()=>Zi,switchMapTo:()=>xo,take:()=>Li,takeLast:()=>sg,takeUntil:()=>xe,takeWhile:()=>nm,tap:()=>yl,throttle:()=>cg,throwError:()=>K_,timeInterval:()=>vg,timeout:()=>Lg,timer:()=>Xd,toPromise:()=>kg,toReadableStream:()=>Mg,withLatestFrom:()=>x_,zip:()=>w_});function se(...s){}var Zh=s=>s(),v_=s=>s;function ga(){this.dispose()}var em=()=>typeof __FASTRX_DEVTOOLS__!="undefined",D_=1,Et=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(i){let e=new Gd(i,this,this.streamId++);return fe.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},yr=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=se,this.error=se,this.next=se,this.dispose=se,this.subscribe=se,this.doDefer()}subscribe(i){return i instanceof Et?i.subscribe(this):i(this),this}get bindSubscribe(){return i=>this.subscribe(i)}doDefer(){this.defers.forEach(Zh),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}},F=class extends yr{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)}},br=class extends yr{constructor(i,e=se,t=se,r=se){if(super(),this._next=e,this._error=t,this._complete=r,this.then=se,i instanceof Et){let o={toString:()=>"subscribe",id:0,source:i};this.defer(()=>{fe.defer(o,0)}),fe.create(o),fe.pipe(o),this.sourceId=o.id,this.subscribe(i),fe.subscribe({id:o.id,end:!0}),e==se?this._next=n=>fe.next(o,0,n):this.next=n=>{fe.next(o,0,n),e(n)},r==se?this._complete=()=>fe.complete(o,0):this.complete=()=>{this.dispose(),fe.complete(o,0),r()},t==se?this._error=n=>fe.complete(o,0,n):this.error=n=>{this.dispose(),fe.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 _e(s,...i){return i.reduce((e,t)=>t(e),s)}function Z(s,i,e){if(em()){let t=Object.defineProperties(Object.setPrototypeOf(s,Et.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}});fe.create(t);for(let r=0;r<e.length;r++){let o=e[r];typeof o=="function"&&o instanceof Et&&fe.addSource(t,o)}return t}return s}function $(s,i){return function(...e){return t=>{if(t instanceof Et){let r=Z(o=>{let n=new s(o,...e);n.sourceId=r.id,n.subscribe(t)},i,arguments);return r.source=t,fe.pipe(r),r}else return r=>t(new s(r,...e))}}}function Ki(s,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:s,payload:i}})}var Gd=class extends F{constructor(i,e,t){super(i),this.source=e,this.id=t,this.sourceId=i.sourceId,this.defer(()=>{fe.defer(this.source,this.id)})}next(i){fe.next(this.source,this.id,i),this.sink.next(i)}complete(){fe.complete(this.source,this.id),this.sink.complete()}error(i){fe.complete(this.source,this.id,i),this.sink.error(i)}},fe={addSource(s,i){Ki("addSource",{id:s.id,name:s.toString(),source:{id:i.id,name:i.toString()}})},next(s,i,e){Ki("next",{id:s.id,streamId:i,data:e&&e.toString()})},subscribe({id:s,end:i},e){Ki("subscribe",{id:s,end:i,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(s,i,e){Ki("complete",{id:s.id,streamId:i,err:e?e.toString():null})},defer(s,i){Ki("defer",{id:s.id,streamId:i})},pipe(s){Ki("pipe",{name:s.toString(),id:s.id,source:{id:s.source.id,name:s.source.toString()}})},update(s){Ki("update",{id:s.id,name:s.toString()})},create(s){s.id||(s.id=D_++),Ki("create",{name:s.toString(),id:s.id})}},wo=class extends Error{constructor(i){super(`timeout after ${i}ms`),this.timeout=i}};var Ta=class extends yr{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 Mi(){return s=>{let i=new Ta(s);if(s instanceof Et){let e=Z(t=>{i.add(t)},"share",arguments);return i.sourceId=e.id,e.source=s,fe.pipe(e),e}return Z(i.add.bind(i),"share",arguments)}}function O_(...s){return Z(i=>{let e=new F(i),t=s.length;e.complete=()=>{--t===0&&i.complete()},s.forEach(e.bindSubscribe)},"merge",arguments)}function k_(...s){return Z(i=>{let e=new Map;s.forEach(t=>{let r=new F(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 M_(...s){return Z(i=>{let e=0,t=s.length,r=new F(i);r.complete=()=>{e<t&&!r.disposed?(r.doDefer(),r.subscribe(s[e++])):i.complete()},r.complete()},"concat",arguments)}function L_(s){return i=>{let e=new Ta(i),t=[];return e.next=function(r){t.push(r),t.length>s&&t.shift(),this.sinks.forEach(o=>o.next(r))},Z(r=>{r.defer(()=>e.remove(r)),t.forEach(o=>r.next(o)),e.add(r)},"shareReplay",arguments)}}function P_(s,i,e){return Z(t=>s()?i(t):e(t),"iif",arguments)}function tm(...s){return Z(i=>{let e=s.length,t=e,r=e,o=new Array(e),n=()=>{--r===0&&i.complete()},a=(d,l)=>{let m=new F(i);m.next=u=>{--t===0?(m.next=p=>{o[l]=p,i.next(o)},m.next(u)):o[l]=u},m.complete=n,m.subscribe(d)};s.forEach(a)},"combineLatest",arguments)}function w_(...s){return Z(i=>{let e=s.length,t=e,r=new Array(e),o=()=>{--t===0&&i.complete()},n=(a,d)=>{let l=new F(i),m=[];r[d]=m,l.next=u=>{m.push(u),r.every(p=>p.length)&&i.next(r.map(p=>p.shift()))},l.complete=o,l.subscribe(a)};s.forEach(n)},"zip",arguments)}function Nr(...s){return i=>Z((e,t=0,r=s.length)=>{for(;t<r&&!e.disposed;)e.next(s[t++]);e.disposed||e.subscribe(i)},"startWith",arguments)}var Wd=class extends F{constructor(i,...e){super(i);let t=new F(this.sink);t.next=r=>this.buffer=r,t.complete=se,t.subscribe(tm(...e))}next(i){this.buffer&&this.sink.next([i,...this.buffer])}},x_=$(Wd,"withLatestFrom"),Jd=class extends F{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()}},U_=$(Jd,"bufferCount"),qd=class extends F{constructor(i,e){super(i),this.buffer=[];let t=new F(i);t.next=r=>{i.next(this.buffer),this.buffer=[]},t.complete=se,t.subscribe(e)}next(i){this.buffer.push(i)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},V_=$(qd,"buffer");var B_=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(m){try{l(t.next(m))}catch(u){n(u)}}function d(m){try{l(t.throw(m))}catch(u){n(u)}}function l(m){m.done?o(m.value):r(m.value).then(a,d)}l((t=t.apply(s,i||[])).next())})};function st(s){let i=arguments,e=Mi()(Z(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=se,e.complete=se,e.error=se,e}function im(s){return Z(i=>i.subscribe(s()),"defer",arguments)}var rm=s=>i=>{setTimeout(()=>s(i))},sm=s=>rm(i=>{for(let e=0;!i.disposed&&e<s.length;e++)i.next(s[e]);i.complete()});function F_(...s){return Z(sm(s),"of",arguments)}function H_(s){return Z(sm(s),"fromArray",arguments)}function jd(s){return Z(i=>{let e=0,t=setInterval(()=>i.next(e++),s);return i.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function Xd(s,i){return Z(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 Ea(s,i){return e=>{let t=r=>e.next(r);e.defer(()=>i(t)),s(t)}}function $_(s,i){return Z(Ea(s,i),"fromEventPattern",arguments)}function Ie(s,i){if("on"in s&&"off"in s)return Z(Ea(e=>s.on(i,e),e=>s.off(i,e)),"fromEvent",arguments);if("addListener"in s&&"removeListener"in s)return Z(Ea(e=>s.addListener(i,e),e=>s.removeListener(i,e)),"fromEvent",arguments);if("addEventListener"in s)return Z(Ea(e=>s.addEventListener(i,e),e=>s.removeEventListener(i,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function om(s){return Z(i=>{s.then(i.next.bind(i),i.error.bind(i))},"fromPromise",arguments)}function G_(s,i){return Z(im(()=>om(fetch(s,i))),"fromFetch",arguments)}function W_(s){return Z(rm(i=>{try{for(let e of s){if(i.disposed)return;i.next(e)}i.complete()}catch(e){i.error(e)}}),"fromIterable",arguments)}function J_(s){let i=e=>B_(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 Z(e=>{i(e)},"fromReader",arguments)}function q_(s){return Z(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 j_(){return Z(s=>{let i=requestAnimationFrame(function e(t){s.disposed||(s.next(t),i=requestAnimationFrame(e))});s.defer(()=>cancelAnimationFrame(i))},"fromAnimationFrame",arguments)}function X_(s,i){return Z((e,t=s,r=i+s)=>{for(;t<r&&!e.disposed;)e.next(t++);return e.complete(),"range"},"range",arguments)}function Q_(s,i,...e){return Z(t=>{let r=e.concat(o=>(t.next(o),t.complete()));s.apply(i,r)},"bindCallback",arguments)}function z_(s,i,...e){return Z(t=>{let r=e.concat((o,n)=>o?t.error(o):(t.next(n),t.complete()));s.apply(i,r)},"bindNodeCallback",arguments)}function Y_(){return Z(()=>{},"never",arguments)}function K_(s){return Z(i=>i.error(s),"throwError",arguments)}function vr(){return Z(s=>s.complete(),"empty",arguments)}var Dr=class extends F{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)}},Qd=$(Dr,"reduce"),Z_=s=>$(Dr,"count")((i,e)=>s(e)?i+1:i,0),eg=()=>$(Dr,"max")(Math.max),tg=()=>$(Dr,"min")(Math.min),ig=()=>$(Dr,"sum")((s,i)=>s+i,0);var zd=class extends F{constructor(i,e,t){super(i),this.filter=e,this.thisArg=t}next(i){this.filter.call(this.thisArg,i)&&this.sink.next(i)}},Aa=$(zd,"filter"),Yd=class extends F{next(i){}},rg=$(Yd,"ignoreElements"),Kd=class extends F{constructor(i,e){super(i),this.count=e}next(i){this.sink.next(i),--this.count===0&&this.complete()}},Li=$(Kd,"take"),Zd=class extends F{constructor(i,e){super(i);let t=new F(i);t.next=()=>i.complete(),t.complete=ga,t.subscribe(e)}},xe=$(Zd,"takeUntil"),el=class extends F{constructor(i,e){super(i),this.f=e}next(i){this.f(i)?this.sink.next(i):this.complete()}},nm=$(el,"takeWhile"),sg=s=>Qd((i,e)=>(i.push(e),i.length>s&&i.shift(),i),[]),tl=class extends F{constructor(i,e){super(i),this.count=e}next(i){--this.count===0&&(this.next=super.next)}},og=$(tl,"skip"),il=class extends F{constructor(i,e){super(i),i.next=se;let t=new F(i);t.next=()=>{t.dispose(),i.resetNext()},t.complete=ga,t.subscribe(e)}},ng=$(il,"skipUntil"),rl=class extends F{constructor(i,e){super(i),this.f=e}next(i){this.f(i)||(this.next=super.next,this.next(i))}},Ca=$(rl,"skipWhile"),ag={leading:!0,trailing:!1},sl=class extends F{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)}},Sa=class extends F{constructor(i,e,t=ag){super(i),this.durationSelector=e,this.config=t,this._throttle=new sl(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=se,this._throttle.complete(),super.complete()}},cg=$(Sa,"throttle"),dg={leading:!1,trailing:!0},lg=s=>$(Sa,"audit")(s,dg),ol=class extends F{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},Ia=class extends F{constructor(i,e){super(i),this.durationSelector=e,this._debounce=new ol(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()}},ug=$(Ia,"debounce"),hg=s=>$(Ia,"debounceTime")(i=>Xd(s)),nl=class extends F{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()}},mg=$(nl,"elementAt"),pg=s=>i=>Li(1)(Ca(e=>!s(e))(i)),al=class extends F{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}},fg=$(al,"findIndex"),cl=class extends F{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()}},_g=$(cl,"first"),dl=class extends F{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()}},gg=$(dl,"last"),ll=class extends F{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()}},Tg=$(ll,"every");var ul=class extends F{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))}},Il=$(ul,"scan"),hl=class extends F{constructor(){super(...arguments),this.hasLast=!1}next(i){this.hasLast?this.sink.next([this.last,i]):this.hasLast=!0,this.last=i}},Eg=$(hl,"pairwise"),Ra=class extends F{constructor(i,e,t){super(i),this.mapper=e,this.thisArg=t}next(i){super.next(this.mapper.call(this.thisArg,i))}},Al=$(Ra,"map"),Sg=s=>$(Ra,"mapTo")(i=>s),gs=class extends F{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()}},Ts=class extends F{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()}},ya=class extends gs{},ba=class extends Ts{next(i){this.subInner(i,ya),this.next=e=>{this.currentSink.dispose(),this.subInner(e,ya)}}},Zi=$(ba,"switchMap");function Oa(s){return(i,e)=>s(()=>i,e)}var xo=Oa($(ba,"switchMapTo")),ml=class extends gs{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},Na=class extends Ts{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(),ml),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},Ig=$(Na,"concatMap"),Ag=Oa($(Na,"concatMapTo")),pl=class extends gs{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},va=class extends Ts{constructor(){super(...arguments),this.inners=new Set}next(i){this.subInner(i,pl),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(i=>i.resetComplete()):this.dispose()}},Cg=$(va,"mergeMap"),Rg=Oa($(va,"mergeMapTo")),fl=class extends gs{dispose(){this.context.resetNext(),super.dispose()}},Da=class extends Ts{next(i){this.next=se,this.subInner(i,fl)}},yg=$(Da,"exhaustMap"),bg=Oa($(Da,"exhaustMapTo")),_l=class extends F{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=st(),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)}},Ng=$(_l,"groupBy"),gl=class extends F{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}},vg=$(gl,"timeInterval"),Tl=class extends F{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()}},Dg=$(Tl,"bufferTime"),El=class extends F{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)}},Og=$(El,"delay"),Sl=class extends F{constructor(i,e){super(i),this.selector=e}error(i){this.dispose(),this.selector(i)(this.sink)}},Uo=$(Sl,"catchError");var kg=()=>s=>new Promise((i,e)=>{let t;new br(s,r=>t=r,e,()=>i(t))}),Mg=()=>s=>{let i;return new ReadableStream({start(e){i=new br(s,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){i.dispose()}})},Ne=(s=se,i=se,e=se)=>t=>new br(t,s,i,e),Cl=class extends F{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)}))}},yl=$(Cl,"tap"),Rl=class extends F{constructor(i,e){super(i),this.timeout=e,this.id=setTimeout(()=>this.error(new wo(this.timeout)),this.timeout)}next(i){super.next(i),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},Lg=$(Rl,"timeout"),Pg=(s=1/0)=>i=>{if(i instanceof Et){let e=Z(t=>{let r=s,o=new F(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,fe.pipe(e),e}else return e=>{let t=s,r=new F(e);r.error=o=>{t-- >0?i(r):e.error(o)},i(r)}};var wg=_e(jd(250),Al(()=>performance.now()),Mi());var am=s=>i=>{let e=performance.now();_e(wg,Ca(t=>t-e<s),Li(1))(i)};var Ug=[0,1,1,1,0,0,1,0],Or=class extends Xe{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t));c(this,"_intervalId",0);c(this,"_sequence",0);c(this,"checkGLError",!1);c(this,"checkVisibilityChange");e instanceof He?this.ctx2d=e.ctx||null:e.available&&(t!=null&&t.mirrorUpAndDown)&&this.setTexBuffer(Ug)}start(e){this.log.info(`${this.name} start render ${e} fps`),re.clearTask(this._intervalId),this._intervalId=re.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(re.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof ke){let r=this.context.ctx.getError();r&&this.context.destroy(new b({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&&(re.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),re.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),re.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},Es=class extends Or{constructor(e,t){super(e,t);c(this,"_videoTrack");c(this,"_muteOb");c(this,"_closedOb",Ie(this,"closed"));c(this,"_subscription");c(this,"_canvasContainer");Number(Ji)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=Ie(this._videoTrack,"mute"),_e(Ie(this._videoTrack,"ended"),xe(this._closedOb),Ne(()=>{this.context.destroy(new b({code:S.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=_e(this._muteOb,xe(this._closedOb),xo(am(5e3)),Ne(()=>{var e;(e=this._videoTrack)!=null&&e.muted&&this.context.destroy(new b({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()}},ka=class extends Es{render(i){var e;return!!((e=this.input)!=null&&e.requestFrame(i))}};var Ma=class extends Es{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 Vo=class extends Xe{constructor(e,t){super(e,v({name:"imageSource"},t));c(this,"_lastImage");c(this,"_totalFrames",0);c(this,"_autoResize",!1);c(this,"_canvasRendered");c(this,"_videoCallbackId",0);this._autoResize=(t==null?void 0:t.autoResize)!==!1,at===16&&(this._canvasRendered=st(),_e(this._canvasRendered,Nr(this._image),Zi(r=>r instanceof HTMLCanvasElement?Ie(r,"rendered"):vr()),xe(Ie(this,"closed")),Ne(()=>{this.update()})))}tryVideoFrameCallback(e){this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),Er()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((t,r)=>{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(n),{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)}},Bo=class extends Vo{constructor(e,t,r){super(e,r);this._player=t;this.name="videoPlayerSource",_e(Ie(this._player,ce.PLAYER_STATE_CHANGED),xe(Ie(this,"closed")),Aa(({state:o})=>o==="PLAYING"),Ne(()=>{this.tryVideoFrameCallback(this._player.element)}))}get image(){return this._player.element}},Pi=class extends Bo{constructor(i,e,t){super(i,new dt({id:t.name,track:e,muted:!0,container:null,objectFit:"contain",log:t.logger}),t),this.name="videoTrackSource",this._player.play()}replaceTrack(i){this._player.setTrack(i),this._player.play()}close(){super.close(),this._player.stop()}};var Bg=`
|
|
31
|
+
`,r.onclick=this.onQuestionClick.bind(this);let o=document.createElement("div");o.className=Vl,o.innerText=`${hr()?"\u8BE6\u60C5 >":"Detail >"}`,o.onclick=this.onCollapseClick.bind(this);let s=t.content.firstChild,n=s.querySelector(`.${td}`);return n.appendChild(o),n.appendChild(r),n.appendChild(e),s}addDiaLog(){Fl()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${ks}`).onclick=t=>t.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",B.info("show autoplay dialog"),$e.uploadEvent({log:N_}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){B.warn("confirm clicked, try resume stream"),H.emit(L.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let t=this._dialogNode.querySelector(`.${Hh}`);t.style.visibility=`${this._showDetail?"hidden":"visible"}`,t.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||$e.uploadEvent({log:D_}),this._isCollapseClicked=!0}onQuestionClick(){window.open(qh,"_blank"),this._isQuestionClicked||$e.uploadEvent({log:w_}),this._isQuestionClicked=!0}},Jh=Bl;var Yt=class extends $r{constructor(e){super(e,D.VIDEO);u(this,"stat",{});u(this,"_calculateTimeout",-1);u(this,"viewMirror",!1);u(this,"objectFit");u(this,"container");u(this,"canvas");u(this,"canvasTrack");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,$(e.viewMirror)||(this.viewMirror=e.viewMirror),$(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}initializeElement(){var r;let e=document.createElement(D.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,(r=this.container)==null||r.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 r;this.container=e,(this.track||this.canvasTrack)&&this.elementToRender&&((r=this.container)==null||r.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(D.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(D.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var r;super.handleTrackEvent(e),e.type===D.MUTE&&((r=this.stat)!=null&&r.fps)&&(this.stat.fps=0)}handleElementEvent(e){var o;if(this.mode===2)return;super.handleElementEvent(e);let r=e.type;if(r===D.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(o=this.container)==null?void 0:o.id}`),this._pausedRetryCount>0&&!Fl()&&(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 s=this.element.style.transform;r===D.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=s.replace("scaleX(-1)",""):r===D.LEAVE_PICTURE_IN_PICTURE&&!s.includes("scaleX")&&(this.element.style.transform=`${s} scaleX(-1)`)}}setCanvas(e,r=1){var o,s,n,d;this.canvas!==e&&((o=this.canvas)==null||o.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?r:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((s=this.element)==null||s.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((d=this.container)==null||d.appendChild(this.element)))}setAttr(e){let r=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);r.style=Object.assign({width:"100%",height:"100%"},r.style),super.setAttr(r)}get mirror(){return this.viewMirror}setRect(e,r){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${r}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}stop(e=0){var r;super.stop(e),(r=this.canvas)==null||r.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(Xe.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(Do()&&this.element&&this._calculateTimeout<0){let e=0,r=null,o=(s,n)=>{this.stat.width=n.width,this.stat.height=n.height,r&&(this.stat.fps=Math.round((n.presentedFrames-r.presentedFrames)/(s-e)*1e3)),e=s,r=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var d;return(d=this.element)==null?void 0:d.requestVideoFrameCallback(o)},2e3))};this.element.requestVideoFrameCallback(o)}}catch(e){this._log.warn("init stat failed",e)}}};function Mo(i,t){return y(this,null,function*(){if(!i.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield i.audioWorklet.addModule(t),B.info("worklet addModule success")}catch(e){throw B.info(`worklet addModule catch error. ${e.message}`),e}})}var la;typeof AudioContext!="undefined"?la=AudioContext:typeof webkitAudioContext!="undefined"?la=webkitAudioContext:typeof mozAudioContext!="undefined"&&(la=mozAudioContext);var Ir,zh=-1;Xh();function Xh(){try{if(Ir)return;Ir=new la({sampleRate:48e3}),Ir.onstatechange=()=>{B.info(`context state: ${Ir.state}${Ir.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),Ls()},clearTimeout(zh)}catch(i){B.error(`initAudioContext failed: ${i} typeof AudioContextClass: ${typeof la}`),zh=setTimeout(Xh,1e3)}}var Ls=()=>{Ir.state==="suspended"?(Us(),document.addEventListener("click",Ls)):Ir.state==="interrupted"?Us():(document.removeEventListener("visibilitychange",Ls),document.removeEventListener("click",Ls))},Hl=0,Wl=-1;function Us(){return new Promise((i,t)=>{if(Ir.state==="running")return i();Date.now()-Hl<1e3?(clearTimeout(Wl),Wl=setTimeout(()=>{Hl=Date.now(),Ir.resume().then(i,t)},1e3)):(clearTimeout(Wl),Hl=Date.now(),Ir.resume().then(i,t))}).catch(i=>{B.warn(`context resume failed: ${i}`),document.addEventListener("visibilitychange",Ls)})}document.addEventListener("click",Ls);var et=i=>Ir;var xt=class{constructor(){u(this,"node");u(this,"node2");u(this,"pre",new Set);u(this,"next",new Set);u(this,"context");u(this,"connectedNodes",new Set)}setContext(t){this.context=t,this.node&&t.addMixWeight()}removeContext(){var t;this.node&&((t=this.context)==null||t.reduceMixWeight()),delete this.context}replaceNode(t){var e;if(t!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=t,this.preNodeReconnect(),this.reconnect()}catch(r){B.error(r)}}setNode(t,e){var r;if(!this.node)try{(r=this.context)==null||r.addMixWeight(),this.node=t,e&&(this.node2=e),this.preNodeReconnect(),this.reconnect(),Y.addSuccessEvent({key:502701})}catch(o){B.error(o),Y.addFailedEvent({key:502701,error:o})}}deleteNode(){var t;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(t=this.context)==null||t.reduceMixWeight(),this.preNodeReconnect(),Y.addSuccessEvent({key:502702})}catch(e){B.error(e),Y.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(t=>{t.node?t.reconnect():t.preNodeReconnect()})}connectNext(t){this.next.forEach(e=>{t._connect(e.node)||e.connectNext(t)})}_connect(t){return!this.node||!t?!1:((this.node2||this.node).connect(t),this.connectedNodes.add(t),!0)}_disconnect(){this.connectedNodes.forEach(t=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(t)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(...t){return t.forEach(e=>{this.next.add(e),e.pre.add(this)}),this}},id=class extends xt{constructor(e=256){super();this.fftSize=e;u(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(),r=1,o=0,s=0,n=`M${o},${s}`;for(let d=0;d<e.length;d++)s=e[d]/128*100/2,n+=`L${o},${s}`,o+=r;return n}},ma=class{constructor(){u(this,"source",new xt);u(this,"gain",new xt);u(this,"destination",new xt)}get volume(){var t;return((t=this.gain.node)==null?void 0:t.gain.value)||1}setVolume(t){if(t===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(et().createGain()),this.gain.node.gain.value=t}replaceSource(t){this.source.replaceNode(Gl(t))}get track(){var t;return(t=this.stream)==null?void 0:t.getAudioTracks()[0]}get stream(){var t;return(t=this.destination.node)==null?void 0:t.stream}},Vs=class extends ma{constructor(e){super();this.context=e;u(this,"denoiser",new xt);u(this,"voiceChanger",new xt);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}},od=class{constructor(){u(this,"audioContext",et("audio-mixer"));u(this,"destination",this.audioContext.createMediaStreamDestination());u(this,"inputs",new Set);u(this,"mixWeight",0);this.destination.channelCount=1}addMixWeight(t=1){this.mixWeight+=t,this.mixWeight-1===t+1>>1&&this.mixOnChange()}reduceMixWeight(t=1){this.addMixWeight(-t)}close(){this.inputs.forEach(t=>t.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},Qh=new WeakMap;function Gl(i){let t=Qh.get(i);if(t)return t;let e=et();if(i instanceof HTMLAudioElement)t=e.createMediaElementSource(i);else if(i instanceof MediaStreamTrack)t=e.createMediaStreamSource(new MediaStream([i]));else return i;return Qh.set(i,t),t}var Zt=class Zt{constructor(t){u(this,"_volume",0);u(this,"_volumeDb",0);u(this,"_log");u(this,"_scriptProcessorNode",null);u(this,"_audioWorkletNode",null);u(this,"_interval",200);u(this,"ready",this.preload());let{log:e}=t;this._log=e,H.on(L.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-Zt.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!Zt.workletReady){let t='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);';Zt.workletReady=Mo(Zt.audioContext,URL.createObjectURL(new Blob([t],{type:"application/javascript"})))}return Zt.workletReady.then(()=>this.initAudioWorklet()).catch(t=>(this._log.error(`volumeMeter preload error: ${t}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(Zt.audioContext,"volume-meter");let t=!1;this._audioWorkletNode.port.onmessage=e=>{Zt.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||0,!t&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),t=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(t){this._log.error(`volumeMeter init audio worklet error: ${t}`),$e.logFailedEvent({userId:this._log.userId,eventType:zr.LOAD_WORKLET,error:t}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=et("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=t=>{Zt.lastMessageTime=Date.now();let e=t.inputBuffer.getChannelData(0),r=0;for(let o=0;o<e.length;++o)r+=e[o]*e[o];this._volume=Math.sqrt(r/e.length)||0}}catch(t){this._log.error(`volumeMeter init script processor error: ${t}`)}}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,H.off(L.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(t){var r;let{interval:e}=t;this._interval=e,(r=this._audioWorkletNode)==null||r.port.postMessage({name:"setIntervalTime",intervalTime:e})}};u(Zt,"lastMessageTime",0),u(Zt,"audioContext",et("volume-meter")),u(Zt,"workletReady");var sd=Zt,nd=class extends xt{constructor(e){super();u(this,"_volumeMeter");this._volumeMeter=new sd(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return y(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 r=e.allocationSize({planeIndex:0}),o=new Float32Array(r>>2);e.copyTo(o,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:o},[o.buffer]),e.close()}}},ad=sd;var ef=Di(Ui(),1);var Zh=i=>t=>t.deviceId===i;var pa=class{constructor(t,e="Input"){u(this,"kind");u(this,"type");u(this,"devices",[]);this.kind=t,this.type=e}update(t,e){let r=t.filter(o=>o.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&Bs(this.devices[0])){this.devices=r;return}e&&(r.forEach(o=>{if(o.deviceId&&!this.devices.find(Zh(o.deviceId))){let s=`${this.kind}${this.type}Added`;B.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}}),this.devices.forEach(o=>{if(o.deviceId&&!r.find(Zh(o.deviceId))){let s=`${this.kind}${this.type}Removed`;B.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}})),this.devices=r}hasDevice(t){return!!this.devices.find(e=>e.deviceId===t)}},jl=class extends ef.EventEmitter{constructor(){super();u(this,"audioInputs",new pa(D.AUDIO));u(this,"videoInputs",new pa(D.VIDEO));u(this,"audioOutputs",new pa(D.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||St.run("interval",()=>{this.update()},{delay:1e4}))}init(){cd().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return y(this,arguments,function*(e=0){let r=yield cd(e);return this.audioInputs.update(r,this),this.videoInputs.update(r,this),this.audioOutputs.update(r,this),this})}},Et=Sn||ds?null:new jl;function Bs(i){return i.deviceId===i.groupId&&i.groupId===""}function cd(){return y(this,arguments,function*(i=0){if(si()||!Zc())return[];let t=yield navigator.mediaDevices.enumerateDevices();if(i!==0){let e={audio:!1,video:!1};if(t.forEach(r=>{Bs(r)&&(r.kind===D.AUDIO_INPUT?e.audio=!0:r.kind===D.VIDEO_INPUT&&(e.video=!0))}),i===2&&(e.audio=!1),i===1&&(e.video=!1),e.audio||e.video){let r;try{r=yield navigator.mediaDevices.getUserMedia(e),e.audio&&Us()}catch(o){B.debug("capture before getDevices failed: ",o)}t=yield navigator.mediaDevices.enumerateDevices(),r==null||r.getTracks().forEach(o=>o.stop())}}return t.map((e,r)=>{let o={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${r}`};return e.deviceId.length>0&&ql.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(o.getCapabilities=()=>e.getCapabilities()),o})})}function Jt(i=!1){return Et.update(i?1:0).then(t=>t.audioInputs.devices)}function Kt(i=!1){return Et.update(i?2:0).then(t=>t.videoInputs.devices)}var Kh=!1;function tf(){return y(this,null,function*(){try{Kh||(Kh=!0,B.info(`speakers:${(yield $i()).map(i=>` ${i.deviceId.slice(0,8)}: ${i.label}`)}`))}catch(i){}})}function $i(i=!1){return y(this,null,function*(){return(It||Mt)&&(i=!1),Et.update(i?1:0).then(t=>t.audioOutputs.devices)})}var ql=new Set;function rf(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("camera")||t.includes("webcam"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${D.VIDEO_INPUT}`;return!!ql.has(r)}function of(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("mic")||t.includes("\u9EA6\u514B\u98CE"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${D.AUDIO_INPUT}`;return!!ql.has(r)}function Jl(i,t){return y(this,null,function*(){let r=(yield Jt()).find(o=>o.deviceId===fo);return!t&&(r==null?void 0:r.groupId)===i||(r==null?void 0:r.groupId)===i&&r.label===t})}function sf(s){return y(this,arguments,function*({newDeviceId:i,oldDeviceId:t,oldGroupId:e,oldLabel:r,kind:o}){return i!==t?!1:o===D.AUDIO&&i===fo?yield Jl(e,r):!0})}var dd,zl=class extends ma{constructor(e){super();this.log=e;u(this,"volumeMeter");u(this,"volumeDestination");u(this,"analyser",new id);this.volumeMeter=new nd({log:this.log}),this.volumeDestination=new xt,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},ud=class i extends $r{constructor(e){super(e,D.AUDIO);u(this,"_outputDeviceId");u(this,"_volume",1);u(this,"_destination",et("player").createMediaStreamDestination());u(this,"pipeline");u(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new zl(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Li==="15.2"||Li==="15.3"||Li==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let o=dd||new Audio;o.setAttribute("autoplay","autoplay"),o.srcObject=this.getMediaStream(),o.muted=this.muted,this.element=o,je(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),o===dd&&(dd=void 0),this.bindElementEvents()}play(e){return y(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(et("player").createAnalyser()),tf(),Bt(i.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return y(this,null,function*(){var r,o;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(o=(r=this.element).setSinkId)==null?void 0:o.call(r,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()}},ld=class extends ud{setTrack(t){this.track!==t&&(this.unbindTrackEvents(),this.track=t,this.emit(Xe.MEDIA_TRACK_CHANGED,t),t&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([t]))))}setVolume(t){this._volume=t,this.element&&(this.element.volume=t)}},md=class extends ud{constructor(e){super(e);u(this,"_sourceElement");u(this,"_output",new xt);this.pipeline.source.pipeTo(this.pipeline.gain.pipeTo(this.pipeline.volumeMeter.pipeTo(this._output),this.pipeline.destination))}setOutput(){this.mode=1,this._output.setNode(et("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var r,o;((o=(r=this.element)==null?void 0:r.error)==null?void 0:o.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(Xe.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.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"):It||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),ut(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let r=this._sourceElement||this.element;r&&xi&&(dd=r),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var Oo=class extends ne{constructor({userId:e,sdkAppId:r,mediaType:o,room:s,PlayerClass:n=o===1?md:Yt}){var d;super();u(this,"id",Qn());u(this,"userId","");u(this,"isRemote");u(this,"mediaType");u(this,"room");u(this,"user");u(this,"_log");u(this,"_inputTrack");u(this,"_outputTrack");u(this,"isPlayCalled");u(this,"container",null);u(this,"player");u(this,"subVideoPlayerMap");u(this,"muted",!1);u(this,"abortCtrl");u(this,"objectFit","cover");u(this,"mirror");u(this,"isScreen",!1);u(this,"manager");u(this,"trackSettings");u(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=o,this._log=B.createLogger({id:`${this.kind[0]}t`,userId:(d=s||this.room)==null?void 0:d.userId,remoteUserId:this instanceof ai?void 0:this.userId,sdkAppId:r,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof ai}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(Xe.PLAYER_STATE_CHANGED,p=>{H.emit(L.PLAYER_STATE_CHANGED,Z({track:this},p)),this.emit("player-state-changed",p)}),this.kind===D.VIDEO&&(this.player.on(Xe.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(Xe.LOADED_DATA),H.emit(L.VIDEO_LOADED_DATA,{track:this})}),this.player.on(Xe.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(Xe.LOADED_META_DATA)}),this.player.on(Xe.MEDIA_TRACK_CHANGED,p=>{var m;(m=this.subVideoPlayerMap)==null||m.forEach(E=>E.setTrack(p))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(Xe.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||B}get kind(){return this.mediaType===1?D.AUDIO:D.VIDEO}get strMediaType(){return this.mediaType===4?D.VIDEO:this.mediaType===2?D.SCREEN:D.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,r){return y(this,null,function*(){let o=st(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(r)}`),r&&!$(r.muted)&&this.setPlayerMute(r.muted),r&&!$(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof Yt&&(this.player.setObjectFit(this.objectFit),this.container!==o&&o&&(this.container=o,this.player.setContainer(o)),st(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),r)));return}if(r&&!$(r.muted)?this.setPlayerMute(r.muted):(!this.isRemote||this.kind===D.VIDEO)&&this.setPlayerMute(!0),r&&!$(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof Yt&&this.player.setObjectFit(this.objectFit),this.isPlayCalled=!0,o&&(this.container=o,this.player instanceof Yt&&this.player.setContainer(o)),H.emit(L.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(r)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(r),st(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),r))}catch(s){throw this.handleAutoPlayFailed(s),s}})}setMirror(e,r){if(this.isScreen||this.kind!==D.VIDEO||$(e)||e===this.mirror)return;this.mirror=e;let o=this.player;r&&(o=r);let s=this.manager;if(dt(this.mirror)){o.setViewMirror(this.mirror),s&&(s.mirror=!1);return}switch(this.mirror){case"view":{s&&(s.mirror=!1),o.setViewMirror(!0);break}case"publish":{s&&(s.mirror=!0),o.setViewMirror(!0);break}case"both":s&&(s.mirror=!0),o.setViewMirror(!1)}}playSubContainer(e,r){return y(this,null,function*(){if(!this._outputTrack||this.kind===D.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((s,n)=>{var d;e.find(p=>n===p)||(s.stop(),(d=this.subVideoPlayerMap)==null||d.delete(n))});for(let[s,n]of e.entries()){let d=this.subVideoPlayerMap.get(n);d?r&&($(r.objectFit)||d.setObjectFit(r.objectFit)):this.subVideoPlayerMap.set(n,new Yt({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${s+1}`})}))}let o=[...this.subVideoPlayerMap.values()];for(let s of o)s.setViewMirror(this.player.mirror),yield s.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(Wu(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(r=>{r.stop()}),this.container=null)}resume(){return y(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),H.emit(e?L.TRACK_MUTED:L.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){Pt(e,e).add(D.MUTE,this.onTrackMuted).add(D.UNMUTE,this.onTrackUnmuted).add(D.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===D.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ut(e)}setInputMediaStreamTrack(e){var o;let r=this._inputTrack;if(e!==r)return this._inputTrack=e,this.trackSettings=(o=e.getSettings)==null?void 0:o.call(e),e.enabled=!this.muted,r&&this.uninstallTrackEvent(r),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,r||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var o;let r=this._outputTrack;e!==r&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(o=e.getSettings)==null?void 0:o.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(r=>this.handleAutoPlayFailed(r)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(Wu(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 r=()=>{this.resume().then(()=>{document.removeEventListener("click",r,!0)})};document.addEventListener("click",r,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof Yt?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,d,p;if(this.isFirstVideoFrameEmitted)return;let r=(n=this.mediaTrack)==null?void 0:n.getSettings(),o=(r==null?void 0:r.width)||((d=this.player.element)==null?void 0:d.videoWidth)||0,s=(r==null?void 0:r.height)||((p=this.player.element)==null?void 0:p.videoHeight)||0;e===Xe.LOADED_META_DATA&&!o&&!s||(e===Xe.LOADED_DATA&&!o&&!s&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,this.emit("first-video-frame",{width:o,height:s,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`)}};X([qe([],ne.INIT,{sync:!0})],Oo.prototype,"close",1);var O_=Object.prototype.hasOwnProperty,{toString:OR}=Object.prototype;function P_(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Gt(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(O_.call(i,t))return!1;return!0}}return!1}var ha=P_;var x_=function(i){return y(this,null,function*(){let t=L_(i);B.info(`getUserMedia with constraints: ${JSON.stringify(t)}`);let e=[],r=[],o=["label","deviceId","groupId"];t.audio&&(e=yield Jt(),B.info(`microphones: ${rr(e.map(s=>Ee(Z({},s),{groupId:s.groupId.substring(0,8)})),{keysToInclude:o})}`)),t.video&&(r=yield Kt(),B.info(`cameras: ${rr(r,{keysToInclude:o})}`));try{let s=yield navigator.mediaDevices.getUserMedia(t);return Dl&&s.getTracks().forEach(n=>{B.info(`${n.kind} capabilities: ${rr(n.getCapabilities(),{keysToInclude:hc})}`)}),t.audio&&Us(),s}catch(s){let{message:n}=s;throw s.name==="NotFoundError"&&(i.video&&r&&r.length===0&&(n=at({key:nt.CAMERA_NOT_FOUND})),i.audio&&e&&e.length===0&&(n=at({key:nt.MICROPHONE_NOT_FOUND}))),new he({code:te.INITIALIZE_FAILED,name:s.name,message:n,constraint:s.constraint})}})},k_=Pi({retryFunction:x_,settings:{retries:3,timeout:500},onError:({error:i,retry:t,reject:e,retryFuncArgs:r,retriedCount:o})=>{let s=o+1;i.name==="NotReadableError"||i.name==="OverconstrainedError"?(s===1?(r[0].video&&(r[0].maxResolution=!1,(!Mt||r[0].width*r[0].height<=1920*1080)&&r[0].frameRate&&(r[0].frameRate=r[0].frameRate>10?10:5)),r[0].retryWhenExactFailed&&r[0].useExactDeviceId&&(r[0].useExactDeviceId=!1)):s===2?r[0].useDeviceIdOnly=!0:s===3&&!r[0].useExactDeviceId&&(r[0].useTrueAsConstraint=!0),t()):e(i),r[0].microphoneId&&nf(r[0].microphoneId,!1),r[0].cameraId&&nf(r[0].cameraId,!0)},onRetrying:i=>{B.warn(`getUserMedia NotReadableError observed, retrying [${i}/3]`)},onRetryFailed:i=>{$e.logFailedEvent({eventType:zr.GET_USER_MEDIA_RETRY,error:i})},onRetrySuccess:i=>{$e.logSuccessEvent({eventType:zr.GET_USER_MEDIA_RETRY}),$e.uploadEvent({log:`stat-${zr.GET_USER_MEDIA_RETRY}-success-${i}`})}});function nf(i,t){return y(this,null,function*(){let r=(t?yield Kt():yield Jt()).find(o=>o.deviceId===i);r&&ze(r.getCapabilities)&&B.warn(rr(r.getCapabilities(),{keysToInclude:hc}))})}function L_(i){return{audio:U_(i),video:V_(i)}}function U_(i){if(!i.audio)return!1;if(i.useTrueAsConstraint)return!0;let t={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:i.sampleRate};return!ha(i.microphoneId)&&(t.deviceId=i.useExactDeviceId?{exact:i.microphoneId}:i.microphoneId,i.useDeviceIdOnly)?t:(je(i.channelCount)&&(t.channelCount=i.channelCount),dt(i.echoCancellation)&&!i.echoCancellation&&(t.echoCancellation=!1),dt(i.noiseSuppression)&&!i.noiseSuppression&&(t.noiseSuppression=!1),dt(i.autoGainControl)&&!i.autoGainControl&&(t.autoGainControl=!1),ha(t)?!0:t)}function V_(i){if(!i.video)return!1;if(i.useTrueAsConstraint)return!0;let{maxResolution:t=!0}=i,e={};return i.cameraId?e.deviceId=i.useExactDeviceId?{exact:i.cameraId}:i.cameraId:i.facingMode&&(e.facingMode=i.facingMode),i.useDeviceIdOnly&&!ha(e)?e:(i.width&&(e.width={ideal:i.width},t&&!gr&&(e.width.max=i.width)),i.height&&(e.height={ideal:i.height},t&&!gr&&(e.height.max=i.height)),gr&&_r&&i.width&&i.height&&i.width*i.height<352*288&&(e.width=i.width,e.height=i.height),i.frameRate&&(e.frameRate=i.frameRate),ha(e)?!0:e)}var af=k_;function Fi(i){return Me((t,e)=>function(...r){return y(this,null,function*(){let o=yield t.apply(this,r);return yield i.call(this,...r),o})})}function cf(i){return Me((t,e)=>function(...r){return y(this,null,function*(){try{return yield t.apply(this,r)}catch(o){i.call(this,o)}})})}function Me(i){return function(t,e,r){return r.value=i(r.value,e),r}}var df=(()=>{let i=!1,t=document.visibilityState;return()=>{document.visibilityState!==t&&B.info(`visibility change: ${document.visibilityState}`),!i&&(document.addEventListener("visibilitychange",()=>{B.info(`visibility change: ${document.visibilityState}`),t=document.visibilityState}),i=!0)}})();var B_=0,pd=class{constructor(){u(this,"log",B.createLogger({id:`fq${++B_}`}));u(this,"isRunning",!1);u(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(t,e=!1){var s,n;let r=Z({},t),o=new Promise((d,p)=>{r.resolve=d,r.reject=p});return r.promise=o,e?this.length<=1?this.queue.push(r):(n=(s=this.lastQueueItem)==null?void 0:s.promise)==null||n.then(r.resolve,r.reject):this.queue.push(r),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),o}shift(){let t=this.queue.shift();return this.log.debug(`shift ${this.length}`),t}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:t,args:e,context:r,resolve:o,reject:s}=this.queue[0];this.isRunning=!0,t.apply(r,e).then(o,s).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},uf=new WeakMap,lf=new WeakMap;function mf(i=!1){return function(t,e,r){let o=r.value;return r.value=function(...s){let n=uf.get(this)||new pd;return uf.set(this,n),n.push({fn:o,args:s,context:this},i)},r}}function hd(i){return function(t,e,r){let o=r.value,s=n=>i(...n);return r.value=function(...n){let d=lf.get(this)||new Map,p=d.get(s(n))||new pd;return d.set(s(n),p),lf.set(this,d),p.push({fn:o,args:n,context:this})},r}}function fd(i,t){return Me((e,r)=>function(...o){let s=i;try{let n=e.apply(this,o),d=_e();return Mi(n)?n.then(p=>(t?Y.addSuccessEvent({key:s,cost:_e()-d}):Y.addSuccessEvent({key:s}),p)).catch(p=>{throw Y.addFailedEvent({key:s,error:p}),p}):(Y.addSuccessEvent({key:s}),n)}catch(n){throw Y.addFailedEvent({key:s,error:n}),n}})}var Po=class Po extends Oo{constructor(e,r){super({mediaType:e,PlayerClass:r});u(this,"isRemote",!1);u(this,"deviceId");u(this,"groupId","");u(this,"label","");u(this,"_isRecapturing",!1);u(this,"_lastRecaptureTime",0);u(this,"_onMuteTimeoutId",-1);u(this,"_encodeCheckTimeoutId",-1);u(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,r){throw new Error("Method not implemented.")}installTrackEvent(e){Pt(e,e).add(D.MUTE,this.onTrackMuted).add(D.UNMUTE,this.onTrackUnmuted).add(D.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===D.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ut(e)}setStateToCapture(){}capture(e){return y(this,null,function*(){var r;try{let o=_e();H.emit(L.LOCAL_TRACK_CAPTURE_START,{track:this});let s;e.customSource?(s=new MediaStream,s.addTrack(e.customSource)):((r=this.mediaTrack)==null||r.stop(),s=yield af(e));let n=s.getTracks()[0];return yield this.setInputMediaStreamTrack(n),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),H.emit(L.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:_e()-o}),s}catch(o){throw H.emit(L.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:o}),this.log.error(`getUserMedia error observed ${o}`),o}})}setInputMediaStreamTrack(e){return this.state===ne.INIT&&this.setStateToCapture(),super.setInputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var r;if(super.setOutputMediaStreamTrack(e),this.isPublishing||this.isPublished)return(r=this.room)==null?void 0:r.replaceTrack(this)}publish(e,r){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),r}unpublish(){this.room&&this.room.localTracks.delete(this),H.emit(L.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return y(this,null,function*(){if(this.mediaTrack&&xs){let{deviceId:e,groupId:r}=this.mediaTrack.getSettings(),{label:o}=this.mediaTrack;(yield sf({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=o,r&&(this.groupId=r),cd().then(n=>{let d=n.find(p=>p.deviceId===e);d&&this.emit("2",d)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===D.AUDIO&&!of(this.mediaTrack)||this.kind===D.VIDEO&&!rf(this.mediaTrack)||this._isRecapturing||e&&_r&&Mt)}onTrackMuted(){if(super.onTrackMuted(),df(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<ms){setTimeout(()=>this.onTrackMuted(),ms);return}this._onMuteTimeoutId=setTimeout(()=>y(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((It||gt)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return y(this,null,function*(){if(Bt(Po.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<ms){setTimeout(()=>this.onTrackEnded(),ms);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return y(this,null,function*(){var o;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(o=this._inputTrack)==null||o.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let r={useExactDeviceId:!0};if(e==="user"||e==="environment")r.facingMode=e;else{let s;(this.kind==="audio"?yield Jt():yield Kt()).find(d=>d.deviceId===e)&&(s=e),r.deviceId=s}return this.capture(r).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),H.emit(L.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(s=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${s.message}`),this.emit("5",s),H.emit(L.LOCAL_TRACK_RECAPTURE,{track:this,error:s})})})}getRecoverCaptureDeviceId(){return y(this,null,function*(){let e=this instanceof Sr;if(e&&this.facingMode)return this.facingMode;let{deviceId:r}=this;if(r){let o=(fa.get(r)||0)+1;if(fa.set(r,o),o>=3){let s=e?(yield Kt()).find(n=>!fa.has(n.deviceId)):(yield Jt()).find(n=>!fa.has(n.deviceId));s&&(this.log.warn(`${r} capture fail ${o} times, change new ${s.deviceId}`),r=s.deviceId)}}return r})}close(){var e;super.close(),this._inputTrack&&(this._inputTrack.stop(),this.uninstallTrackEvent(this._inputTrack)),(e=this.manager)==null||e.removeInput(this)}};X([qe(ne.INIT,"capture",{ignoreError:!0,sync:!0})],Po.prototype,"setStateToCapture",1),X([mf()],Po.prototype,"capture",1),X([qe("capture","publish",{ignoreError:!0,success(){var r,o;this.room.localTracks.add(this),H.emit(L.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var n,d;if(!((((d=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:d.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let p=this.kind===D.AUDIO,m=this.stat.bytesSent>0;Y[m?"addSuccessEvent":"addFailedEvent"]({key:p?503700:513702}),m||(Y.addEnum({key:p?503701:513703,value:zn()}),$e.uploadEvent({log:`stat-encode-failed-${this.kind}-${Jn()||So()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(e){let r="error";if(e.cause instanceof RTCError){let o=e.cause;o.message.includes("timeout")?r="timeout":o.code===te.API_CALL_ABORTED&&(r="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:r,error:e.cause||e})}}),fd(521714,!1)],Po.prototype,"publish",1),X([Me(e=>function(){return y(this,null,function*(){let r=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:r,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),qe([],"capture",{sync:!0})],Po.prototype,"unpublish",1);var ai=Po,fa=new Map;H.on(L.SWITCH_DEVICE_SUCCESS,i=>{i.track.deviceId&&fa.delete(i.track.deviceId)});var ci=class i extends ai{constructor(e){super(1,ld);u(this,"mediaType",1);u(this,"volume",0);u(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});u(this,"playerMuted",!0);u(this,"pipeline");u(this,"earMonitorGainNode",new xt);u(this,"_output",new xt);u(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});this.manager=e,this.pipeline=new Vs(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 ad.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}get playerMediaTrack(){return this.mediaTrack}setInputMediaStreamTrack(e){return y(this,null,function*(){let r=this.trackSettings||{};Y.addEnum({key:501701,value:r.channelCount||0,useUV:!1}),Y.addEnum({key:501702,value:r.sampleRate||0,useUV:!1}),Y.addEnum({key:502700,value:0});let{sampleRate:o,channelCount:s}=r;this._log.info(`local audio track input ${JSON.stringify({sampleRate:o,channelCount:s})}`),this.pipeline.replaceSource(e),yield Bt(i.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:r,useExactDeviceId:o=!0,retryWhenExactFailed:s=!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:o,retryWhenExactFailed:s,customSource:r})}switchDevice(e){return y(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===fo){if(yield Jl(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}),H.emit(L.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(r){throw this.log.error(`switch microphone failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}}})}listenDeviceChange(){Et&&!Et.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&Et.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return y(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),tt(this.userId,{eventId:2003,param1:6,streamType:1});let r=yield Jt();r[0]?this.recapture(r[0].deviceId):Et.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(s){return y(this,arguments,function*({echoCancellation:e,noiseSuppression:r,autoGainControl:o}){let n=!1;!$(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,n=!0),!$(r)&&r!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=r,n=!0),!$(o)&&o!==this.profile.autoGainControl&&(this.profile.autoGainControl=o,n=!0),n&&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),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(et().createGain()),this._output.setNode(et().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){if(!this._inputTrack)return;let r=this._inputTrack.getConstraints();return r.noiseSuppression=e,this._inputTrack.applyConstraints(r).catch(o=>this._log.warn(`${e?"enable":"disable"} ANS failed `,o))}addDenoiser(e){var r;if(Zr<=92&&((r=this.trackSettings)==null?void 0:r.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)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0))}close(){this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),Et.off("audioInputAdded",this.handleMicrophoneAdded,this),Et.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return y(this,null,function*(){try{yield Bt(i.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield Jt()).find(s=>s.deviceId!==e);if(o)yield Bt(i.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((r,o)=>o?o({frame:r}):r,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var xo=class{constructor(t,e=!1){this.dataView=t;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,r=[],o=0;for(let n=t;n<=e;n++){let d=this.dataView.getInt8(n);switch(d){case 0:case 1:case 2:case 3:o===2&&(r.push(3),o=0),d==0?o++:o=0,r.push(d);break;default:o=0,r.push(d);break}}r.push(this.dataView.getInt8(this.dataView.byteLength-1));let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}removePreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,r=[],o=0;for(let n=t;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:o++,r.push(this.dataView.getInt8(n));break;case 3:o!==2&&r.push(this.dataView.getInt8(n)),o=0;break;default:r.push(this.dataView.getInt8(n)),o=0;break}let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let t=6;for(let e=6;e<this.dataView.buffer.byteLength&&(t++,this.dataView.getUint8(e)===255);e++);return t}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let t=0,e=6;for(let s=6;s<this.dataView.buffer.byteLength;s++){let n=this.dataView.getUint8(s);if(e++,n===255)t+=255;else{t+=n;break}}let r=new ArrayBuffer(t),o=new DataView(r);for(let s=0;s<r.byteLength;s++,e++)o.setInt8(s,this.dataView.getInt8(e));return o}};var gd=class{constructor(){u(this,"_seiMessageList",[]);u(this,"_smallSeiMessageList",[]);u(this,"_seiPayloadType",243)}encodeSEINalu(t){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,this._seiPayloadType);for(let d=0;d<r;d++)s.push(255);s.push(o);let n=new DataView(t);return s.push(...new Uint8Array(n.buffer)),s.push(128),new xo(new DataView(new Uint8Array(s).buffer),!0)}sendSEI(t,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(t),e!=null&&e.small&&this._smallSeiMessageList.push(t)}isEmpty(){return!this._seiMessageList.length}getNaluCount(t){let e=0,r=0,o=new DataView(t);for(let s=0;s<t.byteLength;s++)switch(o.getUint8(s)){case 0:e++;break;case 1:(e===2||e===3)&&r++,e=0;break;default:e=0;break}return r}encode(t,e){let r=e?this._smallSeiMessageList:this._seiMessageList;if(r.length>0&&t.data.byteLength>0){let s=9-this.getNaluCount(t.data);if(s<=0)return 0;let n=r.splice(0,s).reverse().map(this.encodeSEINalu.bind(this)),d=n.reduce((b,C)=>b+C.dataView.byteLength,0),p=new ArrayBuffer(d+t.data.byteLength),m=new DataView(p),E=new DataView(t.data),_=0;for(let b=0;b<n.length;b++)for(let C=0;C<n[b].dataView.byteLength;C++)m.setInt8(_++,n[b].dataView.getInt8(C));for(let b=0;b<t.data.byteLength;b++)m.setInt8(_++,E.getInt8(b));return t.data=p,n.length}return 0}};var ko=class ko extends ai{constructor(e,r=4){super(r,Yt);u(this,"profile",{width:640,height:480,frameRate:15,bitrate:500});u(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});u(this,"small");u(this,"isNeedToSetBandwidth");u(this,"muteImage");u(this,"manager");u(this,"_seiCodec",new gd);this.manager=e;let o=()=>{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(Ee(Z({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",o),this.on("publish",o),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!xs||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return y(this,null,function*(){var r,o,s;if(we(e)){if(this.muteImage===e)return;yield(r=this.manager)==null?void 0:r.deleteWatermark("mute"),yield(o=this.manager)==null?void 0:o.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,Bt(ko.prototype,this,"setMute").call(this,!1)}else yield(s=this.manager)==null?void 0:s.deleteWatermark("mute"),this.muteImage=void 0,Bt(ko.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:r,useExactDeviceId:o=!0,customSource:s,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:r||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:o,retryWhenExactFailed:n,customSource:s})}setProfile(e){let r=Z({},e),o=r.width>r.height;r.width*r.height<=160*120&>&&Io&&(this.log.warn(`resolution is ${r.width}*${r.height}, fallback to 240*180`),r.width=o?240:180,r.height=o?180:240,r.bitrate=Math.max(r.bitrate,150)),r.width*r.height>1280*720&&rl&&(r.width=o?1280:720,r.height=o?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),r.bitrate&&(this.isNeedToSetBandwidth=r.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(r):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(Ee(Z({},this.profile),{width:1920,height:1080})))}applyProfile(){return y(this,null,function*(){var o;if(!this.mediaTrack)return;let e=this.settings;if(!(!(e.height!==this.profile.height||e.width!==this.profile.width||e.frameRate!==this.profile.frameRate)||!this.deviceId)&&(Qt===16?yield this.recapture(this.deviceId):(yield(o=this.mediaTrack)==null?void 0:o.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))return this.isNeedToSetBandwidth=!1,this.room.setBandWidth({bandwidth:this.profile.bitrate,type:D.VIDEO,videoType:D.BIG})})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate};return xs&&this.mediaTrack&&Object.assign(e,this.mediaTrack.getSettings()),e}get scaleResolutionDownBy(){let{settings:e}=this;return e.width===this.profile.width&&e.height===this.profile.height?1:Tc()&&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 r;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((r=this.room.scheduleResult.trtcAutoConf)==null?void 0:r["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return y(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let r={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?r.facingMode=e:r.deviceId=e,this.mediaTrack.stop(),yield this.capture(r),H.emit(L.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(r){throw this.log.error(`switch camera failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}})}listenDeviceChange(){Et&&!Et.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&Et.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return y(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),tt(this.userId,{eventId:2003,param1:7,streamType:2});let r=yield Kt();r[0]?this.recapture(r[0].deviceId):Et.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return y(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,r){if(!this.manager)return e;let o=r?8:this.mediaType;return this.manager.encodePipeline.reduceRight((s,n)=>n?n({frame:s,mediaType:o}):s,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,r){return $(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,r)}close(){Et.off("videoInputAdded",this.handleCameraAdded,this),Et.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return y(this,null,function*(){try{yield Bt(ko.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield Kt()).find(s=>s.deviceId!==e);if(o)yield Bt(ko.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}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))}};X([Fi(function(e){this.setContentHint(e.contentHint||"motion")})],ko.prototype,"capture",1);var Sr=ko;var ff=Qn();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:ff,exposeOrigin:!0,permittedOrigins:["*"]})}catch(i){}var H_=function(i){return y(this,null,function*(){let t=null,e=j_(i);B.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let r=yield navigator.mediaDevices.getDisplayMedia(e);i.systemAudio&&r.getAudioTracks().length===0&&(Cs&&Zr<74||Mt||gr)&&B.warn("Your browser not support capture system audio");let o=r.getVideoTracks()[0];if(o){if(i.frameRate)try{yield o.applyConstraints({frameRate:{min:i.frameRate,ideal:i.frameRate},width:i.width,height:i.height})}catch(s){B.warn(`screen applyConstraints failed: ${s}`)}i.captureElement&&(yield W_(o,i.captureElement))}if(i.audio){let s=G_(i);B.info(`getUserMedia with constraints: ${JSON.stringify(s)}`),t=yield navigator.mediaDevices.getUserMedia(s),r.addTrack(t.getAudioTracks()[0])}return r})};function W_(i,t){return y(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&ze(i.cropTo))try{if(!(((e=i.getCaptureHandle())==null?void 0:e.handle)===ff))return;let o=yield CropTarget.fromElement(t);yield i.cropTo(o)}catch(r){B.warn(`cropTo target failed ${r}`)}})}function G_(i){let t={echoCancellation:i.echoCancellation,autoGainControl:i.autoGainControl,noiseSuppression:i.noiseSuppression,sampleRate:i.sampleRate,channelCount:i.channelCount};return $(i.microphoneId)||(t.deviceId=i.microphoneId),{audio:t,video:!1}}function j_(i){let t={preferCurrentTab:i.preferDisplaySurface==="current-tab"||!!i.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:Mt?{max:i.width}:{ideal:i.width,max:i.width},height:Mt?{max:i.height}:{ideal:i.height,max:i.height},frameRate:i.frameRate,displaySurface:i.preferDisplaySurface||"monitor"};if(t.video=e,i.systemAudio){let{echoCancellation:r=!0,noiseSuppression:o=!1,autoGainControl:s=!1}=i;t.audio={echoCancellation:r,noiseSuppression:o,autoGainControl:s,sampleRate:48e3}}return t}var gf=H_;var Hi=class extends Sr{constructor(e){super(e,2);u(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});u(this,"objectFit","contain");u(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}capture(E){return y(this,arguments,function*({systemAudio:e=!1,autoGainControl:r,echoCancellation:o,noiseSuppression:s,audioTrack:n,videoTrack:d,captureElement:p,preferDisplaySurface:m}){try{let _;return d||n?(_=new MediaStream,d&&_.addTrack(d),n&&_.addTrack(n)):_=yield gf({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:r,echoCancellation:o,noiseSuppression:s,captureElement:p,preferDisplaySurface:m}),yield this.setInputMediaStreamTrack(_.getVideoTracks()[0]),_}catch(_){throw this.log.error(`getDisplayMedia error observed ${_}`),_ instanceof he?_:new he({code:te.INITIALIZE_FAILED,name:_.name,message:_.message})}})}switchDevice(e){return y(this,null,function*(){throw new Error("Method not implemented.")})}};X([Fi(function(e){this.setContentHint(e.contentHint||"detail")})],Hi.prototype,"capture",1);var Lo=class extends ci{constructor(t){super(t),this._log.id=`s-${this._log.id}`}};var q_="registerProcessor('dumper', class extends AudioWorkletProcessor {process(inputs) {this.port.postMessage(inputs);return true;}});",Ql;function ga(i){return y(this,null,function*(){let t=et("dump");Ql||(Ql=Mo(t,URL.createObjectURL(new Blob([q_],{type:"application/javascript"})))),yield Ql;let e=new AudioWorkletNode(t,"dumper",{numberOfInputs:i.length,numberOfOutputs:0});return i.forEach((r,o)=>r.connect(e,0,o)),new ReadableStream({start(r){e.port.onmessage=o=>{r.enqueue(o.data)}},cancel(){i.forEach(r=>r.disconnect(e)),e.port.close()}})})}var Ed=class extends od{constructor(e){super();this.room=e;u(this,"_localAudioTrack");u(this,"_localScreenAudioTrack");u(this,"log",B.createLogger({id:"am"}));u(this,"denoiser");u(this,"voiceChanger");u(this,"mixChangedDebounce");u(this,"encodePipeline",[]);u(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId))}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}dump(e){var E,_;if(!this._localAudioTrack)return;let r=[],o=[];(E=this._localAudioPipline)!=null&&E.source.node&&(r.push(this._localAudioPipline.source.node),o.push("mic")),(_=this._localAudioPipline)!=null&&_.denoiser.node&&(r.push(this._localAudioPipline.denoiser.node),o.push("mic-processed")),this.mixWeight>1&&(r.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),o.push("mix")),this.log.info(`dump audio track ${o}, duration: ${e}`);let s=new AbortController,n=[],d=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),s.abort("timeout")},e*1e3),p=()=>{for(let b=0;b<o.length;b++){let C=URL.createObjectURL(new Blob(n[b])),k=document.createElement("a");k.href=C,k.download=`${o[b]}.pcm`,k.style.display="none",document.body.appendChild(k),k.click(),URL.revokeObjectURL(C),k.remove()}clearTimeout(d),s.abort("download")},m=ga(r).then(b=>b.pipeTo(new WritableStream({write(C){C.forEach((k,x)=>n[x]=n[x]?n[x].concat(k[0]):[k[0]])}}),s).catch(C=>p));return{then:m.then.bind(m),download:p}}getPCM(e){var n;if($(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 r=new Float32Array(1920),o=0,s=new AbortController;return ga([this._localAudioPipline.source.node]).then(d=>d.pipeTo(new WritableStream({write(p){p[0][0]&&(r.set(p[0][0],o),o+=p[0][0].length,o>=1920&&(o=0,e(r),r=new Float32Array(1920)))}}),s).catch(p=>this.log.warn(`stop getPCM reason:${p}`))),s}get hasScreenAudioTrack(){return this._localScreenAudioTrack!==null}get hasAudioTrack(){return!$(this._localAudioTrack)}changeInput(e){if(e instanceof Lo)return this._localScreenAudioTrack=e,e.pipeline.connect(),this.mixOnChange();if(e instanceof ci)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),e.pipeline.connect(),this.mixOnChange();if(e instanceof Uo)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,r;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(r=this._localScreenAudioTrack)==null?void 0:r.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof Lo?delete this._localScreenAudioTrack:e instanceof ci?delete this._localAudioTrack:e instanceof Uo}addDenoiser(e){var r;this.denoiser=e,(r=this._localAudioTrack)==null||r.addDenoiser(e)}removeDenoiser(e){var r;delete this.denoiser,(r=this._localAudioTrack)==null||r.removeDenoiser(e)}addVoiceChanger(e,r){var o;this.voiceChanger=[e,r],(o=this._localAudioTrack)==null||o.pipeline.voiceChanger.setNode(e,r)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}destroy(){this.close()}addEncodeProcessor({processor:e,type:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};function Ef(i=30,t=2){return Me((e,r)=>function(...o){return new Promise((s,n)=>{let d=setTimeout(()=>{let p=new he({code:te.API_CALL_TIMEOUT,message:`checkPendingPromise ${r}() timeout ${i}s`});B.warn(p),t===2?n(p):t===1&&s()},i*1e3);e.apply(this,o).then(s,n).finally(()=>{clearTimeout(d)})})})}var km={};qr(km,{Events:()=>it,Inspect:()=>ir,LastSink:()=>Vo,Sink:()=>de,Subscribe:()=>Bo,TimeoutError:()=>Ea,audit:()=>NT,bindCallback:()=>pT,bindNodeCallback:()=>hT,buffer:()=>rT,bufferCount:()=>tT,bufferTime:()=>JT,call:()=>_f,catchError:()=>Mm,combineLatest:()=>If,concat:()=>Q_,concatMap:()=>BT,concatMapTo:()=>$T,count:()=>ET,create:()=>Oe,debounce:()=>DT,debounceTime:()=>wT,defer:()=>Sf,delay:()=>zT,deliver:()=>pe,dispose:()=>_d,elementAt:()=>MT,empty:()=>Ta,every:()=>LT,exhaustMap:()=>WT,exhaustMapTo:()=>GT,filter:()=>Fo,find:()=>OT,findIndex:()=>PT,first:()=>xT,fromAnimationFrame:()=>lT,fromArray:()=>sT,fromEvent:()=>Ne,fromEventPattern:()=>nT,fromFetch:()=>aT,fromIterable:()=>cT,fromPromise:()=>bf,fromReadableStream:()=>uT,fromReader:()=>dT,groupBy:()=>jT,identity:()=>J_,ignoreElements:()=>ST,iif:()=>Z_,inspect:()=>Tf,interval:()=>rm,last:()=>kT,map:()=>Gi,mapTo:()=>VT,max:()=>_T,merge:()=>tm,mergeMap:()=>FT,mergeMapTo:()=>HT,min:()=>TT,never:()=>fT,nothing:()=>Ue,of:()=>oT,pairwise:()=>UT,pipe:()=>ve,race:()=>X_,range:()=>mT,reduce:()=>om,retry:()=>YT,scan:()=>wm,share:()=>di,shareReplay:()=>Y_,skip:()=>AT,skipUntil:()=>bT,skipWhile:()=>Ad,startWith:()=>_a,subject:()=>Ct,subscribe:()=>Ve,sum:()=>IT,switchMap:()=>ji,switchMapTo:()=>Ho,take:()=>yr,takeLast:()=>yT,takeUntil:()=>Qe,takeWhile:()=>Rf,tap:()=>Ia,throttle:()=>vT,throwError:()=>gT,timeInterval:()=>qT,timeout:()=>xm,timer:()=>im,toPromise:()=>XT,toReadableStream:()=>QT,withLatestFrom:()=>eT,zip:()=>K_});function Ue(...i){}var _f=i=>i(),J_=i=>i;function _d(){this.dispose()}var Tf=()=>typeof __FASTRX_DEVTOOLS__!="undefined",z_=1,ir=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(t){let e=new Yl(t,this,this.streamId++);return it.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},Vo=class{constructor(){this.defers=new Set,this.disposed=!1}next(t){}complete(){this.dispose()}error(t){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=Ue,this.error=Ue,this.next=Ue,this.dispose=Ue,this.subscribe=Ue,this.doDefer()}subscribe(t){return t instanceof ir?t.subscribe(this):t(this),this}get bindSubscribe(){return t=>this.subscribe(t)}doDefer(){this.defers.forEach(_f),this.defers.clear()}defer(t){this.defers.add(t)}removeDefer(t){this.defers.delete(t)}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}},de=class extends Vo{constructor(t){super(),this.sink=t,t.defer(this.bindDispose)}next(t){this.sink.next(t)}complete(){this.sink.complete()}error(t){this.sink.error(t)}},Bo=class extends Vo{constructor(t,e=Ue,r=Ue,o=Ue){if(super(),this._next=e,this._error=r,this._complete=o,this.then=Ue,t instanceof ir){let s={toString:()=>"subscribe",id:0,source:t};this.defer(()=>{it.defer(s,0)}),it.create(s),it.pipe(s),this.sourceId=s.id,this.subscribe(t),it.subscribe({id:s.id,end:!0}),e==Ue?this._next=n=>it.next(s,0,n):this.next=n=>{it.next(s,0,n),e(n)},o==Ue?this._complete=()=>it.complete(s,0):this.complete=()=>{this.dispose(),it.complete(s,0),o()},r==Ue?this._error=n=>it.complete(s,0,n):this.error=n=>{this.dispose(),it.complete(s,0,n),r()}}else this.subscribe(t)}next(t){this._next(t)}complete(){this.dispose(),this._complete()}error(t){this.dispose(),this._error(t)}};function ve(i,...t){return t.reduce((e,r)=>r(e),i)}function Oe(i,t,e){if(Tf()){let r=Object.defineProperties(Object.setPrototypeOf(i,ir.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:t,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});it.create(r);for(let o=0;o<e.length;o++){let s=e[o];typeof s=="function"&&s instanceof ir&&it.addSource(r,s)}return r}return i}function pe(i,t){return function(...e){return r=>{if(r instanceof ir){let o=Oe(s=>{let n=new i(s,...e);n.sourceId=o.id,n.subscribe(r)},t,arguments);return o.source=r,it.pipe(o),o}else return o=>r(new i(o,...e))}}}function Wi(i,t){window.postMessage({source:"fastrx-devtools-backend",payload:{event:i,payload:t}})}var Yl=class extends de{constructor(t,e,r){super(t),this.source=e,this.id=r,this.sourceId=t.sourceId,this.defer(()=>{it.defer(this.source,this.id)})}next(t){it.next(this.source,this.id,t),this.sink.next(t)}complete(){it.complete(this.source,this.id),this.sink.complete()}error(t){it.complete(this.source,this.id,t),this.sink.error(t)}},it={addSource(i,t){Wi("addSource",{id:i.id,name:i.toString(),source:{id:t.id,name:t.toString()}})},next(i,t,e){Wi("next",{id:i.id,streamId:t,data:e&&e.toString()})},subscribe({id:i,end:t},e){Wi("subscribe",{id:i,end:t,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(i,t,e){Wi("complete",{id:i.id,streamId:t,err:e?e.toString():null})},defer(i,t){Wi("defer",{id:i.id,streamId:t})},pipe(i){Wi("pipe",{name:i.toString(),id:i.id,source:{id:i.source.id,name:i.source.toString()}})},update(i){Wi("update",{id:i.id,name:i.toString()})},create(i){i.id||(i.id=z_++),Wi("create",{name:i.toString(),id:i.id})}},Ea=class extends Error{constructor(t){super(`timeout after ${t}ms`),this.timeout=t}};var Td=class extends Vo{constructor(t){super(),this.source=t,this.sinks=new Set}add(t){t.defer(()=>this.remove(t)),this.sinks.add(t).size===1&&(this.reset(),this.subscribe(this.source))}remove(t){this.sinks.delete(t),this.sinks.size===0&&this.dispose()}next(t){this.sinks.forEach(e=>e.next(t))}complete(){this.sinks.forEach(t=>t.complete()),this.sinks.clear()}error(t){this.sinks.forEach(e=>e.error(t)),this.sinks.clear()}};function di(){return i=>{let t=new Td(i);if(i instanceof ir){let e=Oe(r=>{t.add(r)},"share",arguments);return t.sourceId=e.id,e.source=i,it.pipe(e),e}return Oe(t.add.bind(t),"share",arguments)}}function tm(...i){return Oe(t=>{let e=new de(t),r=i.length;e.complete=()=>{--r===0&&t.complete()},i.forEach(e.bindSubscribe)},"merge",arguments)}function X_(...i){return Oe(t=>{let e=new Map;i.forEach(r=>{let o=new de(t);e.set(r,o),o.complete=()=>{e.delete(r),e.size===0?t.complete():o.dispose()},o.next=s=>{e.delete(r),e.forEach(n=>n.dispose()),o.resetNext(),o.resetComplete(),o.next(s)}}),i.forEach(r=>e.get(r).subscribe(r))},"race",arguments)}function Q_(...i){return Oe(t=>{let e=0,r=i.length,o=new de(t);o.complete=()=>{e<r&&!o.disposed?(o.doDefer(),o.subscribe(i[e++])):t.complete()},o.complete()},"concat",arguments)}function Y_(i){return t=>{let e=new Td(t),r=[];return e.next=function(o){r.push(o),r.length>i&&r.shift(),this.sinks.forEach(s=>s.next(o))},Oe(o=>{o.defer(()=>e.remove(o)),r.forEach(s=>o.next(s)),e.add(o)},"shareReplay",arguments)}}function Z_(i,t,e){return Oe(r=>i()?t(r):e(r),"iif",arguments)}function If(...i){return Oe(t=>{let e=i.length,r=e,o=e,s=new Array(e),n=()=>{--o===0&&t.complete()},d=(p,m)=>{let E=new de(t);E.next=_=>{--r===0?(E.next=b=>{s[m]=b,t.next(s)},E.next(_)):s[m]=_},E.complete=n,E.subscribe(p)};i.forEach(d)},"combineLatest",arguments)}function K_(...i){return Oe(t=>{let e=i.length,r=e,o=new Array(e),s=()=>{--r===0&&t.complete()},n=(d,p)=>{let m=new de(t),E=[];o[p]=E,m.next=_=>{E.push(_),o.every(b=>b.length)&&t.next(o.map(b=>b.shift()))},m.complete=s,m.subscribe(d)};i.forEach(n)},"zip",arguments)}function _a(...i){return t=>Oe((e,r=0,o=i.length)=>{for(;r<o&&!e.disposed;)e.next(i[r++]);e.disposed||e.subscribe(t)},"startWith",arguments)}var Zl=class extends de{constructor(t,...e){super(t);let r=new de(this.sink);r.next=o=>this.buffer=o,r.complete=Ue,r.subscribe(If(...e))}next(t){this.buffer&&this.sink.next([t,...this.buffer])}},eT=pe(Zl,"withLatestFrom"),Kl=class extends de{constructor(t,e,r){super(t),this.bufferSize=e,this.startBufferEvery=r,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(t){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(t)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(t),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(t=>this.sink.next(t)),super.complete()}},tT=pe(Kl,"bufferCount"),em=class extends de{constructor(t,e){super(t),this.buffer=[];let r=new de(t);r.next=o=>{t.next(this.buffer),this.buffer=[]},r.complete=Ue,r.subscribe(e)}next(t){this.buffer.push(t)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},rT=pe(em,"buffer");var iT=function(i,t,e,r){function o(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function d(E){try{m(r.next(E))}catch(_){n(_)}}function p(E){try{m(r.throw(E))}catch(_){n(_)}}function m(E){E.done?s(E.value):o(E.value).then(d,p)}m((r=r.apply(i,t||[])).next())})};function Ct(i){let t=arguments,e=di()(Oe(r=>{e.next=o=>r.next(o),e.complete=()=>r.complete(),e.error=o=>r.error(o),i&&r.subscribe(i)},"subject",t));return e.next=Ue,e.complete=Ue,e.error=Ue,e}function Sf(i){return Oe(t=>t.subscribe(i()),"defer",arguments)}var yf=i=>t=>{setTimeout(()=>i(t))},Af=i=>yf(t=>{for(let e=0;!t.disposed&&e<i.length;e++)t.next(i[e]);t.complete()});function oT(...i){return Oe(Af(i),"of",arguments)}function sT(i){return Oe(Af(i),"fromArray",arguments)}function rm(i){return Oe(t=>{let e=0,r=setInterval(()=>t.next(e++),i);return t.defer(()=>{clearInterval(r)}),"interval"},"interval",arguments)}function im(i,t){return Oe(e=>{let r=0,o=setTimeout(()=>{if(e.removeDefer(s),e.next(r++),t){let n=setInterval(()=>e.next(r++),t);e.defer(()=>{clearInterval(n)})}else e.complete()},i),s=()=>{clearTimeout(o)};e.defer(s)},"timer",arguments)}function Id(i,t){return e=>{let r=o=>e.next(o);e.defer(()=>t(r)),i(r)}}function nT(i,t){return Oe(Id(i,t),"fromEventPattern",arguments)}function Ne(i,t){if("on"in i&&"off"in i)return Oe(Id(e=>i.on(t,e),e=>i.off(t,e)),"fromEvent",arguments);if("addListener"in i&&"removeListener"in i)return Oe(Id(e=>i.addListener(t,e),e=>i.removeListener(t,e)),"fromEvent",arguments);if("addEventListener"in i)return Oe(Id(e=>i.addEventListener(t,e),e=>i.removeEventListener(t,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function bf(i){return Oe(t=>{i.then(t.next.bind(t),t.error.bind(t))},"fromPromise",arguments)}function aT(i,t){return Oe(Sf(()=>bf(fetch(i,t))),"fromFetch",arguments)}function cT(i){return Oe(yf(t=>{try{for(let e of i){if(t.disposed)return;t.next(e)}t.complete()}catch(e){t.error(e)}}),"fromIterable",arguments)}function dT(i){let t=e=>iT(this,void 0,void 0,function*(){if(e.disposed)return;let{done:r,value:o}=yield i.read();if(r){e.complete();return}else e.next(o),t(e)});return Oe(e=>{t(e)},"fromReader",arguments)}function uT(i){return Oe(t=>{let e=new AbortController,r=e.signal;t.defer(()=>e.abort("cancelled")),i.pipeTo(new WritableStream({write(o){t.next(o)},close(){t.complete()},abort(o){t.error(o)}}),{signal:r}).then(()=>t.complete(),o=>t.error(o))},"fromReadableStream",arguments)}function lT(){return Oe(i=>{let t=requestAnimationFrame(function e(r){i.disposed||(i.next(r),t=requestAnimationFrame(e))});i.defer(()=>cancelAnimationFrame(t))},"fromAnimationFrame",arguments)}function mT(i,t){return Oe((e,r=i,o=t+i)=>{for(;r<o&&!e.disposed;)e.next(r++);return e.complete(),"range"},"range",arguments)}function pT(i,t,...e){return Oe(r=>{let o=e.concat(s=>(r.next(s),r.complete()));i.apply(t,o)},"bindCallback",arguments)}function hT(i,t,...e){return Oe(r=>{let o=e.concat((s,n)=>s?r.error(s):(r.next(n),r.complete()));i.apply(t,o)},"bindNodeCallback",arguments)}function fT(){return Oe(()=>{},"never",arguments)}function gT(i){return Oe(t=>t.error(i),"throwError",arguments)}function Ta(){return Oe(i=>i.complete(),"empty",arguments)}var $o=class extends de{constructor(t,e,r){super(t),this.f=e;let o=()=>{this.sink.next(this.acc),this.sink.complete()};typeof r=="undefined"?this.next=s=>{this.acc=s,this.complete=o,this.resetNext()}:(this.acc=r,this.complete=o)}next(t){this.acc=this.f(this.acc,t)}},om=pe($o,"reduce"),ET=i=>pe($o,"count")((t,e)=>i(e)?t+1:t,0),_T=()=>pe($o,"max")(Math.max),TT=()=>pe($o,"min")(Math.min),IT=()=>pe($o,"sum")((i,t)=>i+t,0);var sm=class extends de{constructor(t,e,r){super(t),this.filter=e,this.thisArg=r}next(t){this.filter.call(this.thisArg,t)&&this.sink.next(t)}},Fo=pe(sm,"filter"),nm=class extends de{next(t){}},ST=pe(nm,"ignoreElements"),am=class extends de{constructor(t,e){super(t),this.count=e}next(t){this.sink.next(t),--this.count===0&&this.complete()}},yr=pe(am,"take"),cm=class extends de{constructor(t,e){super(t);let r=new de(t);r.next=()=>t.complete(),r.complete=_d,r.subscribe(e)}},Qe=pe(cm,"takeUntil"),dm=class extends de{constructor(t,e){super(t),this.f=e}next(t){this.f(t)?this.sink.next(t):this.complete()}},Rf=pe(dm,"takeWhile"),yT=i=>om((t,e)=>(t.push(e),t.length>i&&t.shift(),t),[]),um=class extends de{constructor(t,e){super(t),this.count=e}next(t){--this.count===0&&(this.next=super.next)}},AT=pe(um,"skip"),lm=class extends de{constructor(t,e){super(t),t.next=Ue;let r=new de(t);r.next=()=>{r.dispose(),t.resetNext()},r.complete=_d,r.subscribe(e)}},bT=pe(lm,"skipUntil"),mm=class extends de{constructor(t,e){super(t),this.f=e}next(t){this.f(t)||(this.next=super.next,this.next(t))}},Ad=pe(mm,"skipWhile"),RT={leading:!0,trailing:!1},pm=class extends de{constructor(t,e,r){super(t),this.durationSelector=e,this.trailing=r}cacheValue(t){this.last=t,this.disposed&&this.throttle(t)}send(t){this.sink.next(t),this.throttle(t)}throttle(t){this.reset(),this.subscribe(this.durationSelector(t))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},Sd=class extends de{constructor(t,e,r=RT){super(t),this.durationSelector=e,this.config=r,this._throttle=new pm(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(t){this._throttle.disposed&&this.config.leading?this._throttle.send(t):this._throttle.cacheValue(t)}complete(){this._throttle.throttle=Ue,this._throttle.complete(),super.complete()}},vT=pe(Sd,"throttle"),CT={leading:!1,trailing:!0},NT=i=>pe(Sd,"audit")(i,CT),hm=class extends de{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},yd=class extends de{constructor(t,e){super(t),this.durationSelector=e,this._debounce=new hm(this.sink),this._debounce.dispose()}next(t){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=t,this._debounce.subscribe(this.durationSelector(t))}complete(){this._debounce.complete(),super.complete()}},DT=pe(yd,"debounce"),wT=i=>pe(yd,"debounceTime")(t=>im(i)),fm=class extends de{constructor(t,e,r){super(t),this.count=e,this.defaultValue=r}next(t){this.count--===0&&(this.defaultValue=t,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()}},MT=pe(fm,"elementAt"),OT=i=>t=>yr(1)(Ad(e=>!i(e))(t)),gm=class extends de{constructor(t,e){super(t),this.f=e,this.i=0}next(t){this.f(t)?(this.sink.next(this.i++),this.complete()):++this.i}},PT=pe(gm,"findIndex"),Em=class extends de{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t,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()}},xT=pe(Em,"first"),_m=class extends de{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},kT=pe(_m,"last"),Tm=class extends de{constructor(t,e){super(t),this.predicate=e,this.index=0}next(t){this.predicate(t,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()}},LT=pe(Tm,"every");var Im=class extends de{constructor(t,e,r){super(t),this.f=e,typeof r=="undefined"?this.next=o=>{this.acc=o,this.resetNext(),this.sink.next(this.acc)}:this.acc=r}next(t){this.sink.next(this.acc=this.f(this.acc,t))}},wm=pe(Im,"scan"),Sm=class extends de{constructor(){super(...arguments),this.hasLast=!1}next(t){this.hasLast?this.sink.next([this.last,t]):this.hasLast=!0,this.last=t}},UT=pe(Sm,"pairwise"),bd=class extends de{constructor(t,e,r){super(t),this.mapper=e,this.thisArg=r}next(t){super.next(this.mapper.call(this.thisArg,t))}},Gi=pe(bd,"map"),VT=i=>pe(bd,"mapTo")(t=>i),$s=class extends de{constructor(t,e,r){super(t),this.data=e,this.context=r}next(t){let e=this.context.combineResults;e?this.sink.next(e(this.data,t)):this.sink.next(t)}tryComplete(){this.context.resetComplete(),this.dispose()}},Fs=class extends de{constructor(t,e,r){super(t),this.makeSource=e,this.combineResults=r,this.index=0}subInner(t,e){let r=this.currentSink=new e(this.sink,t,this);this.complete=this.tryComplete,r.complete=r.tryComplete,r.subscribe(this.makeSource(t,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},Rd=class extends $s{},vd=class extends Fs{next(t){this.subInner(t,Rd),this.next=e=>{this.currentSink.dispose(),this.subInner(e,Rd)}}},ji=pe(vd,"switchMap");function wd(i){return(t,e)=>i(()=>t,e)}var Ho=wd(pe(vd,"switchMapTo")),ym=class extends $s{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},Cd=class extends Fs{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(t){this.next2(t),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),ym),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},BT=pe(Cd,"concatMap"),$T=wd(pe(Cd,"concatMapTo")),Am=class extends $s{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},Nd=class extends Fs{constructor(){super(...arguments),this.inners=new Set}next(t){this.subInner(t,Am),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(t=>t.resetComplete()):this.dispose()}},FT=pe(Nd,"mergeMap"),HT=wd(pe(Nd,"mergeMapTo")),bm=class extends $s{dispose(){this.context.resetNext(),super.dispose()}},Dd=class extends Fs{next(t){this.next=Ue,this.subInner(t,bm)}},WT=pe(Dd,"exhaustMap"),GT=wd(pe(Dd,"exhaustMapTo")),Rm=class extends de{constructor(t,e){super(t),this.f=e,this.groups=new Map}next(t){let e=this.f(t),r=this.groups.get(e);typeof r=="undefined"&&(r=Ct(),r.key=e,this.groups.set(e,r),super.next(r)),r.next(t)}complete(){this.groups.forEach(t=>t.complete()),super.complete()}error(t){this.groups.forEach(e=>e.error(t)),super.error(t)}},jT=pe(Rm,"groupBy"),vm=class extends de{constructor(){super(...arguments),this.start=new Date}next(t){this.sink.next({value:t,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},qT=pe(vm,"timeInterval"),Cm=class extends de{constructor(t,e){super(t),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(t){this.buffer.push(t)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},JT=pe(Cm,"bufferTime"),Nm=class extends de{constructor(t,e){super(t),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(t){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:r,data:o}=e;super.next(o),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(r))}},t)}next(t){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:t})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},zT=pe(Nm,"delay"),Dm=class extends de{constructor(t,e){super(t),this.selector=e}error(t){this.dispose(),this.selector(t)(this.sink)}},Mm=pe(Dm,"catchError");var XT=()=>i=>new Promise((t,e)=>{let r;new Bo(i,o=>r=o,e,()=>t(r))}),QT=()=>i=>{let t;return new ReadableStream({start(e){t=new Bo(i,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){t.dispose()}})},Ve=(i=Ue,t=Ue,e=Ue)=>r=>new Bo(r,i,t,e),Om=class extends de{constructor(t,e){super(t),e instanceof Function?this.next=r=>{e(r),t.next(r)}:(e.next&&(this.next=r=>{e.next(r),t.next(r)}),e.complete&&(this.complete=()=>{e.complete(),t.complete()}),e.error&&(this.error=r=>{e.error(r),t.error(r)}))}},Ia=pe(Om,"tap"),Pm=class extends de{constructor(t,e){super(t),this.timeout=e,this.id=setTimeout(()=>this.error(new Ea(this.timeout)),this.timeout)}next(t){super.next(t),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},xm=pe(Pm,"timeout"),YT=(i=1/0)=>t=>{if(t instanceof ir){let e=Oe(r=>{let o=i,s=new de(r);s.error=n=>{o-- >0?s.subscribe(t):r.error(n)},s.sourceId=e.id,s.subscribe(t)},"retry",[i]);return e.source=t,it.pipe(e),e}else return e=>{let r=i,o=new de(e);o.error=s=>{r-- >0?t(o):e.error(s)},t(o)}};var ui=class ui extends Oo{constructor(e,r,o){super({userId:r.userId,sdkAppId:e.sdkAppId,mediaType:o,room:e});this.room=e;this.user=r;u(this,"tinyId");u(this,"isRemote",!0);u(this,"jitterBufferDelay",0);u(this,"availableState");u(this,"remotePublishState");u(this,"_decodeCheckTimeoutId",-1);this.tinyId=r.tinyId,this.availableState=new ne(`${r.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new ne(`${r.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),ve(tm(Ne(this,ne.STATECHANGED),Ne(this.remotePublishState,ne.STATECHANGED)),Gi(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),Ve(s=>{this.availableState.state!==(s?ne.ON:ne.OFF)&&(this.availableState.state=s?ne.ON:ne.OFF),this.updatePlayingState(s)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===ui.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===ne.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,r){let o=this.kind===D.AUDIO;Y[e?"addSuccessEvent":"addFailedEvent"]({key:o?504700:514702}),e||(Y.addEnum({key:o?504701:514703,value:zn()}),$e.uploadEvent({log:`stat-decode-failed-${this.kind}-${Jn()||So()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===D.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:r}))}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?ne.ON:ne.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};u(ui,"STATE_SUBSCRIBE","subscribe"),X([Ef(5,1)],ui.prototype,"waitHasMediaTrack",1),X([qe(ne.INIT,ui.STATE_SUBSCRIBE,{success(){var r,o;this.log.info("subscribed"),H.emit(L.REMOTE_TRACK_SUBSCRIBED,{track:this}),!((((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState)&&(this._decodeCheckTimeoutId=setTimeout(()=>{var n,d;if(!((((d=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:d.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState)&&this.isSubscribed&&this.isPlayCalled&&this.stat.bytesReceived>0){let p=this.kind===D.AUDIO,m=this.player.isPlaying||(p?this.getAudioLevel()>0:this.stat.framesDecoded>0);this.reportDecodeResult(m)}},5e3),this.player.once(Xe.ERROR,s=>{s.code===MediaError.MEDIA_ERR_DECODE&&(clearTimeout(this._decodeCheckTimeoutId),this.reportDecodeResult(!1,3))}))},ignoreError:!0}),fd(521716,!1)],ui.prototype,"subscribe",1),X([qe(ui.STATE_SUBSCRIBE,ne.INIT,{sync:!0,success(){this.log.info("unsubscribed"),H.emit(L.REMOTE_TRACK_UNSUBSCRIBED,{track:this}),clearTimeout(this._decodeCheckTimeoutId)}})],ui.prototype,"unsubscribe",1);var Hs=ui;var Uo=class extends Hs{constructor(e,r){super(e,r,1);u(this,"volume",0);u(this,"mediaType",1);u(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return ad.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 r=e;for(let o of this.manager.decodePipeline)if(o&&(r=o({frame:r,track:this}),!r))return;return r}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isRemotePublished(){return this.user.muteState.audioAvailable}};var KT=[-1,-1,1,-1,-1,1,1,1],eI=[0,0,1,0,0,1,1,1];var Ft=class extends ne{constructor(e,r){super();this.context=e;u(this,"name");u(this,"input");u(this,"output");u(this,"texture");u(this,"ctx2d",null);u(this,"fbo");u(this,"width",0);u(this,"height",0);u(this,"x",0);u(this,"y",0);u(this,"program");u(this,"vertexShader");u(this,"fragmentShader");u(this,"totalFrames",0);u(this,"dropFrames",0);u(this,"matchInputSize",!0);u(this,"texCoordBuffer");u(this,"positionBuffer");u(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});u(this,"cost",0);u(this,"_canvas",null);u(this,"_image");u(this,"log");if(this.context.on("disconnect",this.close,this),this.name=r.name,this.log=r.logger,this.matchInputSize=r.matchInputSize!==!1,this.width=r.width||e.width,this.height=r.height||e.height,this._image=r.image,e instanceof kt){e.ctx&&r.create2d&&(typeof OffscreenCanvas=="function"&&Qt!==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 o=e.ctx;this.texCoordBuffer=this.createBuffer(eI),this.positionBuffer=this.createBuffer(KT),r.createTexture!==!1&&(this.texture=o.createTexture(),this.useTexture(),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.pixelStorei(o.PACK_ALIGNMENT,1),o.pixelStorei(o.UNPACK_ALIGNMENT,1)),r.useFbo&&(this.fbo=o.createFramebuffer(),this.useBufferFrame(),this.useTexture(),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,this.width,this.height,0,o.RGBA,o.UNSIGNED_BYTE,null),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.texture,0)),r.useDefaultProgram?this.program=e.defaultProgam:(r.vertexShaderSource||r.fragmentShaderSource)&&(this.vertexShader=r.vertexShaderSource?e.createShader(o.VERTEX_SHADER,r.vertexShaderSource):e.defaultVShader,this.fragmentShader=r.fragmentShaderSource?e.createShader(o.FRAGMENT_SHADER,r.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(o){this.context.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${o.message||o}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let r=this.context.ctx,o=r.createFramebuffer();return r.bindFramebuffer(r.FRAMEBUFFER,o),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0),o}connect(e,...r){return e.addInput(this,...r),this.output=e,e}addInput(e,...r){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let r=Date.now();if(this.context instanceof yt&&this.render(e)||this.context instanceof kt&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-r,!0}render2d(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var r;(r=this.output)==null||r.update(e)}disconnect(...e){var r;(r=this.output)==null||r.removeInput(this,...e),delete this.output}removeInput(e,...r){delete this.input}close(){var e,r;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(r=this.input)==null||r.disconnect(),this.context instanceof yt){let o=this.context.ctx;o.deleteBuffer(this.texCoordBuffer),o.deleteBuffer(this.positionBuffer),this.fbo&&o.deleteFramebuffer(this.fbo),this.texture&&o.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&o.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&o.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&o.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 r=this.context.ctx;e.forEach((o,s)=>{o&&(r.activeTexture(r.TEXTURE0+s),r.bindTexture(r.TEXTURE_2D,o))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let r=this.context.ctx,o=r.createBuffer();return r.bindBuffer(r.ARRAY_BUFFER,o),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW),o}setTexBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.texCoordBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}setPosBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.positionBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}changeBufferData(e,r){let o=this.context.ctx;o.bindBuffer(o.ARRAY_BUFFER,e),o.bufferData(o.ARRAY_BUFFER,new Float32Array(r),o.STATIC_DRAW)}setAttributes(...e){let r=this.context.ctx;e.forEach((o,s)=>{r.enableVertexAttribArray(s),r.bindBuffer(r.ARRAY_BUFFER,o),r.vertexAttribPointer(s,2,r.FLOAT,!1,0,0)})}getVertexPoint(e,r){return[e/this.width*2-1,r/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,r){if(!(this.width===e&&this.height===r)){if(this.width=e,this.height=r,this._canvas&&(this._canvas.width=e,this._canvas.height=r),this.texture&&this.fbo){this.useTexture();let o=this.context.ctx;o.texImage2D(o.TEXTURE_2D,0,o.RGBA,e,r,0,o.RGBA,o.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,r)}}draw(e,r){this.setAttributes(e||this.positionBuffer,r||this.texCoordBuffer);let o=this.context.ctx;o.drawArrays(o.TRIANGLE_STRIP,0,4)}draw2d(e,r,o,s,n){return this.ctx2d&&e?(e instanceof ImageData?this.ctx2d.putImageData(e,r,o):(this.ctx2d.drawImage(e,r,o,s,n),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}getInfo(){var _;let{totalFrames:e,x:r,y:o,width:s,height:n,name:d,cost:p}=this,m=Date.now(),E=(e-this.lastInfo.totalFrames)/((m-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:m,fps:E,name:d,cost:p},Z({parent:(_=this.input)==null?void 0:_.getInfo()},this.lastInfo)}createTexture(e){let r=this.context.ctx,o=r.createTexture();return this.useTextures(o),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),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),o}};X([qe(ne.INIT,"connected",{sync:!0})],Ft.prototype,"connect",1),X([qe("connected",ne.INIT,{ignoreError:!0,sync:!0})],Ft.prototype,"disconnect",1),X([qe([],"closed",{sync:!0})],Ft.prototype,"close",1);var Cf=ve(rm(250),Gi(()=>performance.now()),di()),Nf=i=>t=>{let e=0,r=performance.now();ve(Cf,Gi(o=>(o-r)/i>>0),Fo(o=>o!=e?(e=o,!0):!1))(t)},Md=i=>t=>{let e=performance.now();ve(Cf,Ad(r=>r-e<i),yr(1))(t)};var rI=[0,1,1,1,0,0,1,0],Wo=class extends Ft{constructor(e,r){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},r));u(this,"_intervalId",0);u(this,"_sequence",0);u(this,"checkGLError",!1);u(this,"checkVisibilityChange");e instanceof kt?this.ctx2d=e.ctx||null:e.available&&(r!=null&&r.mirrorUpAndDown)&&this.setTexBuffer(rI)}start(e){this.log.info(`${this.name} start render ${e} fps`),St.clearTask(this._intervalId),this._intervalId=St.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(St.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof yt){let o=this.context.ctx.getError();o&&this.context.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${o}`}))}},{fps:this.context.frameRate})}render(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...r){super.addInput(e,...r),this.start(this.context.frameRate)}update(e=0){if(this._intervalId&&(St.clearTask(this._intervalId),this._intervalId=0,e===1)){this.log.info(`${this.name} use requestVideoFrameCallback`);let r=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",r))};document.addEventListener("visibilitychange",r)}this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),St.clearTask(this._intervalId)}resize(e,r){super.resize(e,r),this.context.setSize(e,r)}close(){super.close(),St.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},Ws=class extends Wo{constructor(e,r){super(e,r);u(this,"_videoTrack");u(this,"_muteOb");u(this,"_closedOb",Ne(this,"closed"));u(this,"_subscription");u(this,"_canvasContainer");Number(ki)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=Ne(this._videoTrack,"mute"),ve(Ne(this._videoTrack,"ended"),Qe(this._closedOb),Ve(()=>{this.context.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=ve(this._muteOb,Qe(this._closedOb),Ho(Md(5e3)),Ve(()=>{var e;(e=this._videoTrack)!=null&&e.muted&&this.context.destroy(new he({code:te.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,r;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(r=this._canvasContainer)==null||r.remove()}},Od=class extends Ws{render(t){var e;return!!((e=this.input)!=null&&e.requestFrame(t))}};var Pd=class extends Ws{constructor(e,r,o){super(e,{name:"smallDestination",logger:o});this.resolution=r}resize(e,r){let o,s=e*r,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${r} small res: ${this.resolution.width}*${this.resolution.height} `),s>n?o=s/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${r} small: ${this.resolution.width} * ${this.resolution.height}`),o=s/(160*120)),super.resize(e/Math.sqrt(o),r/Math.sqrt(o))}};var Sa=class extends Ft{constructor(e,r){super(e,Z({name:"imageSource"},r));u(this,"_lastImage");u(this,"_totalFrames",0);u(this,"_autoResize",!1);u(this,"_canvasRendered");u(this,"_videoCallbackId",0);this._autoResize=(r==null?void 0:r.autoResize)!==!1,Qt===16&&(this._canvasRendered=Ct(),ve(this._canvasRendered,_a(this._image),ji(o=>o instanceof HTMLCanvasElement?Ne(o,"rendered"):Ta()),Qe(Ne(this,"closed")),Ve(()=>{this.update()})))}tryVideoFrameCallback(e){this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),Do()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((r,o)=>{document.hidden||(this._totalFrames=o.presentedFrames,this.update(1))}))}_render(e,r){var d;let{width:o,height:s}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(n),{videoWidth:o,videoHeight:s}=n,!o||!s)return!1;n.width=o,n.height=s}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:o,height:s}=n,n!==this._lastImage)this._lastImage=n;else if(o===this.width&&s===this.height)return!1}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:o,height:s}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:o,displayHeight:s}=n,(d=this._lastImage)==null||d.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===o&&this.height===s&&this.totalFrames){if(r){this.useTexture();let p=this.context.ctx;p.texSubImage2D(p.TEXTURE_2D,0,0,0,p.RGBA,p.UNSIGNED_BYTE,n)}}else{if(r){this.useTexture();let p=this.context.ctx;p.texImage2D(p.TEXTURE_2D,0,p.RGBA,p.RGBA,p.UNSIGNED_BYTE,n)}this.resize(o,s)}return!0}get image(){return this._image}set image(e){var r;(r=this._canvasRendered)==null||r.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},ya=class extends Sa{constructor(e,r,o){super(e,o);this._player=r;this.name="videoPlayerSource",ve(Ne(this._player,Xe.PLAYER_STATE_CHANGED),Qe(Ne(this,"closed")),Fo(({state:s})=>s==="PLAYING"),Ve(()=>{this.tryVideoFrameCallback(this._player.element)}))}get image(){return this._player.element}},li=class extends ya{constructor(t,e,r){super(t,new Yt({id:r.name,track:e,muted:!0,container:null,objectFit:"contain",log:r.logger}),r),this.name="videoTrackSource",this._player.play()}replaceTrack(t){this._player.setTrack(t),this._player.play()}close(){super.close(),this._player.stop()}};var oI=`
|
|
34
32
|
// \u9876\u70B9\u7740\u8272\u5668
|
|
35
33
|
attribute vec4 a_position;
|
|
36
34
|
attribute vec2 a_texCoord;
|
|
@@ -40,7 +38,7 @@ void main() {
|
|
|
40
38
|
gl_Position = a_position;
|
|
41
39
|
v_texCoord = a_texCoord;
|
|
42
40
|
}
|
|
43
|
-
`,
|
|
41
|
+
`,sI=`
|
|
44
42
|
// \u7247\u5143\u7740\u8272\u5668
|
|
45
43
|
precision mediump float;
|
|
46
44
|
varying vec2 v_texCoord;
|
|
@@ -48,31 +46,65 @@ uniform sampler2D u_texture;
|
|
|
48
46
|
|
|
49
47
|
void main() {
|
|
50
48
|
gl_FragColor = texture2D(u_texture, v_texCoord);
|
|
51
|
-
} `;var kr=class extends Q{constructor(e){super();c(this,"frameRate");c(this,"_canvas");c(this,"log");c(this,"hasAlpha",!1);c(this,"name");c(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 Pi(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new Es(this,e)}createVideoImageSource(e,t){return new Vo(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new Bo(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};c(kr,"_ids",0);var Hg={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},Ss=class Ss extends kr{constructor(){super(...arguments);c(this,"defaultProgam");c(this,"defaultVShader");c(this,"defaultFShader");c(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${kr._ids++}`),this.ctx=this._canvas.getContext("webgl2",Hg),!this.ctx)throw new b({code:S.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,Bg),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,Fg),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new b({code:S.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))}),this.log.info("video context created use webgl")}destroy(e){let t="";return e&&(t=e.message,this.error=e,N.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}};c(Ss,"UNAVAILABLE","unavailable"),y([le(Q.INIT,"created",{sync:!0,fail(e){N.addFailedEvent({key:512700,error:e.cause||e})},success(){N.addSuccessEvent({key:512700})}})],Ss.prototype,"create",1),y([le("created",Q.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(Ss.UNAVAILABLE,e),this.removeAllListeners()}})],Ss.prototype,"destroy",1);var ke=Ss,He=class extends kr{constructor(){super(...arguments);c(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${kr._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new b({code:S.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this.log.info("video context created use 2d")}destroy(e){let t="";e&&(t=e.message,this.error=e,N.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(),N.addSuccessEvent({key:512703})}};y([le(Q.INIT,"created",{sync:!0,fail(e){N.addFailedEvent({key:512701,error:e.cause||e})},success(){N.addSuccessEvent({key:512701})}})],He.prototype,"create",1),y([le("created",Q.INIT,{ignoreError:!0,sync:!0})],He.prototype,"destroy",1);function $g(s){return[15,30,45,60].reduce((e,t)=>Math.abs(t-s)<Math.abs(e-s)?t:e)}var si=class extends _s{constructor(e,t,r=4){super(e,t,r);c(this,"mediaType",4);c(this,"source");c(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(he(t==null?void 0:t.canvasRender)?t.canvasRender:at===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 He({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let t=new Or(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(t),this.player.setCanvas(e._canvas),Er()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,r=$g(t);if(!Y(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 isAvailable(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},Is=class extends si{constructor(e,t){super(e,t,2);c(this,"mediaType",2);c(this,"objectFit","contain")}get isAvailable(){return this.user.muteState.hasAuxiliary}};var As=new Map;E.on(T.JOIN_SUCCESS,({room:s})=>{me(s.userId,{eventId:32788})});E.on(T.LEAVE_START,({room:s})=>{me(s.userId,{eventId:32789})});E.on(T.LOCAL_TRACK_PUBLISHED,({track:s})=>{if(s.room){let i=32769;s.mediaType===4?i=32768:s.mediaType===2&&(i=32805),me(s.room.userId,{eventId:i})}});E.on(T.LOCAL_TRACK_UNPUBLISHED,({track:s})=>{if(s.room){let i=32771;s.mediaType===4?i=32770:s.mediaType===2&&(i=32806),me(s.room.userId,{eventId:i})}});E.on(T.TRACK_MUTED,({track:s})=>{s.room&&(s.kind===h.AUDIO?me(s.room.userId,{eventId:s.isRemote?32785:32772,remoteUserId:s.isRemote?s.userId:void 0}):me(s.room.userId,{eventId:s.isRemote?32784:32773,remoteUserId:s.isRemote?s.userId:void 0}))});E.on(T.TRACK_UNMUTED,({track:s})=>{s.room&&(s.kind===h.AUDIO?me(s.room.userId,{eventId:s.isRemote?32787:32774,remoteUserId:s.isRemote?s.userId:void 0}):me(s.room.userId,{eventId:s.isRemote?32786:32775,remoteUserId:s.isRemote?s.userId:void 0}))});E.on(T.REMOTE_TRACK_SUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&me(s.room.userId,{eventId:32777,remoteUserId:s.userId}),s.mediaType===4&&me(s.room.userId,{eventId:32776,remoteUserId:s.userId}),s.mediaType===8&&me(s.room.userId,{eventId:32803,remoteUserId:s.userId}))});E.on(T.REMOTE_TRACK_UNSUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&me(s.room.userId,{eventId:32779,remoteUserId:s.userId}),s.mediaType===4&&me(s.room.userId,{eventId:32778,remoteUserId:s.userId}),s.mediaType===8&&me(s.room.userId,{eventId:32804,remoteUserId:s.userId}))});E.on(T.SWITCH_DEVICE_SUCCESS,({track:s})=>{s.room&&me(s.room.userId,{eventId:s.kind===h.VIDEO?32780:32781})});E.on(T.LOCAL_TRACK_REPLACED,({track:s})=>{s.room&&me(s.room.userId,{eventId:s.kind===h.VIDEO?32782:32783})});E.on(T.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&&me(s.userId,{eventId:t})});E.on(T.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&&me(s.userId,{eventId:o,remoteUserId:t})});E.on(T.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,l={eventId:4004,param1:a,param2:d,streamType:n||2};e&&(l.remoteUserId=e,l.eventId=4005),me(i,l),N.addEnum({key:e?514701:513701,value:a}),N.addEnum({key:e?514700:513700,value:d})});E.on(T.LOCAL_TRACK_RECAPTURE,({track:s,error:i})=>{if(s.userId){let e={eventId:2003,param1:0};s.kind===h.AUDIO?(e.streamType=1,i&&(e.param1=2)):(e.streamType=s.streamType==="auxiliary"?7:2,i&&(e.param1=8)),me(s.userId,e)}});function me(s,i){let e=M(v({},i),{timestamp:Vs()});As.has(s)?As.get(s).push(e):As.set(s,[e])}function cm(s){if(As.has(s)){let i=As.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 As.delete(s),i}return[]}var dm=Pe(Je(),1);var La=class extends dm.EventEmitter{constructor(e,t,r="userId"){super();this.mySelfId=e;this._log=t;this.key=r;c(this,"userMap",new Map);c(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}]`;g(t)||(o+=`:${Nc[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 m;let r=t[this.key];if(r===this.mySelfId)return;let{flag:o,userId:n,tinyId:a}=t,d=mi(o,n),l=(m=this.remotePublishedUserMap.get(r))==null?void 0:m.muteState;if(l){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:l,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:mi(0,n),muteState:d,flag:o})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};function Nl({timesInSecond:s,maxSizeInSecond:i,getSize:e}){return J((t,r)=>{let o=new WeakMap;return E.on(T.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 b({code:S.INVALID_OPERATION,message:U({key:x.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 Gg="2025-04-03 11:54:36",lm=!0,um=function(){var s;lm&&(lm=!1,C.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Ft}/en/index.html`),console.info(`* Changelog: ${Ft}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),C.info("TRTC Web SDK Version:",Re),Ot||C.debug("Build Time:",Gg),C.info("UA:",navigator.userAgent),C.info(`URL: ${location.href}${((s=self.frameElement)==null?void 0:s.tagName)==="IFRAME"?" in iframe":""}`),lo().then(i=>{i&&C.info(bt)}))};var St={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 V={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},Pt=(A=>(A[A.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",A[A.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",A[A.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",A[A.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",A[A.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",A[A.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",A[A.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",A[A.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",A[A.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",A[A.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",A[A.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",A[A.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",A[A.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",A[A.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",A[A.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",A[A.INVALID_ROOM_ID_REQUIED=5015]="INVALID_ROOM_ID_REQUIED",A[A.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",A[A.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",A[A.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",A[A.INVALID_OPERATION=5100]="INVALID_OPERATION",A[A.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",A[A.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",A[A.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",A[A.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",A[A.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",A[A.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",A[A.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",A[A.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",A[A.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",A[A.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",A[A.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",A[A.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",A[A.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",A[A.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",A[A.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",A[A.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",A[A.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",A[A.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",A[A.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",A[A.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",A[A.DEVICE_ERROR=5300]="DEVICE_ERROR",A[A.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",A[A.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",A[A.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",A[A.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",A[A.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",A[A.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",A[A.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",A[A.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",A[A.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",A[A.SERVER_ERROR=5400]="SERVER_ERROR",A[A.NEED_TO_BUY=5401]="NEED_TO_BUY",A[A.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",A[A.OPERATION_FAILED=5500]="OPERATION_FAILED",A[A.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",A[A.REJOIN_FAILED=5502]="REJOIN_FAILED",A[A.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",A[A.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",A[A.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",A[A.OPERATION_ABORT=5998]="OPERATION_ABORT",A[A.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",A))(Pt||{});function mm({code:s,params:i,enableDocLink:e=!1}){let t="",r,o=Pt[s];try{r=hm[o]}catch(n){r=hm.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 hm=M(v({},Oe),{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: ${Ae(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: ${Ae(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=Mr(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=Mr(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=Mr(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=Mr(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=Mr(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=Mr(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=Mr(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 Mr(s){if(!s)return"camera";let i=s.toLowerCase();return i.includes("screen")?"screen share":i.includes("audio")?"microphone":"camera"}var vl=class s extends Error{constructor({code:e,extraCode:t,message:r="",messageParams:o,fnName:n="",originError:a}){var l;let d;r?d=r:d=mm({code:e===V.SERVER_ERROR?e:t||e,params:v({fnName:n,error:a},o)});super(d);c(this,"name","RtcError");c(this,"code");c(this,"extraCode");c(this,"functionName");c(this,"message");c(this,"handler");c(this,"originError");this.name=Pt[e],this.code=e,this.extraCode=t,this.functionName=n,this.originError=a,this.message=d,this.extraCode===5302&&((l=this.originError)!=null&&l.message.includes("system"))&&(this.handler=()=>{let m={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},u={startLocalVideo:"webcam",startLocalAudio:"microphone"},p=document.createElement("a");gi?p.href=`ms-settings:privacy-${u[this.functionName]}`:nt&&(p.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${m[this.functionName]}`),p.href.length>0&&p.click()})}static convertFrom(e,t,r){let o=e;if(e instanceof b){let{stack:n}=e,a={code:V.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case S.INVALID_PARAMETER:a.code=V.INVALID_PARAMETER,a.message=e.message;break;case S.INVALID_OPERATION:a.code=V.INVALID_OPERATION;break;case S.NOT_SUPPORTED:case S.NOT_SUPPORTED_H264:a.code=V.ENV_NOT_SUPPORTED,e.getCode()===S.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(Oe.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=V.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case S.API_CALL_ABORTED:a.code=V.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=Wg(e.name));break;case S.UNKNOWN:break;default:a.code=V.OPERATION_FAILED}o=new s(a),n&&(o.stack+=n.substr(n.indexOf(`
|
|
52
|
-
`)))}else{if(e instanceof s)return e;o=new s({code:V.UNKNOWN_ERROR,fnName:t,originError:e})}return o}};function Wg(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 w=vl;var pm={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}}},fm={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}}},Cs={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(s,i,e){if(K(s)&&!document.getElementById(s))throw new w({code:V.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:i}})}},_m={name:"userId",required:!0,type:"string"},gm={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[St.AUDIO_PROFILE_STANDARD,St.AUDIO_PROFILE_STANDARD_STEREO,St.AUDIO_PROFILE_HIGH,St.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function Fo(s,i){if(!s)throw new w({code:V.INVALID_OPERATION,extraCode:5101,fnName:i})}function Tm(s,i,e){if(!s)throw new w({code:V.INVALID_OPERATION,extraCode:5102,fnName:i,messageParams:{value:e}})}var bD={type:"number",notLessThanZero:!0},Jg={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 w({code:V.INVALID_OPERATION,extraCode:5104,fnName:e});if(s.roomId){if(K(s.roomId))throw new w({code:V.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:i}});if(!(/^[1-9]\d*$/.test(String(s.roomId))&&s.roomId<4294967295))throw new w({code:V.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 w({code:V.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:i}})}else throw new w({code:V.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"}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:Cs,mute:{type:["boolean","string"]},publish:{type:"boolean"},option:pm},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.videoTrack)&&Ri())throw new w({code:V.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:M(v({},Cs),{required:!1}),publish:{type:"boolean"},mute:{type:["boolean","string"]},option:pm}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:gm},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.audioTrack)&&Ri())throw new w({code:V.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:gm}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:Cs,publish:{type:"boolean"},option:fm},validate(s,i,e,t,r){var o;if(!((o=s==null?void 0:s.option)!=null&&o.videoTrack)&&Ri())throw new w({code:V.ENV_NOT_SUPPORTED,extraCode:5201});if(!To())throw new w({code:V.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:Cs,publish:{type:"boolean"},option:fm}},muteRemoteAudio:[_m,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[_m,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:Cs,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){Fo(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(Tm(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new w({code:V.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:M(v({},Cs),{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){Fo(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(Tm(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new w({code:V.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!=="*"&&g(s.streamType))throw new w({code:V.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(s,i,e){Fo(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(!Ao)throw new w({code:V.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new w({code:V.INVALID_OPERATION,fnName:e,extraCode:5108});if(s.byteLength>1e3)throw new w({code:V.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new w({code:V.INVALID_PARAMETER,extraCode:5017,messageParams:{key:i},fnName:e});Fo(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 w({code:V.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 w({code:V.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new w({code:V.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:i}})}}},validate(s,i,e){if(Fo(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new w({code:V.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:i}})}}},Me={TRTC:Jg};var $e=class extends Error{};function qg(s,i){let e=cr(s);for(let t=0;t<i.length;t++)Gt(e[t],i[t]);return e}function jg(s){this._resolve=Promise.resolve(s)}function Xg(s){this._reject=Promise.reject(s)}var er=class er{constructor(i,e){this.instance=i;this.group=e;c(this,"started",!1);c(this,"ops",[]);c(this,"startSame",()=>!0);c(this,"mergeUpdate",qg);let t=er.instances.get(i);t?t.set(e,this):er.instances.set(i,new Map([[e,this]]))}static get(i,e){if(!e)return;let t=er.instances.get(i);return t&&t.get(e)||new er(i,e)}static gets(i,e){let t=er.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,l;throw this.ops.shift(),i===0&&((d=this.currentOp)==null?void 0:d.type)===2&&this.ops.shift().reject(new $e("start failed")),(l=this.currentOp)==null||l.action(),a},n={type:i,action:()=>e(...n.args).then(r,o),args:t,resolve:jg,reject:Xg};try{switch(this.state){case 1:if(i===0)throw new $e("already started");break;case 4:if(i===2)throw new $e("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 $e("already start");break;case 3:switch(i.type){case 2:throw new $e("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new $e("unknown state")}else switch(i.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new $e("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 $e("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new $e("start not allowed after update");case 0:throw new $e("duplicate start");case 3:if(this.startSame(this.currentOp.args,i.args))throw this.ops.pop().reject(new $e("keep start")),new $e("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}};c(er,"instances",new WeakMap);var wi=er;var Pa=new WeakMap,wa=(s,i)=>{if(i instanceof $e){let{stack:e}=i;i=new w({code:V.OPERATION_ABORT,message:`${s} abort: ${i.message}`,fnName:s}),e&&(i.stack+=e.substr(e.indexOf(`
|
|
53
|
-
`)))}throw i};function tr(s,i){return J((e,t)=>function(...r){let o=wi.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(wa.bind(null,t))):e.apply(this,r)})}function Lr(s,i){let{merge:e,debounce:t}=i||{};return J((r,o)=>function(...n){let a=wi.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:l}=t;return new Promise((m,u)=>{var I,R;let p=(I=Pa.get(this))==null?void 0:I.get(l(...n));if(p){let{timeoutId:D,resolve:G}=p;clearTimeout(D),G()}let _=setTimeout(()=>{if(a.state===3||a.state===4)return m();a.action(2,r.bind(this),n).catch(wa.bind(null,o)).then(m,u)},d);Pa.has(this)?(R=Pa.get(this))==null||R.set(l(...n),{timeoutId:_,resolve:m}):Pa.set(this,new Map([[l(...n),{timeoutId:_,resolve:m}]]))})}return a.action(2,r.bind(this),n).catch(wa.bind(null,o))})}function ir(s){return J((i,e)=>function(...t){let r=typeof s=="function"?s.call(this,...t):s;if(r instanceof RegExp)return Promise.all(wi.gets(this,r).map(n=>n.action(3,()=>Promise.resolve(),t))).then(()=>i.call(this,...t));let o=wi.get(this,r);return o?o.action(3,i.bind(this),t).catch(wa.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"},Em=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 rr(s){return s==="sub"?"auxiliary":s==="auxiliary"?"sub":"main"}function Ho(s){return s===St.QOS_PREFERENCE_CLEAR?"detail":s===St.QOS_PREFERENCE_SMOOTH?"motion":""}var Ol={};ci(Ol,{bytes2ms:()=>ku,convertObjectNumberToInt:()=>Ys,copyProperties:()=>Ou,deepClone:()=>cr,deepMerge:()=>Gt,delay:()=>pi,fibonacci:()=>lr,formatedTime:()=>Bu,getConstructorName:()=>Qs,getContainerFromElement:()=>Vu,getEnv:()=>vu,getInternalVersion:()=>xu,getLoggerUrl:()=>hi,getMuteStateFromFlag:()=>mi,getNetworkType:()=>Dc,getNumNetworkType:()=>dr,getReconnectionTimeout:()=>yt,getStringByteLength:()=>zs,getTurnServer:()=>Uu,getUint32Version:()=>En,getValueType:()=>Ae,getViewListFromView:()=>Xr,glog:()=>Mc,ipv4ToUint32:()=>jr,isArray:()=>Te,isAudioWorkletSupported:()=>wu,isBoolean:()=>he,isConstructor:()=>Wr,isEmpty:()=>qr,isFunction:()=>oe,isLangChinese:()=>Rt,isMediaStreamTrack:()=>Lu,isNumber:()=>Y,isObject:()=>$t,isOverseaSdkAppId:()=>Xs,isPlainObject:()=>Ye,isPortrait:()=>Tn,isPromise:()=>Gi,isRemoteTrack:()=>Pu,isString:()=>K,isUndefined:()=>g,loadImage:()=>Qr,ms2bytes:()=>Mu,ms2samples:()=>kc,performanceNow:()=>L,promiseAny:()=>Jr,samples2ms:()=>Oc,setNetworkType:()=>_n,stringify:()=>mt,stringifyIncludeValue:()=>gn,throttlePromise:()=>Sn});var Ll={};ci(Ll,{getAbilityConfigUrl:()=>zg,getScheduleDomain:()=>$o,isNeedToSchedule:()=>xa,scheduleProxy:()=>wt,sendScheduleRequest:()=>Ml,setIsNeedToSchedule:()=>xt,setScheduleProxy:()=>Ua});var kl=null,xa=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(ui).map(s=>`<link rel="dns-prefetch" href="https://${s}">`).join(`\r
|
|
54
|
-
|
|
49
|
+
} `;var Go=class extends ne{constructor(e){super();u(this,"frameRate");u(this,"_canvas");u(this,"log");u(this,"hasAlpha",!1);u(this,"name");u(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,r){this._canvas&&(this._canvas.width=e,this._canvas.height=r)}createVideoTrackSource(e,r){return new li(this,e,{logger:this.log,name:r})}createVideoTrackDestination(e){return new Ws(this,e)}createVideoImageSource(e,r){return new Sa(this,r?Object.assign(r,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,r){return new ya(this,e,r?Object.assign(r,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};u(Go,"_ids",0);var nI={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},Gs=class Gs extends Go{constructor(){super(...arguments);u(this,"defaultProgam");u(this,"defaultVShader");u(this,"defaultFShader");u(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Go._ids++}`),this.ctx=this._canvas.getContext("webgl2",nI),!this.ctx)throw new he({code:te.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,oI),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,sI),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))}),this.log.info("video context created use webgl")}destroy(e){let r="";return e&&(r=e.message,this.error=e,Y.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${r}`?`: ${r}`:""),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 r;(r=this.ctx)==null||r.viewport(0,0,e,this.height),super.width=e}set height(e){var r;(r=this.ctx)==null||r.viewport(0,0,this.width,e),super.height=e}setSize(e,r){var o;(o=this.ctx)==null||o.viewport(0,0,e,r),super.setSize(e,r)}createShader(e,r){let o=this.ctx,s=o.createShader(e);return o.shaderSource(s,r),o.compileShader(s),s}createProgram(e,r){let o=this.ctx,s=o.createProgram();return o.attachShader(s,e),o.attachShader(s,r),o.linkProgram(s),o.getProgramParameter(s,o.LINK_STATUS)||this.log.error(o.getProgramInfoLog(s)),s}};u(Gs,"UNAVAILABLE","unavailable"),X([qe(ne.INIT,"created",{sync:!0,fail(e){Y.addFailedEvent({key:512700,error:e.cause||e})},success(){Y.addSuccessEvent({key:512700})}})],Gs.prototype,"create",1),X([qe("created",ne.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(Gs.UNAVAILABLE,e),this.removeAllListeners()}})],Gs.prototype,"destroy",1);var yt=Gs,kt=class extends Go{constructor(){super(...arguments);u(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Go._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new he({code:te.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this.log.info("video context created use 2d")}destroy(e){let r="";e&&(r=e.message,this.error=e,Y.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${r?`: ${r}`:""}`),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})}};X([qe(ne.INIT,"created",{sync:!0,fail(e){Y.addFailedEvent({key:512701,error:e.cause||e})},success(){Y.addSuccessEvent({key:512701})}})],kt.prototype,"create",1),X([qe("created",ne.INIT,{ignoreError:!0,sync:!0})],kt.prototype,"destroy",1);function aI(i){return[15,30,45,60].reduce((e,r)=>Math.abs(r-i)<Math.abs(e-i)?r:e)}var qi=class extends Hs{constructor(e,r,o=4){super(e,r,o);u(this,"mediaType",4);u(this,"source");u(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",s=>{this.room.emit("first-video-frame",s)})}play(e,r){return(dt(r==null?void 0:r.canvasRender)?r.canvasRender:Qt===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,r).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new kt({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let r=new Wo(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(r),this.player.setCanvas(e._canvas),Do()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let r=this.decodeFPS,o=aI(r);if(!je(r)||r<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${r} `);return}if(o===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${o} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${r}, closest: ${o}, current: ${e.frameRate}`),e.frameRate=o}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(d=>d.msg_user_info.str_identifier===this.userId))||{},r=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let o=e.find(d=>d.uint32_video_stream_type===r);return(o==null?void 0:o.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 r of this.manager.decodePipeline)if(r&&(e=r({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)}},xd=class extends qi{constructor(e,r){super(e,r,2);u(this,"mediaType",2);u(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var js=new Map;H.on(L.JOIN_SUCCESS,({room:i})=>{tt(i.userId,{eventId:32788})});H.on(L.LEAVE_START,({room:i})=>{tt(i.userId,{eventId:32789})});H.on(L.LOCAL_TRACK_PUBLISHED,({track:i})=>{if(i.room){let t=32769;i.mediaType===4?t=32768:i.mediaType===2&&(t=32805),tt(i.room.userId,{eventId:t})}});H.on(L.LOCAL_TRACK_UNPUBLISHED,({track:i})=>{if(i.room){let t=32771;i.mediaType===4?t=32770:i.mediaType===2&&(t=32806),tt(i.room.userId,{eventId:t})}});H.on(L.TRACK_MUTED,({track:i})=>{i.room&&(i.kind===D.AUDIO?tt(i.room.userId,{eventId:i.isRemote?32785:32772,remoteUserId:i.isRemote?i.userId:void 0}):tt(i.room.userId,{eventId:i.isRemote?32784:32773,remoteUserId:i.isRemote?i.userId:void 0}))});H.on(L.TRACK_UNMUTED,({track:i})=>{i.room&&(i.kind===D.AUDIO?tt(i.room.userId,{eventId:i.isRemote?32787:32774,remoteUserId:i.isRemote?i.userId:void 0}):tt(i.room.userId,{eventId:i.isRemote?32786:32775,remoteUserId:i.isRemote?i.userId:void 0}))});H.on(L.REMOTE_TRACK_SUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&tt(i.room.userId,{eventId:32777,remoteUserId:i.userId}),i.mediaType===4&&tt(i.room.userId,{eventId:32776,remoteUserId:i.userId}),i.mediaType===8&&tt(i.room.userId,{eventId:32803,remoteUserId:i.userId}))});H.on(L.REMOTE_TRACK_UNSUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&tt(i.room.userId,{eventId:32779,remoteUserId:i.userId}),i.mediaType===4&&tt(i.room.userId,{eventId:32778,remoteUserId:i.userId}),i.mediaType===8&&tt(i.room.userId,{eventId:32804,remoteUserId:i.userId}))});H.on(L.SWITCH_DEVICE_SUCCESS,({track:i})=>{i.room&&tt(i.room.userId,{eventId:i.kind===D.VIDEO?32780:32781})});H.on(L.LOCAL_TRACK_REPLACED,({track:i})=>{i.room&&tt(i.room.userId,{eventId:i.kind===D.VIDEO?32782:32783})});H.on(L.SIGNAL_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e})=>{let r;switch(e){case"CONNECTED":t==="RECONNECTING"?r=32795:r=32791;break;case"DISCONNECTED":t==="RECONNECTING"?r=32796:r=32790;break;case"RECONNECTING":r=32794;break}r&&tt(i.userId,{eventId:r})});H.on(L.PEER_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e,remoteUserId:r})=>{let o=!!r,s;switch(e){case"CONNECTED":t==="RECONNECTING"?s=o?32801:32798:s=o?32793:32792;break;case"DISCONNECTED":t==="RECONNECTING"&&(s=o?32802:32799);break;case"RECONNECTING":s=o?32800:32797;break}s&&tt(i.userId,{eventId:s,remoteUserId:r})});H.on(L.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:i,userId:t,remoteUserId:e,codec:r,isHWCodec:o,prevImplementation:s,streamType:n})=>{let d=o?1:0;s||(d=o?3:2);let p=r==="h264"?0:2,m={eventId:4004,param1:d,param2:p,streamType:n||2};e&&(m.remoteUserId=e,m.eventId=4005),tt(t,m),Y.addEnum({key:e?514701:513701,value:d}),Y.addEnum({key:e?514700:513700,value:p})});H.on(L.LOCAL_TRACK_RECAPTURE,({track:i,error:t})=>{if(i.userId){let e={eventId:2003,param1:0};i.kind===D.AUDIO?(e.streamType=1,t&&(e.param1=2)):(e.streamType=i.streamType==="auxiliary"?7:2,t&&(e.param1=8)),tt(i.userId,e)}});function tt(i,t){let e=Ee(Z({},t),{timestamp:In()});js.has(i)?js.get(i).push(e):js.set(i,[e])}function Df(i){if(js.has(i)){let t=js.get(i).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 js.delete(i),t}return[]}var cI=Di(Ui(),1);var dI=Object.create,Ud=Object.defineProperty,uI=Object.defineProperties,Pf=Object.getOwnPropertyDescriptor,lI=Object.getOwnPropertyDescriptors,xf=Object.getOwnPropertyNames,wf=Object.getOwnPropertySymbols,mI=Object.getPrototypeOf,kf=Object.prototype.hasOwnProperty,pI=Object.prototype.propertyIsEnumerable,Vm=(i,t,e)=>t in i?Ud(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Aa=(i,t)=>{for(var e in t||(t={}))kf.call(t,e)&&Vm(i,e,t[e]);if(wf)for(var e of wf(t))pI.call(t,e)&&Vm(i,e,t[e]);return i},ba=(i,t)=>uI(i,lI(t)),hI=(i,t)=>function(){return t||(0,i[xf(i)[0]])((t={exports:{}}).exports,t),t.exports},fI=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of xf(t))kf.call(i,o)||o===e||Ud(i,o,{get:()=>t[o],enumerable:!(r=Pf(t,o))||r.enumerable});return i},gI=(i,t,e)=>(e=i!=null?dI(mI(i)):{},fI(!t&&i&&i.__esModule?e:Ud(e,"default",{value:i,enumerable:!0}),i)),mi=(i,t,e,r)=>{for(var o,s=r>1?void 0:r?Pf(t,e):t,n=i.length-1;n>=0;n--)(o=i[n])&&(s=(r?o(t,e,s):o(s))||s);return r&&s&&Ud(t,e,s),s},Ar=(i,t,e)=>Vm(i,typeof t!="symbol"?t+"":t,e),EI=hI({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(i,t){"use strict";var e=Object.prototype.hasOwnProperty,r="~";function o(){}function s(m,E,_){this.fn=m,this.context=E,this.once=_||!1}function n(m,E,_,b,C){if(typeof _!="function")throw new TypeError("The listener must be a function");var k=new s(_,b||m,C),x=r?r+E:E;return m._events[x]?m._events[x].fn?m._events[x]=[m._events[x],k]:m._events[x].push(k):(m._events[x]=k,m._eventsCount++),m}function d(m,E){--m._eventsCount==0?m._events=new o:delete m._events[E]}function p(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),new o().__proto__||(r=!1)),p.prototype.eventNames=function(){var m,E,_=[];if(this._eventsCount===0)return _;for(E in m=this._events)e.call(m,E)&&_.push(r?E.slice(1):E);return Object.getOwnPropertySymbols?_.concat(Object.getOwnPropertySymbols(m)):_},p.prototype.listeners=function(m){var E=r?r+m:m,_=this._events[E];if(!_)return[];if(_.fn)return[_.fn];for(var b=0,C=_.length,k=new Array(C);b<C;b++)k[b]=_[b].fn;return k},p.prototype.listenerCount=function(m){var E=r?r+m:m,_=this._events[E];return _?_.fn?1:_.length:0},p.prototype.emit=function(m,E,_,b,C,k){var x=r?r+m:m;if(!this._events[x])return!1;var P,J,Q=this._events[x],De=arguments.length;if(Q.fn){switch(Q.once&&this.removeListener(m,Q.fn,void 0,!0),De){case 1:return Q.fn.call(Q.context),!0;case 2:return Q.fn.call(Q.context,E),!0;case 3:return Q.fn.call(Q.context,E,_),!0;case 4:return Q.fn.call(Q.context,E,_,b),!0;case 5:return Q.fn.call(Q.context,E,_,b,C),!0;case 6:return Q.fn.call(Q.context,E,_,b,C,k),!0}for(J=1,P=new Array(De-1);J<De;J++)P[J-1]=arguments[J];Q.fn.apply(Q.context,P)}else{var Ce,me=Q.length;for(J=0;J<me;J++)switch(Q[J].once&&this.removeListener(m,Q[J].fn,void 0,!0),De){case 1:Q[J].fn.call(Q[J].context);break;case 2:Q[J].fn.call(Q[J].context,E);break;case 3:Q[J].fn.call(Q[J].context,E,_);break;case 4:Q[J].fn.call(Q[J].context,E,_,b);break;default:if(!P)for(Ce=1,P=new Array(De-1);Ce<De;Ce++)P[Ce-1]=arguments[Ce];Q[J].fn.apply(Q[J].context,P)}}return!0},p.prototype.on=function(m,E,_){return n(this,m,E,_,!1)},p.prototype.once=function(m,E,_){return n(this,m,E,_,!0)},p.prototype.removeListener=function(m,E,_,b){var C=r?r+m:m;if(!this._events[C])return this;if(!E)return d(this,C),this;var k=this._events[C];if(k.fn)k.fn!==E||b&&!k.once||_&&k.context!==_||d(this,C);else{for(var x=0,P=[],J=k.length;x<J;x++)(k[x].fn!==E||b&&!k[x].once||_&&k[x].context!==_)&&P.push(k[x]);P.length?this._events[C]=P.length===1?P[0]:P:d(this,C)}return this},p.prototype.removeAllListeners=function(m){var E;return m?(E=r?r+m:m,this._events[E]&&d(this,E)):(this._events=new o,this._eventsCount=0),this},p.prototype.off=p.prototype.removeListener,p.prototype.addListener=p.prototype.on,p.prefixed=r,p.EventEmitter=p,t!==void 0&&(t.exports=p)}}),_I=gI(EI(),1),Mf=Symbol("instance"),RM=Symbol("abortCtrl"),kd=Symbol("cacheResult"),Um=class{constructor(i,t,e){this.oldState=i,this.newState=t,this.action=e,this.aborted=!1}abort(i){this.aborted=!0,va.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},Ld=class extends Error{constructor(i,t,e){super(t),this.state=i,this.message=t,this.cause=e}};function TI(i){return typeof i=="object"&&i&&"then"in i}var Ra=new Map;function Ji(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let p=Ra.get(r)||[];Ra.has(r)||Ra.set(r,p),p.push({from:i,to:t,action:n})}let d=s.value;s.value=function(...p){let m=this;if(e.context&&(m=Ht.get(typeof e.context=="function"?e.context.call(this,...p):e.context)),m.state===t)return e.sync?m[kd]:Promise.resolve(m[kd]);m.state instanceof Um&&m.state.action==e.abortAction&&m.state.abort(m);let E=null;Array.isArray(i)?i.length==0?m.state instanceof Um&&m.state.abort(m):typeof m.state=="string"&&i.includes(m.state)||(E=new Ld(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(E=new Ld(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i}`));let _=P=>{if(e.fail&&e.fail.call(this,P),e.sync){if(e.ignoreError)return P;throw P}return e.ignoreError?Promise.resolve(P):Promise.reject(P)};if(E)return _(E);let b=m.state,C=new Um(b,t,n);va.call(m,C);let k=P=>{var J;return m[kd]=P,C.aborted||(va.call(m,t),(J=e.success)===null||J===void 0||J.call(this,m[kd])),P},x=P=>(va.call(m,b,P),_(P));try{let P=d.apply(this,p);return TI(P)?P.then(k).catch(x):e.sync?k(P):Promise.resolve(k(P))}catch(P){return x(new Ld(m._state,`${m.name} ${n} from ${i} to ${t} failed: ${P}`,P instanceof Error?P:new Error(String(P))))}}}}function II(...i){return(t,e,r)=>{let o=r.value,s=e;r.value=function(...n){if(!i.includes(this.state.toString()))throw new Ld(this.state,`${this.name} ${s} failed: current state ${this.state} not in ${i}`);return o.apply(this,n)}}}var SI=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function va(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(Ht.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var Ht=class or extends _I.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=or.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[Mf];o?this.name=o.name+"-"+o.count++:r[Mf]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=Ra.get(t)||[],r=new Set,o=[],s=[],n=new Set,d=Object.getPrototypeOf(t);Ra.has(d)&&(d.stateDiagram.forEach(m=>r.add(m)),d.allStates.forEach(m=>n.add(m))),e.forEach(({from:m,to:E,action:_})=>{typeof m=="string"?o.push({from:m,to:E,action:_}):m.length?m.forEach(b=>{o.push({from:b,to:E,action:_})}):s.push({to:E,action:_})}),o.forEach(({from:m,to:E,action:_})=>{n.add(m),n.add(E),n.add(_+"ing"),r.add(`${m} --> ${_}ing : ${_}`),r.add(`${_}ing --> ${E} : ${_} \u{1F7E2}`),r.add(`${_}ing --> ${m} : ${_} \u{1F534}`)}),s.forEach(({to:m,action:E})=>{r.add(`${E}ing --> ${m} : ${E} \u{1F7E2}`),n.forEach(_=>{_!==m&&r.add(`${_} --> ${E}ing : ${E}`)})});let p=[...r];return Object.defineProperties(t,{stateDiagram:{value:p},allStates:{value:n}}),p}static get(t){let e;return typeof t=="string"?(e=or.instances.get(t),e||or.instances.set(t,e=new or(t,void 0,Object.create(or.prototype)))):(e=or.instances2.get(t),e||or.instances2.set(t,e=new or(t.constructor.name,void 0,Object.create(or.prototype)))),e}static getState(t){var e;return(e=or.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){SI(or.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){va.call(this,t)}};Ht.STATECHANGED="stateChanged",Ht.UPDATEAFSM="updateAFSM",Ht.INIT="[*]",Ht.ON="on",Ht.OFF="off",Ht.instances=new Map,Ht.instances2=new WeakMap;var qs=class extends Ht{constructor(){super(...arguments),Ar(this,"decoder"),Ar(this,"config")}initialize(){return y(this,null,function*(){this.decoder=new VideoDecoder({output:i=>{this.emit("videoFrame",i)},error:i=>{this.close(),this.emit("error",i)}})})}configure(i){this.config=i,this.decoder.configure(ba(Aa({},i),{codec:this.getCodec(i)}))}getCodec(i){switch(i.codec){case"hevc":return"hvc1.1.6.L0.12.34.56.78.9A.BC";case"av1":return"av01.0.05M.08";case"avc":return"avc1.420028";default:return i.codec}}decode(i){this.decoder.state==="configured"&&this.decoder.decode(new EncodedVideoChunk(i))}flush(){this.decoder.flush()}reset(){this.decoder.reset()}close(){this.decoder.state!=="closed"&&this.decoder.close()}};function yI(){var i;self.onmessage=t=>{if(t.data.type==="init"){let{canvas:e,wasmScript:r,wasmBinary:o}=t.data,s=e==null?void 0:e.getContext("2d"),n=0,d=0,p={wasmBinary:o,postRun:()=>{i=new p.VideoDecoder({videoInfo(m,E){n=m,d=E,console.log("video info",m,E)},yuvData(m,E){let _=n*d,b=_>>2,C=p.HEAPU32[m>>2],k=p.HEAPU32[1+(m>>2)],x=p.HEAPU32[2+(m>>2)],P=p.HEAPU8.subarray(C,C+_),J=p.HEAPU8.subarray(k,k+b),Q=p.HEAPU8.subarray(x,x+b),De=new Uint8Array(_+b+b);De.set(P),De.set(J,_),De.set(Q,_+b);let Ce=new VideoFrame(De,{codedWidth:n,codedHeight:d,format:"I420",timestamp:E});e?(s==null||s.drawImage(Ce,0,0,e.width,e.height),s==null||s.commit()):self.postMessage({type:"yuvData",videoFrame:Ce},[Ce])}}),self.postMessage({type:"ready"})}};Function("var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;return "+r)()(p)}else if(t.data.type==="decode"){let{packet:e}=t.data;i==null||i.decode(e.data,e.type=="key",e.timestamp)}else if(t.data.type==="setCodec"){let{codec:e,format:r,description:o}=t.data;i==null||i.setCodec(e,r,o!=null?o:"")}}}mi([Ji([Ht.INIT,"closed"],"initialized")],qs.prototype,"initialize",1),mi([Ji("initialized","configured",{sync:!0})],qs.prototype,"configure",1),mi([II("configured")],qs.prototype,"decode",1),mi([Ji([],Ht.INIT)],qs.prototype,"reset",1),mi([Ji([],"closed",{ignoreError:!0,sync:!0})],qs.prototype,"close",1);var Js=class extends Ht{constructor(i,t,e=!1,r,o=!1){super(),this.createModule=i,this.wasmBinary=t,this.workerMode=e,this.canvas=r,this.yuvMode=o,Ar(this,"worker"),Ar(this,"decoder"),Ar(this,"config"),Ar(this,"module",{}),Ar(this,"width",0),Ar(this,"height",0)}initialize(i){return y(this,null,function*(){var t;if(this.workerMode){let r=new RegExp("\\{(.+)\\}","s").exec(yI.toString())[1];this.worker=new Worker(URL.createObjectURL(new Blob([r],{type:"text/javascript"})));let o=(t=this.canvas)==null?void 0:t.transferControlToOffscreen(),s=yield this.wasmBinary;return console.warn("worker mode",s),this.worker.postMessage({type:"init",canvas:o,wasmScript:this.createModule.toString(),wasmBinary:s},o?[o,s]:[s]),new Promise(n=>{this.worker.onmessage=d=>{if(d.data.type==="ready")delete this.wasmBinary,n(),console.warn("worker mode initialize success");else if(d.data.type==="yuvData"){let{videoFrame:p}=d.data;this.emit("videoFrame",p)}}})}let e=this.module;return this.wasmBinary&&(e.wasmBinary=yield this.wasmBinary),e.print=r=>console.log(r),e.printErr=r=>console.log(`[JS] ERROR: ${r}`),e.onAbort=()=>console.log("[JS] FATAL: WASM ABORTED"),new Promise(r=>{e.postRun=o=>{this.decoder=new this.module.VideoDecoder(this),console.log("video soft decoder initialize success"),r()},i&&Object.assign(e,i),this.createModule(e)})})}configure(i){var t,e,r;this.config=i,(e=this.decoder)==null||e.setCodec(this.config.codec,this.config.description?"avcc":"annexb",(t=this.config.description)!=null?t:""),(r=this.worker)==null||r.postMessage({type:"setCodec",codec:this.config.codec,format:this.config.description?"avcc":"annexb",description:this.config.description})}decode(i){var t,e;(t=this.decoder)==null||t.decode(i.data,i.type=="key",i.timestamp),this.state==="configured"&&((e=this.worker)==null||e.postMessage({type:"decode",packet:i}))}flush(){}reset(){this.config=void 0,this.decoder&&this.decoder.clear()}close(){this.removeAllListeners(),this.decoder&&(this.decoder.clear(),this.decoder.delete())}videoInfo(i,t){this.width=i,this.height=t;let e={width:i,height:t};this.emit("videoCodecInfo",e)}yuvData(i,t){if(!this.module)return;let e=this.width*this.height,r=e>>2,o=this.module.HEAPU32[i>>2],s=this.module.HEAPU32[1+(i>>2)],n=this.module.HEAPU32[2+(i>>2)],d=this.module.HEAPU8.subarray(o,o+e),p=this.module.HEAPU8.subarray(s,s+r),m=this.module.HEAPU8.subarray(n,n+r);if(this.yuvMode)return void this.emit("videoFrame",[d,p,m]);let E=new Uint8Array(e+r+r);E.set(d),E.set(p,e),E.set(m,e+r),this.emit("videoFrame",new VideoFrame(E,{codedWidth:this.width,codedHeight:this.height,format:"I420",timestamp:t}))}errorInfo(i){let t={errMsg:i};this.emit("error",t)}};mi([Ji([Ht.INIT,"closed"],"initialized")],Js.prototype,"initialize",1),mi([Ji("initialized","configured")],Js.prototype,"configure",1),mi([Ji([],Ht.INIT)],Js.prototype,"reset",1),mi([Ji([],"closed")],Js.prototype,"close",1);var AI=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((a,c)=>{e=a,r=c});var s,n,d,p=Object.assign({},o),m="./this.program",E=typeof window=="object",_=typeof importScripts=="function",b=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(E||_)&&(_?b=self.location.href:typeof document!="undefined"&&document.currentScript&&(b=document.currentScript.src),i&&(b=i),b=b.indexOf("blob:")!==0?b.substr(0,b.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=a=>{var c=new XMLHttpRequest;return c.open("GET",a,!1),c.send(null),c.responseText},_&&(d=a=>{var c=new XMLHttpRequest;return c.open("GET",a,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),n=(a,c,l)=>{var h=new XMLHttpRequest;h.open("GET",a,!0),h.responseType="arraybuffer",h.onload=()=>{h.status==200||h.status==0&&h.response?c(h.response):l()},h.onerror=l,h.send(null)});var C,k=o.print||console.log.bind(console),x=o.printErr||console.error.bind(console);Object.assign(o,p),p=null,o.arguments&&o.arguments,o.thisProgram&&(m=o.thisProgram),o.quit&&o.quit,o.wasmBinary&&(C=o.wasmBinary);var P,J;o.noExitRuntime,typeof WebAssembly!="object"&&Cr("no native wasm support detected");var Q,De,Ce,me,Pe,Be,en,tn,rn,on=!1,vr=[],Qo=[],fi=[],ee=0,Hr=null,Wr=null;function sn(a){ee++,o.monitorRunDependencies&&o.monitorRunDependencies(ee)}function to(a){if(ee--,o.monitorRunDependencies&&o.monitorRunDependencies(ee),ee==0&&(Hr!==null&&(clearInterval(Hr),Hr=null),Wr)){var c=Wr;Wr=null,c()}}function Cr(a){o.onAbort&&o.onAbort(a),x(a="Aborted("+a+")"),on=!0,a+=". Build with -sASSERTIONS for more info.";var c=new WebAssembly.RuntimeError(a);throw r(c),c}var gi,ro,ge,Ge,Va="data:application/octet-stream;base64,";function G(a){return a.startsWith(Va)}function Gr(a){if(a==gi&&C)return new Uint8Array(C);if(d)return d(a);throw"both async and sync fetching of the wasm failed"}function Nr(a,c,l){return function(h){return C||!E&&!_||typeof fetch!="function"?Promise.resolve().then(()=>Gr(h)):fetch(h,{credentials:"same-origin"}).then(I=>{if(!I.ok)throw"failed to load wasm binary file at '"+h+"'";return I.arrayBuffer()}).catch(()=>Gr(h))}(a).then(h=>WebAssembly.instantiate(h,c)).then(h=>h).then(l,h=>{x("failed to asynchronously prepare wasm: "+h),Cr(h)})}G(gi="videodec.wasm")||(ro=gi,gi=o.locateFile?o.locateFile(ro,b):b+ro);var Ei=a=>{for(;a.length>0;)a.shift()(o)};function _i(a){this.excPtr=a,this.ptr=a-24,this.set_type=function(c){Be[this.ptr+4>>2]=c},this.get_type=function(){return Be[this.ptr+4>>2]},this.set_destructor=function(c){Be[this.ptr+8>>2]=c},this.get_destructor=function(){return Be[this.ptr+8>>2]},this.set_caught=function(c){c=c?1:0,Q[this.ptr+12|0]=c},this.get_caught=function(){return Q[this.ptr+12|0]!=0},this.set_rethrown=function(c){c=c?1:0,Q[this.ptr+13|0]=c},this.get_rethrown=function(){return Q[this.ptr+13|0]!=0},this.init=function(c,l){this.set_adjusted_ptr(0),this.set_type(c),this.set_destructor(l)},this.set_adjusted_ptr=function(c){Be[this.ptr+16>>2]=c},this.get_adjusted_ptr=function(){return Be[this.ptr+16>>2]},this.get_exception_ptr=function(){if(gn(this.get_type()))return Be[this.excPtr>>2];var c=this.get_adjusted_ptr();return c!==0?c:this.excPtr}}var V={isAbs:a=>a.charAt(0)==="/",splitPath:a=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1),normalizeArray:(a,c)=>{for(var l=0,h=a.length-1;h>=0;h--){var I=a[h];I==="."?a.splice(h,1):I===".."?(a.splice(h,1),l++):l&&(a.splice(h,1),l--)}if(c)for(;l;l--)a.unshift("..");return a},normalize:a=>{var c=V.isAbs(a),l=a.substr(-1)==="/";return(a=V.normalizeArray(a.split("/").filter(h=>!!h),!c).join("/"))||c||(a="."),a&&l&&(a+="/"),(c?"/":"")+a},dirname:a=>{var c=V.splitPath(a),l=c[0],h=c[1];return l||h?(h&&(h=h.substr(0,h.length-1)),l+h):"."},basename:a=>{if(a==="/")return"/";var c=(a=(a=V.normalize(a)).replace(/\/$/,"")).lastIndexOf("/");return c===-1?a:a.substr(c+1)},join:function(){var a=Array.prototype.slice.call(arguments);return V.normalize(a.join("/"))},join2:(a,c)=>V.normalize(a+"/"+c)},nn=a=>(nn=(()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return c=>crypto.getRandomValues(c);Cr("initRandomDevice")})())(a),Wt={resolve:function(){for(var a="",c=!1,l=arguments.length-1;l>=-1&&!c;l--){var h=l>=0?arguments[l]:f.cwd();if(typeof h!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!h)return"";a=h+"/"+a,c=V.isAbs(h)}return(c?"/":"")+(a=V.normalizeArray(a.split("/").filter(I=>!!I),!c).join("/"))||"."},relative:(a,c)=>{function l(w){for(var z=0;z<w.length&&w[z]==="";z++);for(var ie=w.length-1;ie>=0&&w[ie]==="";ie--);return z>ie?[]:w.slice(z,ie-z+1)}a=Wt.resolve(a).substr(1),c=Wt.resolve(c).substr(1);for(var h=l(a.split("/")),I=l(c.split("/")),S=Math.min(h.length,I.length),A=S,R=0;R<S;R++)if(h[R]!==I[R]){A=R;break}var M=[];for(R=A;R<h.length;R++)M.push("..");return(M=M.concat(I.slice(A))).join("/")}},Ti=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Dt=(a,c,l)=>{for(var h=c+l,I=c;a[I]&&!(I>=h);)++I;if(I-c>16&&a.buffer&&Ti)return Ti.decode(a.subarray(c,I));for(var S="";c<I;){var A=a[c++];if(128&A){var R=63&a[c++];if((224&A)!=192){var M=63&a[c++];if((A=(240&A)==224?(15&A)<<12|R<<6|M:(7&A)<<18|R<<12|M<<6|63&a[c++])<65536)S+=String.fromCharCode(A);else{var w=A-65536;S+=String.fromCharCode(55296|w>>10,56320|1023&w)}}else S+=String.fromCharCode((31&A)<<6|R)}else S+=String.fromCharCode(A)}return S},an=[],io=a=>{for(var c=0,l=0;l<a.length;++l){var h=a.charCodeAt(l);h<=127?c++:h<=2047?c+=2:h>=55296&&h<=57343?(c+=4,++l):c+=3}return c},oo=(a,c,l,h)=>{if(!(h>0))return 0;for(var I=l,S=l+h-1,A=0;A<a.length;++A){var R=a.charCodeAt(A);if(R>=55296&&R<=57343&&(R=65536+((1023&R)<<10)|1023&a.charCodeAt(++A)),R<=127){if(l>=S)break;c[l++]=R}else if(R<=2047){if(l+1>=S)break;c[l++]=192|R>>6,c[l++]=128|63&R}else if(R<=65535){if(l+2>=S)break;c[l++]=224|R>>12,c[l++]=128|R>>6&63,c[l++]=128|63&R}else{if(l+3>=S)break;c[l++]=240|R>>18,c[l++]=128|R>>12&63,c[l++]=128|R>>6&63,c[l++]=128|63&R}}return c[l]=0,l-I};function Yo(a,c,l){var h=l>0?l:io(a)+1,I=new Array(h),S=oo(a,I,0,I.length);return c&&(I.length=S),I}var nr={ttys:[],init:function(){},shutdown:function(){},register:function(a,c){nr.ttys[a]={input:[],output:[],ops:c},f.registerDevice(a,nr.stream_ops)},stream_ops:{open:function(a){var c=nr.ttys[a.node.rdev];if(!c)throw new f.ErrnoError(43);a.tty=c,a.seekable=!1},close:function(a){a.tty.ops.fsync(a.tty)},fsync:function(a){a.tty.ops.fsync(a.tty)},read:function(a,c,l,h,I){if(!a.tty||!a.tty.ops.get_char)throw new f.ErrnoError(60);for(var S=0,A=0;A<h;A++){var R;try{R=a.tty.ops.get_char(a.tty)}catch(M){throw new f.ErrnoError(29)}if(R===void 0&&S===0)throw new f.ErrnoError(6);if(R==null)break;S++,c[l+A]=R}return S&&(a.node.timestamp=Date.now()),S},write:function(a,c,l,h,I){if(!a.tty||!a.tty.ops.put_char)throw new f.ErrnoError(60);try{for(var S=0;S<h;S++)a.tty.ops.put_char(a.tty,c[l+S])}catch(A){throw new f.ErrnoError(29)}return h&&(a.node.timestamp=Date.now()),S}},default_tty_ops:{get_char:function(a){return(()=>{if(!an.length){var c=null;if(typeof window!="undefined"&&typeof window.prompt=="function"?(c=window.prompt("Input: "))!==null&&(c+=`
|
|
50
|
+
`):typeof readline=="function"&&(c=readline())!==null&&(c+=`
|
|
51
|
+
`),!c)return null;an=Yo(c,!0)}return an.shift()})()},put_char:function(a,c){c===null||c===10?(k(Dt(a.output,0)),a.output=[]):c!=0&&a.output.push(c)},fsync:function(a){a.output&&a.output.length>0&&(k(Dt(a.output,0)),a.output=[])},ioctl_tcgets:function(a){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(a,c,l){return 0},ioctl_tiocgwinsz:function(a){return[24,80]}},default_tty1_ops:{put_char:function(a,c){c===null||c===10?(x(Dt(a.output,0)),a.output=[]):c!=0&&a.output.push(c)},fsync:function(a){a.output&&a.output.length>0&&(x(Dt(a.output,0)),a.output=[])}}},cn=a=>{Cr()},Te={ops_table:null,mount:a=>Te.createNode(null,"/",16895,0),createNode(a,c,l,h){if(f.isBlkdev(l)||f.isFIFO(l))throw new f.ErrnoError(63);Te.ops_table||(Te.ops_table={dir:{node:{getattr:Te.node_ops.getattr,setattr:Te.node_ops.setattr,lookup:Te.node_ops.lookup,mknod:Te.node_ops.mknod,rename:Te.node_ops.rename,unlink:Te.node_ops.unlink,rmdir:Te.node_ops.rmdir,readdir:Te.node_ops.readdir,symlink:Te.node_ops.symlink},stream:{llseek:Te.stream_ops.llseek}},file:{node:{getattr:Te.node_ops.getattr,setattr:Te.node_ops.setattr},stream:{llseek:Te.stream_ops.llseek,read:Te.stream_ops.read,write:Te.stream_ops.write,allocate:Te.stream_ops.allocate,mmap:Te.stream_ops.mmap,msync:Te.stream_ops.msync}},link:{node:{getattr:Te.node_ops.getattr,setattr:Te.node_ops.setattr,readlink:Te.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Te.node_ops.getattr,setattr:Te.node_ops.setattr},stream:f.chrdev_stream_ops}});var I=f.createNode(a,c,l,h);return f.isDir(I.mode)?(I.node_ops=Te.ops_table.dir.node,I.stream_ops=Te.ops_table.dir.stream,I.contents={}):f.isFile(I.mode)?(I.node_ops=Te.ops_table.file.node,I.stream_ops=Te.ops_table.file.stream,I.usedBytes=0,I.contents=null):f.isLink(I.mode)?(I.node_ops=Te.ops_table.link.node,I.stream_ops=Te.ops_table.link.stream):f.isChrdev(I.mode)&&(I.node_ops=Te.ops_table.chrdev.node,I.stream_ops=Te.ops_table.chrdev.stream),I.timestamp=Date.now(),a&&(a.contents[c]=I,a.timestamp=I.timestamp),I},getFileDataAsTypedArray:a=>a.contents?a.contents.subarray?a.contents.subarray(0,a.usedBytes):new Uint8Array(a.contents):new Uint8Array(0),expandFileStorage(a,c){var l=a.contents?a.contents.length:0;if(!(l>=c)){c=Math.max(c,l*(l<1048576?2:1.125)>>>0),l!=0&&(c=Math.max(c,256));var h=a.contents;a.contents=new Uint8Array(c),a.usedBytes>0&&a.contents.set(h.subarray(0,a.usedBytes),0)}},resizeFileStorage(a,c){if(a.usedBytes!=c)if(c==0)a.contents=null,a.usedBytes=0;else{var l=a.contents;a.contents=new Uint8Array(c),l&&a.contents.set(l.subarray(0,Math.min(c,a.usedBytes))),a.usedBytes=c}},node_ops:{getattr(a){var c={};return c.dev=f.isChrdev(a.mode)?a.id:1,c.ino=a.id,c.mode=a.mode,c.nlink=1,c.uid=0,c.gid=0,c.rdev=a.rdev,f.isDir(a.mode)?c.size=4096:f.isFile(a.mode)?c.size=a.usedBytes:f.isLink(a.mode)?c.size=a.link.length:c.size=0,c.atime=new Date(a.timestamp),c.mtime=new Date(a.timestamp),c.ctime=new Date(a.timestamp),c.blksize=4096,c.blocks=Math.ceil(c.size/c.blksize),c},setattr(a,c){c.mode!==void 0&&(a.mode=c.mode),c.timestamp!==void 0&&(a.timestamp=c.timestamp),c.size!==void 0&&Te.resizeFileStorage(a,c.size)},lookup(a,c){throw f.genericErrors[44]},mknod:(a,c,l,h)=>Te.createNode(a,c,l,h),rename(a,c,l){if(f.isDir(a.mode)){var h;try{h=f.lookupNode(c,l)}catch(S){}if(h)for(var I in h.contents)throw new f.ErrnoError(55)}delete a.parent.contents[a.name],a.parent.timestamp=Date.now(),a.name=l,c.contents[l]=a,c.timestamp=a.parent.timestamp,a.parent=c},unlink(a,c){delete a.contents[c],a.timestamp=Date.now()},rmdir(a,c){var l=f.lookupNode(a,c);for(var h in l.contents)throw new f.ErrnoError(55);delete a.contents[c],a.timestamp=Date.now()},readdir(a){var c=[".",".."];for(var l in a.contents)a.contents.hasOwnProperty(l)&&c.push(l);return c},symlink(a,c,l){var h=Te.createNode(a,c,41471,0);return h.link=l,h},readlink(a){if(!f.isLink(a.mode))throw new f.ErrnoError(28);return a.link}},stream_ops:{read(a,c,l,h,I){var S=a.node.contents;if(I>=a.node.usedBytes)return 0;var A=Math.min(a.node.usedBytes-I,h);if(A>8&&S.subarray)c.set(S.subarray(I,I+A),l);else for(var R=0;R<A;R++)c[l+R]=S[I+R];return A},write(a,c,l,h,I,S){if(!h)return 0;var A=a.node;if(A.timestamp=Date.now(),c.subarray&&(!A.contents||A.contents.subarray)){if(S)return A.contents=c.subarray(l,l+h),A.usedBytes=h,h;if(A.usedBytes===0&&I===0)return A.contents=c.slice(l,l+h),A.usedBytes=h,h;if(I+h<=A.usedBytes)return A.contents.set(c.subarray(l,l+h),I),h}if(Te.expandFileStorage(A,I+h),A.contents.subarray&&c.subarray)A.contents.set(c.subarray(l,l+h),I);else for(var R=0;R<h;R++)A.contents[I+R]=c[l+R];return A.usedBytes=Math.max(A.usedBytes,I+h),h},llseek(a,c,l){var h=c;if(l===1?h+=a.position:l===2&&f.isFile(a.node.mode)&&(h+=a.node.usedBytes),h<0)throw new f.ErrnoError(28);return h},allocate(a,c,l){Te.expandFileStorage(a.node,c+l),a.node.usedBytes=Math.max(a.node.usedBytes,c+l)},mmap(a,c,l,h,I){if(!f.isFile(a.node.mode))throw new f.ErrnoError(43);var S,A,R=a.node.contents;if(2&I||R.buffer!==Q.buffer){if((l>0||l+c<R.length)&&(R=R.subarray?R.subarray(l,l+c):Array.prototype.slice.call(R,l,l+c)),A=!0,!(S=cn()))throw new f.ErrnoError(48);Q.set(R,S)}else A=!1,S=R.byteOffset;return{ptr:S,allocated:A}},msync:(a,c,l,h,I)=>(Te.stream_ops.write(a,c,0,h,l,!1),0)}},Eu=(a,c,l,h)=>{var I=h?"":`al ${a}`;n(a,S=>{var A;A=`Loading data file "${a}" failed (no arrayBuffer).`,S||Cr(A),c(new Uint8Array(S)),I&&to()},S=>{if(!l)throw`Loading data file "${a}" failed.`;l()}),I&&sn()},_u=o.preloadPlugins||[];function O(a,c){var l=0;return a&&(l|=365),c&&(l|=146),l}var f={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(a,c={})=>{if(!(a=Wt.resolve(a)))return{path:"",node:null};if((c=Object.assign({follow_mount:!0,recurse_count:0},c)).recurse_count>8)throw new f.ErrnoError(32);for(var l=a.split("/").filter(w=>!!w),h=f.root,I="/",S=0;S<l.length;S++){var A=S===l.length-1;if(A&&c.parent)break;if(h=f.lookupNode(h,l[S]),I=V.join2(I,l[S]),f.isMountpoint(h)&&(!A||A&&c.follow_mount)&&(h=h.mounted.root),!A||c.follow)for(var R=0;f.isLink(h.mode);){var M=f.readlink(I);if(I=Wt.resolve(V.dirname(I),M),h=f.lookupPath(I,{recurse_count:c.recurse_count+1}).node,R++>40)throw new f.ErrnoError(32)}}return{path:I,node:h}},getPath:a=>{for(var c;;){if(f.isRoot(a)){var l=a.mount.mountpoint;return c?l[l.length-1]!=="/"?`${l}/${c}`:l+c:l}c=c?`${a.name}/${c}`:a.name,a=a.parent}},hashName:(a,c)=>{for(var l=0,h=0;h<c.length;h++)l=(l<<5)-l+c.charCodeAt(h)|0;return(a+l>>>0)%f.nameTable.length},hashAddNode:a=>{var c=f.hashName(a.parent.id,a.name);a.name_next=f.nameTable[c],f.nameTable[c]=a},hashRemoveNode:a=>{var c=f.hashName(a.parent.id,a.name);if(f.nameTable[c]===a)f.nameTable[c]=a.name_next;else for(var l=f.nameTable[c];l;){if(l.name_next===a){l.name_next=a.name_next;break}l=l.name_next}},lookupNode:(a,c)=>{var l=f.mayLookup(a);if(l)throw new f.ErrnoError(l,a);for(var h=f.hashName(a.id,c),I=f.nameTable[h];I;I=I.name_next){var S=I.name;if(I.parent.id===a.id&&S===c)return I}return f.lookup(a,c)},createNode:(a,c,l,h)=>{var I=new f.FSNode(a,c,l,h);return f.hashAddNode(I),I},destroyNode:a=>{f.hashRemoveNode(a)},isRoot:a=>a===a.parent,isMountpoint:a=>!!a.mounted,isFile:a=>(61440&a)==32768,isDir:a=>(61440&a)==16384,isLink:a=>(61440&a)==40960,isChrdev:a=>(61440&a)==8192,isBlkdev:a=>(61440&a)==24576,isFIFO:a=>(61440&a)==4096,isSocket:a=>!(49152&~a),flagsToPermissionString:a=>{var c=["r","w","rw"][3&a];return 512&a&&(c+="w"),c},nodePermissions:(a,c)=>f.ignorePermissions||(!c.includes("r")||292&a.mode)&&(!c.includes("w")||146&a.mode)&&(!c.includes("x")||73&a.mode)?0:2,mayLookup:a=>{var c=f.nodePermissions(a,"x");return c||(a.node_ops.lookup?0:2)},mayCreate:(a,c)=>{try{return f.lookupNode(a,c),20}catch(l){}return f.nodePermissions(a,"wx")},mayDelete:(a,c,l)=>{var h;try{h=f.lookupNode(a,c)}catch(S){return S.errno}var I=f.nodePermissions(a,"wx");if(I)return I;if(l){if(!f.isDir(h.mode))return 54;if(f.isRoot(h)||f.getPath(h)===f.cwd())return 10}else if(f.isDir(h.mode))return 31;return 0},mayOpen:(a,c)=>a?f.isLink(a.mode)?32:f.isDir(a.mode)&&(f.flagsToPermissionString(c)!=="r"||512&c)?31:f.nodePermissions(a,f.flagsToPermissionString(c)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var a=0;a<=f.MAX_OPEN_FDS;a++)if(!f.streams[a])return a;throw new f.ErrnoError(33)},getStreamChecked:a=>{var c=f.getStream(a);if(!c)throw new f.ErrnoError(8);return c},getStream:a=>f.streams[a],createStream:(a,c=-1)=>(f.FSStream||(f.FSStream=function(){this.shared={}},f.FSStream.prototype={},Object.defineProperties(f.FSStream.prototype,{object:{get(){return this.node},set(l){this.node=l}},isRead:{get(){return(2097155&this.flags)!=1}},isWrite:{get(){return!!(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(l){this.shared.flags=l}},position:{get(){return this.shared.position},set(l){this.shared.position=l}}})),a=Object.assign(new f.FSStream,a),c==-1&&(c=f.nextfd()),a.fd=c,f.streams[c]=a,a),closeStream:a=>{f.streams[a]=null},chrdev_stream_ops:{open:a=>{var c=f.getDevice(a.node.rdev);a.stream_ops=c.stream_ops,a.stream_ops.open&&a.stream_ops.open(a)},llseek:()=>{throw new f.ErrnoError(70)}},major:a=>a>>8,minor:a=>255&a,makedev:(a,c)=>a<<8|c,registerDevice:(a,c)=>{f.devices[a]={stream_ops:c}},getDevice:a=>f.devices[a],getMounts:a=>{for(var c=[],l=[a];l.length;){var h=l.pop();c.push(h),l.push.apply(l,h.mounts)}return c},syncfs:(a,c)=>{typeof a=="function"&&(c=a,a=!1),f.syncFSRequests++,f.syncFSRequests>1&&x(`warning: ${f.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var l=f.getMounts(f.root.mount),h=0;function I(A){return f.syncFSRequests--,c(A)}function S(A){if(A)return S.errored?void 0:(S.errored=!0,I(A));++h>=l.length&&I(null)}l.forEach(A=>{if(!A.type.syncfs)return S(null);A.type.syncfs(A,a,S)})},mount:(a,c,l)=>{var h,I=l==="/",S=!l;if(I&&f.root)throw new f.ErrnoError(10);if(!I&&!S){var A=f.lookupPath(l,{follow_mount:!1});if(l=A.path,h=A.node,f.isMountpoint(h))throw new f.ErrnoError(10);if(!f.isDir(h.mode))throw new f.ErrnoError(54)}var R={type:a,opts:c,mountpoint:l,mounts:[]},M=a.mount(R);return M.mount=R,R.root=M,I?f.root=M:h&&(h.mounted=R,h.mount&&h.mount.mounts.push(R)),M},unmount:a=>{var c=f.lookupPath(a,{follow_mount:!1});if(!f.isMountpoint(c.node))throw new f.ErrnoError(28);var l=c.node,h=l.mounted,I=f.getMounts(h);Object.keys(f.nameTable).forEach(A=>{for(var R=f.nameTable[A];R;){var M=R.name_next;I.includes(R.mount)&&f.destroyNode(R),R=M}}),l.mounted=null;var S=l.mount.mounts.indexOf(h);l.mount.mounts.splice(S,1)},lookup:(a,c)=>a.node_ops.lookup(a,c),mknod:(a,c,l)=>{var h=f.lookupPath(a,{parent:!0}).node,I=V.basename(a);if(!I||I==="."||I==="..")throw new f.ErrnoError(28);var S=f.mayCreate(h,I);if(S)throw new f.ErrnoError(S);if(!h.node_ops.mknod)throw new f.ErrnoError(63);return h.node_ops.mknod(h,I,c,l)},create:(a,c)=>(c=c!==void 0?c:438,c&=4095,c|=32768,f.mknod(a,c,0)),mkdir:(a,c)=>(c=c!==void 0?c:511,c&=1023,c|=16384,f.mknod(a,c,0)),mkdirTree:(a,c)=>{for(var l=a.split("/"),h="",I=0;I<l.length;++I)if(l[I]){h+="/"+l[I];try{f.mkdir(h,c)}catch(S){if(S.errno!=20)throw S}}},mkdev:(a,c,l)=>(l===void 0&&(l=c,c=438),c|=8192,f.mknod(a,c,l)),symlink:(a,c)=>{if(!Wt.resolve(a))throw new f.ErrnoError(44);var l=f.lookupPath(c,{parent:!0}).node;if(!l)throw new f.ErrnoError(44);var h=V.basename(c),I=f.mayCreate(l,h);if(I)throw new f.ErrnoError(I);if(!l.node_ops.symlink)throw new f.ErrnoError(63);return l.node_ops.symlink(l,h,a)},rename:(a,c)=>{var l,h,I=V.dirname(a),S=V.dirname(c),A=V.basename(a),R=V.basename(c);if(l=f.lookupPath(a,{parent:!0}).node,h=f.lookupPath(c,{parent:!0}).node,!l||!h)throw new f.ErrnoError(44);if(l.mount!==h.mount)throw new f.ErrnoError(75);var M,w=f.lookupNode(l,A),z=Wt.relative(a,S);if(z.charAt(0)!==".")throw new f.ErrnoError(28);if((z=Wt.relative(c,I)).charAt(0)!==".")throw new f.ErrnoError(55);try{M=f.lookupNode(h,R)}catch(re){}if(w!==M){var ie=f.isDir(w.mode),oe=f.mayDelete(l,A,ie);if(oe)throw new f.ErrnoError(oe);if(oe=M?f.mayDelete(h,R,ie):f.mayCreate(h,R))throw new f.ErrnoError(oe);if(!l.node_ops.rename)throw new f.ErrnoError(63);if(f.isMountpoint(w)||M&&f.isMountpoint(M))throw new f.ErrnoError(10);if(h!==l&&(oe=f.nodePermissions(l,"w")))throw new f.ErrnoError(oe);f.hashRemoveNode(w);try{l.node_ops.rename(w,h,R)}catch(re){throw re}finally{f.hashAddNode(w)}}},rmdir:a=>{var c=f.lookupPath(a,{parent:!0}).node,l=V.basename(a),h=f.lookupNode(c,l),I=f.mayDelete(c,l,!0);if(I)throw new f.ErrnoError(I);if(!c.node_ops.rmdir)throw new f.ErrnoError(63);if(f.isMountpoint(h))throw new f.ErrnoError(10);c.node_ops.rmdir(c,l),f.destroyNode(h)},readdir:a=>{var c=f.lookupPath(a,{follow:!0}).node;if(!c.node_ops.readdir)throw new f.ErrnoError(54);return c.node_ops.readdir(c)},unlink:a=>{var c=f.lookupPath(a,{parent:!0}).node;if(!c)throw new f.ErrnoError(44);var l=V.basename(a),h=f.lookupNode(c,l),I=f.mayDelete(c,l,!1);if(I)throw new f.ErrnoError(I);if(!c.node_ops.unlink)throw new f.ErrnoError(63);if(f.isMountpoint(h))throw new f.ErrnoError(10);c.node_ops.unlink(c,l),f.destroyNode(h)},readlink:a=>{var c=f.lookupPath(a).node;if(!c)throw new f.ErrnoError(44);if(!c.node_ops.readlink)throw new f.ErrnoError(28);return Wt.resolve(f.getPath(c.parent),c.node_ops.readlink(c))},stat:(a,c)=>{var l=f.lookupPath(a,{follow:!c}).node;if(!l)throw new f.ErrnoError(44);if(!l.node_ops.getattr)throw new f.ErrnoError(63);return l.node_ops.getattr(l)},lstat:a=>f.stat(a,!0),chmod:(a,c,l)=>{var h;if(typeof a=="string"?h=f.lookupPath(a,{follow:!l}).node:h=a,!h.node_ops.setattr)throw new f.ErrnoError(63);h.node_ops.setattr(h,{mode:4095&c|-4096&h.mode,timestamp:Date.now()})},lchmod:(a,c)=>{f.chmod(a,c,!0)},fchmod:(a,c)=>{var l=f.getStreamChecked(a);f.chmod(l.node,c)},chown:(a,c,l,h)=>{var I;if(typeof a=="string"?I=f.lookupPath(a,{follow:!h}).node:I=a,!I.node_ops.setattr)throw new f.ErrnoError(63);I.node_ops.setattr(I,{timestamp:Date.now()})},lchown:(a,c,l)=>{f.chown(a,c,l,!0)},fchown:(a,c,l)=>{var h=f.getStreamChecked(a);f.chown(h.node,c,l)},truncate:(a,c)=>{if(c<0)throw new f.ErrnoError(28);var l;if(typeof a=="string"?l=f.lookupPath(a,{follow:!0}).node:l=a,!l.node_ops.setattr)throw new f.ErrnoError(63);if(f.isDir(l.mode))throw new f.ErrnoError(31);if(!f.isFile(l.mode))throw new f.ErrnoError(28);var h=f.nodePermissions(l,"w");if(h)throw new f.ErrnoError(h);l.node_ops.setattr(l,{size:c,timestamp:Date.now()})},ftruncate:(a,c)=>{var l=f.getStreamChecked(a);if(!(2097155&l.flags))throw new f.ErrnoError(28);f.truncate(l.node,c)},utime:(a,c,l)=>{var h=f.lookupPath(a,{follow:!0}).node;h.node_ops.setattr(h,{timestamp:Math.max(c,l)})},open:(a,c,l)=>{if(a==="")throw new f.ErrnoError(44);var h;if(l=l===void 0?438:l,l=64&(c=typeof c=="string"?function(R){var M={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[R];if(M===void 0)throw new Error(`Unknown file open mode: ${R}`);return M}(c):c)?4095&l|32768:0,typeof a=="object")h=a;else{a=V.normalize(a);try{h=f.lookupPath(a,{follow:!(131072&c)}).node}catch(R){}}var I=!1;if(64&c)if(h){if(128&c)throw new f.ErrnoError(20)}else h=f.mknod(a,l,0),I=!0;if(!h)throw new f.ErrnoError(44);if(f.isChrdev(h.mode)&&(c&=-513),65536&c&&!f.isDir(h.mode))throw new f.ErrnoError(54);if(!I){var S=f.mayOpen(h,c);if(S)throw new f.ErrnoError(S)}512&c&&!I&&f.truncate(h,0),c&=-131713;var A=f.createStream({node:h,path:f.getPath(h),flags:c,seekable:!0,position:0,stream_ops:h.stream_ops,ungotten:[],error:!1});return A.stream_ops.open&&A.stream_ops.open(A),!o.logReadFiles||1&c||(f.readFiles||(f.readFiles={}),a in f.readFiles||(f.readFiles[a]=1)),A},close:a=>{if(f.isClosed(a))throw new f.ErrnoError(8);a.getdents&&(a.getdents=null);try{a.stream_ops.close&&a.stream_ops.close(a)}catch(c){throw c}finally{f.closeStream(a.fd)}a.fd=null},isClosed:a=>a.fd===null,llseek:(a,c,l)=>{if(f.isClosed(a))throw new f.ErrnoError(8);if(!a.seekable||!a.stream_ops.llseek)throw new f.ErrnoError(70);if(l!=0&&l!=1&&l!=2)throw new f.ErrnoError(28);return a.position=a.stream_ops.llseek(a,c,l),a.ungotten=[],a.position},read:(a,c,l,h,I)=>{if(h<0||I<0)throw new f.ErrnoError(28);if(f.isClosed(a))throw new f.ErrnoError(8);if((2097155&a.flags)==1)throw new f.ErrnoError(8);if(f.isDir(a.node.mode))throw new f.ErrnoError(31);if(!a.stream_ops.read)throw new f.ErrnoError(28);var S=I!==void 0;if(S){if(!a.seekable)throw new f.ErrnoError(70)}else I=a.position;var A=a.stream_ops.read(a,c,l,h,I);return S||(a.position+=A),A},write:(a,c,l,h,I,S)=>{if(h<0||I<0)throw new f.ErrnoError(28);if(f.isClosed(a))throw new f.ErrnoError(8);if(!(2097155&a.flags))throw new f.ErrnoError(8);if(f.isDir(a.node.mode))throw new f.ErrnoError(31);if(!a.stream_ops.write)throw new f.ErrnoError(28);a.seekable&&1024&a.flags&&f.llseek(a,0,2);var A=I!==void 0;if(A){if(!a.seekable)throw new f.ErrnoError(70)}else I=a.position;var R=a.stream_ops.write(a,c,l,h,I,S);return A||(a.position+=R),R},allocate:(a,c,l)=>{if(f.isClosed(a))throw new f.ErrnoError(8);if(c<0||l<=0)throw new f.ErrnoError(28);if(!(2097155&a.flags))throw new f.ErrnoError(8);if(!f.isFile(a.node.mode)&&!f.isDir(a.node.mode))throw new f.ErrnoError(43);if(!a.stream_ops.allocate)throw new f.ErrnoError(138);a.stream_ops.allocate(a,c,l)},mmap:(a,c,l,h,I)=>{if(2&h&&!(2&I)&&(2097155&a.flags)!=2)throw new f.ErrnoError(2);if((2097155&a.flags)==1)throw new f.ErrnoError(2);if(!a.stream_ops.mmap)throw new f.ErrnoError(43);return a.stream_ops.mmap(a,c,l,h,I)},msync:(a,c,l,h,I)=>a.stream_ops.msync?a.stream_ops.msync(a,c,l,h,I):0,munmap:a=>0,ioctl:(a,c,l)=>{if(!a.stream_ops.ioctl)throw new f.ErrnoError(59);return a.stream_ops.ioctl(a,c,l)},readFile:(a,c={})=>{if(c.flags=c.flags||0,c.encoding=c.encoding||"binary",c.encoding!=="utf8"&&c.encoding!=="binary")throw new Error(`Invalid encoding type "${c.encoding}"`);var l,h=f.open(a,c.flags),I=f.stat(a).size,S=new Uint8Array(I);return f.read(h,S,0,I,0),c.encoding==="utf8"?l=Dt(S,0):c.encoding==="binary"&&(l=S),f.close(h),l},writeFile:(a,c,l={})=>{l.flags=l.flags||577;var h=f.open(a,l.flags,l.mode);if(typeof c=="string"){var I=new Uint8Array(io(c)+1),S=oo(c,I,0,I.length);f.write(h,I,0,S,void 0,l.canOwn)}else{if(!ArrayBuffer.isView(c))throw new Error("Unsupported data type");f.write(h,c,0,c.byteLength,void 0,l.canOwn)}f.close(h)},cwd:()=>f.currentPath,chdir:a=>{var c=f.lookupPath(a,{follow:!0});if(c.node===null)throw new f.ErrnoError(44);if(!f.isDir(c.node.mode))throw new f.ErrnoError(54);var l=f.nodePermissions(c.node,"x");if(l)throw new f.ErrnoError(l);f.currentPath=c.path},createDefaultDirectories:()=>{f.mkdir("/tmp"),f.mkdir("/home"),f.mkdir("/home/web_user")},createDefaultDevices:()=>{f.mkdir("/dev"),f.registerDevice(f.makedev(1,3),{read:()=>0,write:(h,I,S,A,R)=>A}),f.mkdev("/dev/null",f.makedev(1,3)),nr.register(f.makedev(5,0),nr.default_tty_ops),nr.register(f.makedev(6,0),nr.default_tty1_ops),f.mkdev("/dev/tty",f.makedev(5,0)),f.mkdev("/dev/tty1",f.makedev(6,0));var a=new Uint8Array(1024),c=0,l=()=>(c===0&&(c=nn(a).byteLength),a[--c]);f.createDevice("/dev","random",l),f.createDevice("/dev","urandom",l),f.mkdir("/dev/shm"),f.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{f.mkdir("/proc");var a=f.mkdir("/proc/self");f.mkdir("/proc/self/fd"),f.mount({mount:()=>{var c=f.createNode(a,"fd",16895,73);return c.node_ops={lookup:(l,h)=>{var I=+h,S=f.getStreamChecked(I),A={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>S.path}};return A.parent=A,A}},c}},{},"/proc/self/fd")},createStandardStreams:()=>{o.stdin?f.createDevice("/dev","stdin",o.stdin):f.symlink("/dev/tty","/dev/stdin"),o.stdout?f.createDevice("/dev","stdout",null,o.stdout):f.symlink("/dev/tty","/dev/stdout"),o.stderr?f.createDevice("/dev","stderr",null,o.stderr):f.symlink("/dev/tty1","/dev/stderr"),f.open("/dev/stdin",0),f.open("/dev/stdout",1),f.open("/dev/stderr",1)},ensureErrnoError:()=>{f.ErrnoError||(f.ErrnoError=function(a,c){this.name="ErrnoError",this.node=c,this.setErrno=function(l){this.errno=l},this.setErrno(a),this.message="FS error"},f.ErrnoError.prototype=new Error,f.ErrnoError.prototype.constructor=f.ErrnoError,[44].forEach(a=>{f.genericErrors[a]=new f.ErrnoError(a),f.genericErrors[a].stack="<generic error, no stack>"}))},staticInit:()=>{f.ensureErrnoError(),f.nameTable=new Array(4096),f.mount(Te,{},"/"),f.createDefaultDirectories(),f.createDefaultDevices(),f.createSpecialDirectories(),f.filesystems={MEMFS:Te}},init:(a,c,l)=>{f.init.initialized=!0,f.ensureErrnoError(),o.stdin=a||o.stdin,o.stdout=c||o.stdout,o.stderr=l||o.stderr,f.createStandardStreams()},quit:()=>{f.init.initialized=!1;for(var a=0;a<f.streams.length;a++){var c=f.streams[a];c&&f.close(c)}},findObject:(a,c)=>{var l=f.analyzePath(a,c);return l.exists?l.object:null},analyzePath:(a,c)=>{try{a=(h=f.lookupPath(a,{follow:!c})).path}catch(I){}var l={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var h=f.lookupPath(a,{parent:!0});l.parentExists=!0,l.parentPath=h.path,l.parentObject=h.node,l.name=V.basename(a),h=f.lookupPath(a,{follow:!c}),l.exists=!0,l.path=h.path,l.object=h.node,l.name=h.node.name,l.isRoot=h.path==="/"}catch(I){l.error=I.errno}return l},createPath:(a,c,l,h)=>{a=typeof a=="string"?a:f.getPath(a);for(var I=c.split("/").reverse();I.length;){var S=I.pop();if(S){var A=V.join2(a,S);try{f.mkdir(A)}catch(R){}a=A}}return A},createFile:(a,c,l,h,I)=>{var S=V.join2(typeof a=="string"?a:f.getPath(a),c),A=O(h,I);return f.create(S,A)},createDataFile:(a,c,l,h,I,S)=>{var A=c;a&&(a=typeof a=="string"?a:f.getPath(a),A=c?V.join2(a,c):a);var R=O(h,I),M=f.create(A,R);if(l){if(typeof l=="string"){for(var w=new Array(l.length),z=0,ie=l.length;z<ie;++z)w[z]=l.charCodeAt(z);l=w}f.chmod(M,146|R);var oe=f.open(M,577);f.write(oe,l,0,l.length,0,S),f.close(oe),f.chmod(M,R)}return M},createDevice:(a,c,l,h)=>{var I=V.join2(typeof a=="string"?a:f.getPath(a),c),S=O(!!l,!!h);f.createDevice.major||(f.createDevice.major=64);var A=f.makedev(f.createDevice.major++,0);return f.registerDevice(A,{open:R=>{R.seekable=!1},close:R=>{h&&h.buffer&&h.buffer.length&&h(10)},read:(R,M,w,z,ie)=>{for(var oe=0,re=0;re<z;re++){var ye;try{ye=l()}catch(Le){throw new f.ErrnoError(29)}if(ye===void 0&&oe===0)throw new f.ErrnoError(6);if(ye==null)break;oe++,M[w+re]=ye}return oe&&(R.node.timestamp=Date.now()),oe},write:(R,M,w,z,ie)=>{for(var oe=0;oe<z;oe++)try{h(M[w+oe])}catch(re){throw new f.ErrnoError(29)}return z&&(R.node.timestamp=Date.now()),oe}}),f.mkdev(I,S,A)},forceLoadFile:a=>{if(a.isDevice||a.isFolder||a.link||a.contents)return!0;if(typeof XMLHttpRequest!="undefined")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{a.contents=Yo(s(a.url),!0),a.usedBytes=a.contents.length}catch(c){throw new f.ErrnoError(29)}},createLazyFile:(a,c,l,h,I)=>{function S(){this.lengthKnown=!1,this.chunks=[]}if(S.prototype.get=function(ie){if(!(ie>this.length-1||ie<0)){var oe=ie%this.chunkSize,re=ie/this.chunkSize|0;return this.getter(re)[oe]}},S.prototype.setDataGetter=function(ie){this.getter=ie},S.prototype.cacheLength=function(){var ie=new XMLHttpRequest;if(ie.open("HEAD",l,!1),ie.send(null),!(ie.status>=200&&ie.status<300||ie.status===304))throw new Error("Couldn't load "+l+". Status: "+ie.status);var oe,re=Number(ie.getResponseHeader("Content-length")),ye=(oe=ie.getResponseHeader("Accept-Ranges"))&&oe==="bytes",Le=(oe=ie.getResponseHeader("Content-Encoding"))&&oe==="gzip",Re=1048576;ye||(Re=re);var Ke=this;Ke.setDataGetter(Je=>{var lt=Je*Re,Ni=(Je+1)*Re-1;if(Ni=Math.min(Ni,re-1),Ke.chunks[Je]===void 0&&(Ke.chunks[Je]=((tr,mo)=>{if(tr>mo)throw new Error("invalid range ("+tr+", "+mo+") or no bytes requested!");if(mo>re-1)throw new Error("only "+re+" bytes available! programmer error!");var ot=new XMLHttpRequest;if(ot.open("GET",l,!1),re!==Re&&ot.setRequestHeader("Range","bytes="+tr+"-"+mo),ot.responseType="arraybuffer",ot.overrideMimeType&&ot.overrideMimeType("text/plain; charset=x-user-defined"),ot.send(null),!(ot.status>=200&&ot.status<300||ot.status===304))throw new Error("Couldn't load "+l+". Status: "+ot.status);return ot.response!==void 0?new Uint8Array(ot.response||[]):Yo(ot.responseText||"",!0)})(lt,Ni)),Ke.chunks[Je]===void 0)throw new Error("doXHR failed!");return Ke.chunks[Je]}),!Le&&re||(Re=re=1,re=this.getter(0).length,Re=re,k("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=re,this._chunkSize=Re,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!_)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var A=new S;Object.defineProperties(A,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var R={isDevice:!1,contents:A}}else R={isDevice:!1,url:l};var M=f.createFile(a,c,R,h,I);R.contents?M.contents=R.contents:R.url&&(M.contents=null,M.url=R.url),Object.defineProperties(M,{usedBytes:{get:function(){return this.contents.length}}});var w={};function z(ie,oe,re,ye,Le){var Re=ie.node.contents;if(Le>=Re.length)return 0;var Ke=Math.min(Re.length-Le,ye);if(Re.slice)for(var Je=0;Je<Ke;Je++)oe[re+Je]=Re[Le+Je];else for(Je=0;Je<Ke;Je++)oe[re+Je]=Re.get(Le+Je);return Ke}return Object.keys(M.stream_ops).forEach(ie=>{var oe=M.stream_ops[ie];w[ie]=function(){return f.forceLoadFile(M),oe.apply(null,arguments)}}),w.read=(ie,oe,re,ye,Le)=>(f.forceLoadFile(M),z(ie,oe,re,ye,Le)),w.mmap=(ie,oe,re,ye,Le)=>{f.forceLoadFile(M);var Re=cn();if(!Re)throw new f.ErrnoError(48);return z(ie,Q,Re,oe,re),{ptr:Re,allocated:!0}},M.stream_ops=w,M}},Ii=(a,c)=>a?Dt(De,a,c):"",ft={DEFAULT_POLLMASK:5,calculateAt:function(a,c,l){if(V.isAbs(c))return c;var h;if(a===-100?h=f.cwd():h=ft.getStreamFromFD(a).path,c.length==0){if(!l)throw new f.ErrnoError(44);return h}return V.join2(h,c)},doStat:function(a,c,l){try{var h=a(c)}catch(R){if(R&&R.node&&V.normalize(c)!==V.normalize(f.getPath(R.node)))return-54;throw R}Pe[l>>2]=h.dev,Pe[l+4>>2]=h.mode,Be[l+8>>2]=h.nlink,Pe[l+12>>2]=h.uid,Pe[l+16>>2]=h.gid,Pe[l+20>>2]=h.rdev,Ge=[h.size>>>0,(ge=h.size,+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],Pe[l+24>>2]=Ge[0],Pe[l+28>>2]=Ge[1],Pe[l+32>>2]=4096,Pe[l+36>>2]=h.blocks;var I=h.atime.getTime(),S=h.mtime.getTime(),A=h.ctime.getTime();return Ge=[Math.floor(I/1e3)>>>0,(ge=Math.floor(I/1e3),+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],Pe[l+40>>2]=Ge[0],Pe[l+44>>2]=Ge[1],Be[l+48>>2]=I%1e3*1e3,Ge=[Math.floor(S/1e3)>>>0,(ge=Math.floor(S/1e3),+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],Pe[l+56>>2]=Ge[0],Pe[l+60>>2]=Ge[1],Be[l+64>>2]=S%1e3*1e3,Ge=[Math.floor(A/1e3)>>>0,(ge=Math.floor(A/1e3),+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],Pe[l+72>>2]=Ge[0],Pe[l+76>>2]=Ge[1],Be[l+80>>2]=A%1e3*1e3,Ge=[h.ino>>>0,(ge=h.ino,+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],Pe[l+88>>2]=Ge[0],Pe[l+92>>2]=Ge[1],0},doMsync:function(a,c,l,h,I){if(!f.isFile(c.node.mode))throw new f.ErrnoError(43);if(2&h)return 0;var S=De.slice(a,a+l);f.msync(c,S,I,l,h)},varargs:void 0,get:()=>(ft.varargs+=4,Pe[ft.varargs-4>>2]),getStr:a=>Ii(a),getStreamFromFD:function(a){return f.getStreamChecked(a)}};function jr(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${a}`)}}var Ba=void 0;function _t(a){for(var c="",l=a;De[l];)c+=Ba[De[l++]];return c}var Si={},er={},Zo={},yi=void 0;function ke(a){throw new yi(a)}var $a=void 0;function zt(a){throw new $a(a)}function so(a,c,l){function h(R){var M=l(R);M.length!==a.length&&zt("Mismatched type converter count");for(var w=0;w<a.length;++w)ar(a[w],M[w])}a.forEach(function(R){Zo[R]=c});var I=new Array(c.length),S=[],A=0;c.forEach((R,M)=>{er.hasOwnProperty(R)?I[M]=er[R]:(S.push(R),Si.hasOwnProperty(R)||(Si[R]=[]),Si[R].push(()=>{I[M]=er[R],++A===S.length&&h(I)}))}),S.length===0&&h(I)}function ar(a,c,l={}){if(!("argPackAdvance"in c))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(h,I,S={}){var A=I.name;if(h||ke(`type "${A}" must have a positive integer typeid pointer`),er.hasOwnProperty(h)){if(S.ignoreDuplicateRegistrations)return;ke(`Cannot register type '${A}' twice`)}if(er[h]=I,delete Zo[h],Si.hasOwnProperty(h)){var R=Si[h];delete Si[h],R.forEach(M=>M())}}(a,c,l)}function Ko(a){if(!(this instanceof wr)||!(a instanceof wr))return!1;for(var c=this.$$.ptrType.registeredClass,l=this.$$.ptr,h=a.$$.ptrType.registeredClass,I=a.$$.ptr;c.baseClass;)l=c.upcast(l),c=c.baseClass;for(;h.baseClass;)I=h.upcast(I),h=h.baseClass;return c===h&&l===I}function no(a){ke(a.$$.ptrType.registeredClass.name+" instance already deleted")}var es=!1;function Fa(a){}function ts(a){a.count.value-=1,a.count.value===0&&function(c){c.smartPtr?c.smartPtrType.rawDestructor(c.smartPtr):c.ptrType.registeredClass.rawDestructor(c.ptr)}(a)}function Ha(a,c,l){if(c===l)return a;if(l.baseClass===void 0)return null;var h=Ha(a,c,l.baseClass);return h===null?null:l.downcast(h)}var Wa={};function Tu(){return Object.keys(Dr).length}function rs(){var a=[];for(var c in Dr)Dr.hasOwnProperty(c)&&a.push(Dr[c]);return a}var ao=[];function dn(){for(;ao.length;){var a=ao.pop();a.$$.deleteScheduled=!1,a.delete()}}var co=void 0;function cr(a){co=a,ao.length&&co&&co(dn)}var Dr={};function Ga(a,c){return c=function(l,h){for(h===void 0&&ke("ptr should not be undefined");l.baseClass;)h=l.upcast(h),l=l.baseClass;return h}(a,c),Dr[c]}function is(a,c){return c.ptrType&&c.ptr||zt("makeClassHandle requires ptr and ptrType"),!!c.smartPtrType!=!!c.smartPtr&&zt("Both smartPtrType and smartPtr must be specified"),c.count={value:1},dr(Object.create(a,{$$:{value:c}}))}function Iu(a){var c=this.getPointee(a);if(!c)return this.destructor(a),null;var l=Ga(this.registeredClass,c);if(l!==void 0){if(l.$$.count.value===0)return l.$$.ptr=c,l.$$.smartPtr=a,l.clone();var h=l.clone();return this.destructor(a),h}function I(){return this.isSmartPointer?is(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:c,smartPtrType:this,smartPtr:a}):is(this.registeredClass.instancePrototype,{ptrType:this,ptr:a})}var S,A=this.registeredClass.getActualType(c),R=Wa[A];if(!R)return I.call(this);S=this.isConst?R.constPointerType:R.pointerType;var M=Ha(c,this.registeredClass,S.registeredClass);return M===null?I.call(this):this.isSmartPointer?is(S.registeredClass.instancePrototype,{ptrType:S,ptr:M,smartPtrType:this,smartPtr:a}):is(S.registeredClass.instancePrototype,{ptrType:S,ptr:M})}var dr=function(a){return typeof FinalizationRegistry=="undefined"?(dr=c=>c,a):(es=new FinalizationRegistry(c=>{ts(c.$$)}),Fa=c=>es.unregister(c),(dr=c=>{var l=c.$$;if(l.smartPtr){var h={$$:l};es.register(c,h,c)}return c})(a))};function ja(){if(this.$$.ptr||no(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var a,c=dr(Object.create(Object.getPrototypeOf(this),{$$:{value:(a=this.$$,{count:a.count,deleteScheduled:a.deleteScheduled,preservePointerOnDelete:a.preservePointerOnDelete,ptr:a.ptr,ptrType:a.ptrType,smartPtr:a.smartPtr,smartPtrType:a.smartPtrType})}}));return c.$$.count.value+=1,c.$$.deleteScheduled=!1,c}function qa(){this.$$.ptr||no(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ke("Object already scheduled for deletion"),Fa(this),ts(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function un(){return!this.$$.ptr}function Ja(){return this.$$.ptr||no(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ke("Object already scheduled for deletion"),ao.push(this),ao.length===1&&co&&co(dn),this.$$.deleteScheduled=!0,this}function wr(){}var za=48,Xa=57;function uo(a){if(a===void 0)return"_unknown";var c=(a=a.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return c>=za&&c<=Xa?`_${a}`:a}function Vt(a,c){return a=uo(a),{[a]:function(){return c.apply(this,arguments)}}[a]}function ln(a,c,l){if(a[c].overloadTable===void 0){var h=a[c];a[c]=function(){return a[c].overloadTable.hasOwnProperty(arguments.length)||ke(`Function '${l}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[c].overloadTable})!`),a[c].overloadTable[arguments.length].apply(this,arguments)},a[c].overloadTable=[],a[c].overloadTable[h.argCount]=h}}function Su(a,c,l,h,I,S,A,R){this.name=a,this.constructor=c,this.instancePrototype=l,this.rawDestructor=h,this.baseClass=I,this.getActualType=S,this.upcast=A,this.downcast=R,this.pureVirtualFunctions=[]}function Ai(a,c,l){for(;c!==l;)c.upcast||ke(`Expected null or instance of ${l.name}, got an instance of ${c.name}`),a=c.upcast(a),c=c.baseClass;return a}function mn(a,c){if(c===null)return this.isReference&&ke(`null is not a valid ${this.name}`),0;c.$$||ke(`Cannot pass "${as(c)}" as a ${this.name}`),c.$$.ptr||ke(`Cannot pass deleted object as a pointer of type ${this.name}`);var l=c.$$.ptrType.registeredClass;return Ai(c.$$.ptr,l,this.registeredClass)}function yu(a,c){var l;if(c===null)return this.isReference&&ke(`null is not a valid ${this.name}`),this.isSmartPointer?(l=this.rawConstructor(),a!==null&&a.push(this.rawDestructor,l),l):0;c.$$||ke(`Cannot pass "${as(c)}" as a ${this.name}`),c.$$.ptr||ke(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&c.$$.ptrType.isConst&&ke(`Cannot convert argument of type ${c.$$.smartPtrType?c.$$.smartPtrType.name:c.$$.ptrType.name} to parameter type ${this.name}`);var h=c.$$.ptrType.registeredClass;if(l=Ai(c.$$.ptr,h,this.registeredClass),this.isSmartPointer)switch(c.$$.smartPtr===void 0&&ke("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:c.$$.smartPtrType===this?l=c.$$.smartPtr:ke(`Cannot convert argument of type ${c.$$.smartPtrType?c.$$.smartPtrType.name:c.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:l=c.$$.smartPtr;break;case 2:if(c.$$.smartPtrType===this)l=c.$$.smartPtr;else{var I=c.clone();l=this.rawShare(l,vi.toHandle(function(){I.delete()})),a!==null&&a.push(this.rawDestructor,l)}break;default:ke("Unsupporting sharing policy")}return l}function Au(a,c){if(c===null)return this.isReference&&ke(`null is not a valid ${this.name}`),0;c.$$||ke(`Cannot pass "${as(c)}" as a ${this.name}`),c.$$.ptr||ke(`Cannot pass deleted object as a pointer of type ${this.name}`),c.$$.ptrType.isConst&&ke(`Cannot convert argument of type ${c.$$.ptrType.name} to parameter type ${this.name}`);var l=c.$$.ptrType.registeredClass;return Ai(c.$$.ptr,l,this.registeredClass)}function lo(a){return this.fromWireType(Pe[a>>2])}function Qa(a){return this.rawGetPointee&&(a=this.rawGetPointee(a)),a}function bu(a){this.rawDestructor&&this.rawDestructor(a)}function Ya(a){a!==null&&a.delete()}function ur(a,c,l,h,I,S,A,R,M,w,z){this.name=a,this.registeredClass=c,this.isReference=l,this.isConst=h,this.isSmartPointer=I,this.pointeeType=S,this.sharingPolicy=A,this.rawGetPointee=R,this.rawConstructor=M,this.rawShare=w,this.rawDestructor=z,I||c.baseClass!==void 0?this.toWireType=yu:h?(this.toWireType=mn,this.destructorFunction=null):(this.toWireType=Au,this.destructorFunction=null)}var os=[],Za=a=>{var c=os[a];return c||(a>=os.length&&(os.length=a+1),os[a]=c=rn.get(a)),c},Ru=(a,c,l)=>a.includes("j")?((h,I,S)=>{var A=o["dynCall_"+h];return S&&S.length?A.apply(null,[I].concat(S)):A.call(null,I)})(a,c,l):Za(c).apply(null,l),vu=(a,c)=>{var l=[];return function(){return l.length=0,Object.assign(l,arguments),Ru(a,c,l)}};function bi(a,c){var l=(a=_t(a)).includes("j")?vu(a,c):Za(c);return typeof l!="function"&&ke(`unknown function pointer with signature ${a}: ${c}`),l}var Ka=void 0;function ss(a){var c=mr(a),l=_t(c);return Tt(c),l}function ns(a,c){var l=[],h={};throw c.forEach(function I(S){h[S]||er[S]||(Zo[S]?Zo[S].forEach(I):(l.push(S),h[S]=!0))}),new Ka(`${a}: `+l.map(ss).join([", "]))}function pn(a,c){for(var l=[],h=0;h<a;h++)l.push(Be[c+4*h>>2]);return l}function ec(a){for(;a.length;){var c=a.pop();a.pop()(c)}}function hn(a,c){if(!(a instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof a} which is not a function`);var l=Vt(a.name||"unknownFunctionName",function(){});l.prototype=a.prototype;var h=new l,I=a.apply(h,c);return I instanceof Object?I:h}function Ri(a,c,l,h,I,S){var A=c.length;A<2&&ke("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var R=c[1]!==null&&l!==null,M=!1,w=1;w<c.length;++w)if(c[w]!==null&&c[w].destructorFunction===void 0){M=!0;break}var z=c[0].name!=="void",ie="",oe="";for(w=0;w<A-2;++w)ie+=(w!==0?", ":"")+"arg"+w,oe+=(w!==0?", ":"")+"arg"+w+"Wired";var re=`
|
|
52
|
+
return function ${uo(a)}(${ie}) {
|
|
53
|
+
if (arguments.length !== ${A-2}) {
|
|
54
|
+
throwBindingError('function ${a} called with ${arguments.length} arguments, expected ${A-2} args!');
|
|
55
|
+
}`;M&&(re+=`var destructors = [];
|
|
56
|
+
`);var ye=M?"destructors":"null",Le=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],Re=[ke,h,I,ec,c[0],c[1]];for(R&&(re+="var thisWired = classParam.toWireType("+ye+`, this);
|
|
57
|
+
`),w=0;w<A-2;++w)re+="var arg"+w+"Wired = argType"+w+".toWireType("+ye+", arg"+w+"); // "+c[w+2].name+`
|
|
58
|
+
`,Le.push("argType"+w),Re.push(c[w+2]);if(R&&(oe="thisWired"+(oe.length>0?", ":"")+oe),re+=(z||S?"var rv = ":"")+"invoker(fn"+(oe.length>0?", ":"")+oe+`);
|
|
59
|
+
`,M)re+=`runDestructors(destructors);
|
|
60
|
+
`;else for(w=R?1:2;w<c.length;++w){var Ke=w===1?"thisWired":"arg"+(w-2)+"Wired";c[w].destructorFunction!==null&&(re+=Ke+"_dtor("+Ke+"); // "+c[w].name+`
|
|
61
|
+
`,Le.push(Ke+"_dtor"),Re.push(c[w].destructorFunction))}return z&&(re+=`var ret = retType.fromWireType(rv);
|
|
62
|
+
return ret;
|
|
63
|
+
`),re+=`}
|
|
64
|
+
`,Le.push(re),hn(Function,Le).apply(null,Re)}function tc(){this.allocated=[void 0],this.freelist=[]}var wt=new tc;function rc(a){a>=wt.reserved&&--wt.get(a).refcount==0&&wt.free(a)}function lr(){for(var a=0,c=wt.reserved;c<wt.allocated.length;++c)wt.allocated[c]!==void 0&&++a;return a}var vi={toValue:a=>(a||ke("Cannot use deleted val. handle = "+a),wt.get(a).value),toHandle:a=>{switch(a){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return wt.allocate({refcount:1,value:a})}}};function as(a){if(a===null)return"null";var c=typeof a;return c==="object"||c==="array"||c==="function"?a.toString():""+a}function ic(a,c){switch(c){case 2:return function(l){return this.fromWireType(en[l>>2])};case 3:return function(l){return this.fromWireType(tn[l>>3])};default:throw new TypeError("Unknown float type: "+a)}}function oc(a,c,l){switch(c){case 0:return l?function(h){return Q[h]}:function(h){return De[h]};case 1:return l?function(h){return Ce[h>>1]}:function(h){return me[h>>1]};case 2:return l?function(h){return Pe[h>>2]}:function(h){return Be[h>>2]};default:throw new TypeError("Unknown integer type: "+a)}}var T=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,g=(a,c)=>{for(var l=a,h=l>>1,I=h+c/2;!(h>=I)&&me[h];)++h;if((l=h<<1)-a>32&&T)return T.decode(De.subarray(a,l));for(var S="",A=0;!(A>=c/2);++A){var R=Ce[a+2*A>>1];if(R==0)break;S+=String.fromCharCode(R)}return S},v=(a,c,l)=>{if(l===void 0&&(l=2147483647),l<2)return 0;for(var h=c,I=(l-=2)<2*a.length?l/2:a.length,S=0;S<I;++S){var A=a.charCodeAt(S);Ce[c>>1]=A,c+=2}return Ce[c>>1]=0,c-h},N=a=>2*a.length,U=(a,c)=>{for(var l=0,h="";!(l>=c/4);){var I=Pe[a+4*l>>2];if(I==0)break;if(++l,I>=65536){var S=I-65536;h+=String.fromCharCode(55296|S>>10,56320|1023&S)}else h+=String.fromCharCode(I)}return h},W=(a,c,l)=>{if(l===void 0&&(l=2147483647),l<4)return 0;for(var h=c,I=h+l-4,S=0;S<a.length;++S){var A=a.charCodeAt(S);if(A>=55296&&A<=57343&&(A=65536+((1023&A)<<10)|1023&a.charCodeAt(++S)),Pe[c>>2]=A,(c+=4)+4>I)break}return Pe[c>>2]=0,c-h},j=a=>{for(var c=0,l=0;l<a.length;++l){var h=a.charCodeAt(l);h>=55296&&h<=57343&&++l,c+=4}return c},q={},K=[],F=[],ce={},Ae=()=>{if(!Ae.strings){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:m||"./this.program"};for(var c in ce)ce[c]===void 0?delete a[c]:a[c]=ce[c];var l=[];for(var c in a)l.push(`${c}=${a[c]}`);Ae.strings=l}return Ae.strings},Se,le,be,Ze=function(a,c,l,h){a||(a=this),this.parent=a,this.mount=a.mount,this.mounted=null,this.id=f.nextInode++,this.name=c,this.mode=l,this.node_ops={},this.stream_ops={},this.rdev=h},Fe=365,ct=146;Object.defineProperties(Ze.prototype,{read:{get:function(){return(this.mode&Fe)===Fe},set:function(a){a?this.mode|=Fe:this.mode&=-366}},write:{get:function(){return(this.mode&ct)===ct},set:function(a){a?this.mode|=ct:this.mode&=-147}},isFolder:{get:function(){return f.isDir(this.mode)}},isDevice:{get:function(){return f.isChrdev(this.mode)}}}),f.FSNode=Ze,f.createPreloadedFile=function(a,c,l,h,I,S,A,R,M,w){var z=c?Wt.resolve(V.join2(a,c)):a;function ie(oe){function re(ye){w&&w(),R||f.createDataFile(a,c,ye,h,I,M),S&&S(),to()}(function(ye,Le,Re,Ke){typeof Browser!="undefined"&&Browser.init();var Je=!1;return _u.forEach(function(lt){Je||lt.canHandle(Le)&&(lt.handle(ye,Le,Re,Ke),Je=!0)}),Je})(oe,z,re,()=>{A&&A(),to()})||re(oe)}sn(),typeof l=="string"?Eu(l,oe=>ie(oe),A):ie(l)},f.staticInit(),function(){for(var a=new Array(256),c=0;c<256;++c)a[c]=String.fromCharCode(c);Ba=a}(),yi=o.BindingError=class extends Error{constructor(a){super(a),this.name="BindingError"}},$a=o.InternalError=class extends Error{constructor(a){super(a),this.name="InternalError"}},wr.prototype.isAliasOf=Ko,wr.prototype.clone=ja,wr.prototype.delete=qa,wr.prototype.isDeleted=un,wr.prototype.deleteLater=Ja,o.getInheritedInstanceCount=Tu,o.getLiveInheritedInstances=rs,o.flushPendingDeletes=dn,o.setDelayFunction=cr,ur.prototype.getPointee=Qa,ur.prototype.destructor=bu,ur.prototype.argPackAdvance=8,ur.prototype.readValueFromPointer=lo,ur.prototype.deleteObject=Ya,ur.prototype.fromWireType=Iu,Ka=o.UnboundTypeError=(Se=Error,(be=Vt(le="UnboundTypeError",function(a){this.name=le,this.message=a;var c=new Error(a).stack;c!==void 0&&(this.stack=this.toString()+`
|
|
65
|
+
`+c.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(Se.prototype),be.prototype.constructor=be,be.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},be),Object.assign(tc.prototype,{get(a){return this.allocated[a]},has(a){return this.allocated[a]!==void 0},allocate(a){var c=this.freelist.pop()||this.allocated.length;return this.allocated[c]=a,c},free(a){this.allocated[a]=void 0,this.freelist.push(a)}}),wt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),wt.reserved=wt.allocated.length,o.count_emval_handles=lr;var He,Rt={p:function(a,c,l){throw new _i(a).init(c,l),a},C:function(a,c,l){ft.varargs=l;try{var h=ft.getStreamFromFD(a);switch(c){case 0:return(I=ft.get())<0?-28:f.createStream(h,I).fd;case 1:case 2:case 6:case 7:return 0;case 3:return h.flags;case 4:var I=ft.get();return h.flags|=I,0;case 5:return I=ft.get(),Ce[I+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return S=28,Pe[fn()>>2]=S,-1}}catch(A){if(f===void 0||A.name!=="ErrnoError")throw A;return-A.errno}var S},w:function(a,c,l,h){ft.varargs=h;try{c=ft.getStr(c),c=ft.calculateAt(a,c);var I=h?ft.get():0;return f.open(c,l,I).fd}catch(S){if(f===void 0||S.name!=="ErrnoError")throw S;return-S.errno}},t:function(a,c,l,h,I){},n:function(a,c,l,h,I){var S=jr(l);ar(a,{name:c=_t(c),fromWireType:function(A){return!!A},toWireType:function(A,R){return R?h:I},argPackAdvance:8,readValueFromPointer:function(A){var R;if(l===1)R=Q;else if(l===2)R=Ce;else{if(l!==4)throw new TypeError("Unknown boolean type size: "+c);R=Pe}return this.fromWireType(R[A>>S])},destructorFunction:null})},r:function(a,c,l,h,I,S,A,R,M,w,z,ie,oe){z=_t(z),S=bi(I,S),R&&(R=bi(A,R)),w&&(w=bi(M,w)),oe=bi(ie,oe);var re=uo(z);(function(ye,Le,Re){o.hasOwnProperty(ye)?((Re===void 0||o[ye].overloadTable!==void 0&&o[ye].overloadTable[Re]!==void 0)&&ke(`Cannot register public name '${ye}' twice`),ln(o,ye,ye),o.hasOwnProperty(Re)&&ke(`Cannot register multiple overloads of a function with the same number of arguments (${Re})!`),o[ye].overloadTable[Re]=Le):(o[ye]=Le,Re!==void 0&&(o[ye].numArguments=Re))})(re,function(){ns(`Cannot construct ${z} due to unbound types`,[h])}),so([a,c,l],h?[h]:[],function(ye){var Le,Re;ye=ye[0],Re=h?(Le=ye.registeredClass).instancePrototype:wr.prototype;var Ke=Vt(re,function(){if(Object.getPrototypeOf(this)!==Je)throw new yi("Use 'new' to construct "+z);if(lt.constructor_body===void 0)throw new yi(z+" has no accessible constructor");var ot=lt.constructor_body[arguments.length];if(ot===void 0)throw new yi(`Tried to invoke ctor of ${z} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(lt.constructor_body).toString()}) parameters instead!`);return ot.apply(this,arguments)}),Je=Object.create(Re,{constructor:{value:Ke}});Ke.prototype=Je;var lt=new Su(z,Ke,Je,oe,Le,S,R,w);lt.baseClass&&(lt.baseClass.__derivedClasses===void 0&&(lt.baseClass.__derivedClasses=[]),lt.baseClass.__derivedClasses.push(lt));var Ni=new ur(z,lt,!0,!1,!1),tr=new ur(z+"*",lt,!1,!1,!1),mo=new ur(z+" const*",lt,!1,!0,!1);return Wa[a]={pointerType:tr,constPointerType:mo},function(ot,yp,Cu){o.hasOwnProperty(ot)||zt("Replacing nonexistant public symbol"),o[ot].overloadTable!==void 0&&Cu!==void 0?o[ot].overloadTable[Cu]=yp:(o[ot]=yp,o[ot].argCount=Cu)}(re,Ke),[Ni,tr,mo]})},q:function(a,c,l,h,I,S){var A=pn(c,l);I=bi(h,I),so([],[a],function(R){var M=`constructor ${(R=R[0]).name}`;if(R.registeredClass.constructor_body===void 0&&(R.registeredClass.constructor_body=[]),R.registeredClass.constructor_body[c-1]!==void 0)throw new yi(`Cannot register multiple constructors with identical number of parameters (${c-1}) for class '${R.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return R.registeredClass.constructor_body[c-1]=()=>{ns(`Cannot construct ${R.name} due to unbound types`,A)},so([],A,function(w){return w.splice(1,0,null),R.registeredClass.constructor_body[c-1]=Ri(M,w,null,I,S),[]}),[]})},d:function(a,c,l,h,I,S,A,R,M){var w=pn(l,h);c=_t(c),S=bi(I,S),so([],[a],function(z){var ie=`${(z=z[0]).name}.${c}`;function oe(){ns(`Cannot call ${ie} due to unbound types`,w)}c.startsWith("@@")&&(c=Symbol[c.substring(2)]),R&&z.registeredClass.pureVirtualFunctions.push(c);var re=z.registeredClass.instancePrototype,ye=re[c];return ye===void 0||ye.overloadTable===void 0&&ye.className!==z.name&&ye.argCount===l-2?(oe.argCount=l-2,oe.className=z.name,re[c]=oe):(ln(re,c,ie),re[c].overloadTable[l-2]=oe),so([],w,function(Le){var Re=Ri(ie,Le,z,S,A,M);return re[c].overloadTable===void 0?(Re.argCount=l-2,re[c]=Re):re[c].overloadTable[l-2]=Re,[]}),[]})},D:function(a,c){ar(a,{name:c=_t(c),fromWireType:function(l){var h=vi.toValue(l);return rc(l),h},toWireType:function(l,h){return vi.toHandle(h)},argPackAdvance:8,readValueFromPointer:lo,destructorFunction:null})},k:function(a,c,l){var h=jr(l);ar(a,{name:c=_t(c),fromWireType:function(I){return I},toWireType:function(I,S){return S},argPackAdvance:8,readValueFromPointer:ic(c,h),destructorFunction:null})},c:function(a,c,l,h,I){c=_t(c),I===-1&&(I=4294967295);var S=jr(l),A=w=>w;if(h===0){var R=32-8*l;A=w=>w<<R>>>R}var M=c.includes("unsigned");ar(a,{name:c,fromWireType:A,toWireType:M?function(w,z){return this.name,z>>>0}:function(w,z){return this.name,z},argPackAdvance:8,readValueFromPointer:oc(c,S,h!==0),destructorFunction:null})},b:function(a,c,l){var h=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][c];function I(S){var A=Be,R=A[S>>=2],M=A[S+1];return new h(A.buffer,M,R)}ar(a,{name:l=_t(l),fromWireType:I,argPackAdvance:8,readValueFromPointer:I},{ignoreDuplicateRegistrations:!0})},j:function(a,c){var l=(c=_t(c))==="std::string";ar(a,{name:c,fromWireType:function(h){var I,S=Be[h>>2],A=h+4;if(l)for(var R=A,M=0;M<=S;++M){var w=A+M;if(M==S||De[w]==0){var z=Ii(R,w-R);I===void 0?I=z:(I+="\0",I+=z),R=w+1}}else{var ie=new Array(S);for(M=0;M<S;++M)ie[M]=String.fromCharCode(De[A+M]);I=ie.join("")}return Tt(h),I},toWireType:function(h,I){var S;I instanceof ArrayBuffer&&(I=new Uint8Array(I));var A=typeof I=="string";A||I instanceof Uint8Array||I instanceof Uint8ClampedArray||I instanceof Int8Array||ke("Cannot pass non-string to std::string"),S=l&&A?io(I):I.length;var R=Ci(4+S+1),M=R+4;if(Be[R>>2]=S,l&&A)oo(I,De,M,S+1);else if(A)for(var w=0;w<S;++w){var z=I.charCodeAt(w);z>255&&(Tt(M),ke("String has UTF-16 code units that do not fit in 8 bits")),De[M+w]=z}else for(w=0;w<S;++w)De[M+w]=I[w];return h!==null&&h.push(Tt,R),R},argPackAdvance:8,readValueFromPointer:lo,destructorFunction:function(h){Tt(h)}})},f:function(a,c,l){var h,I,S,A,R;l=_t(l),c===2?(h=g,I=v,A=N,S=()=>me,R=1):c===4&&(h=U,I=W,A=j,S=()=>Be,R=2),ar(a,{name:l,fromWireType:function(M){for(var w,z=Be[M>>2],ie=S(),oe=M+4,re=0;re<=z;++re){var ye=M+4+re*c;if(re==z||ie[ye>>R]==0){var Le=h(oe,ye-oe);w===void 0?w=Le:(w+="\0",w+=Le),oe=ye+c}}return Tt(M),w},toWireType:function(M,w){typeof w!="string"&&ke(`Cannot pass non-string to C++ string type ${l}`);var z=A(w),ie=Ci(4+z+c);return Be[ie>>2]=z>>R,I(w,ie+4,z+c),M!==null&&M.push(Tt,ie),ie},argPackAdvance:8,readValueFromPointer:lo,destructorFunction:function(M){Tt(M)}})},o:function(a,c){ar(a,{isVoid:!0,name:c=_t(c),argPackAdvance:0,fromWireType:function(){},toWireType:function(l,h){}})},g:function(a,c,l,h){var I,S;(a=K[a])(c=vi.toValue(c),l=(S=q[I=l])===void 0?_t(I):S,null,h)},m:rc,l:function(a,c){var l=function(Le,Re){for(var Ke,Je,lt,Ni=new Array(Le),tr=0;tr<Le;++tr)Ni[tr]=(Ke=Be[Re+4*tr>>2],Je="parameter "+tr,lt=void 0,(lt=er[Ke])===void 0&&ke(Je+" has unknown type "+ss(Ke)),lt);return Ni}(a,c),h=l[0],I=h.name+"_$"+l.slice(1).map(function(Le){return Le.name}).join("_")+"$",S=F[I];if(S!==void 0)return S;for(var A=["retType"],R=[h],M="",w=0;w<a-1;++w)M+=(w!==0?", ":"")+"arg"+w,A.push("argType"+w),R.push(l[1+w]);var z="return function "+uo("methodCaller_"+I)+`(handle, name, destructors, args) {
|
|
66
|
+
`,ie=0;for(w=0;w<a-1;++w)z+=" var arg"+w+" = argType"+w+".readValueFromPointer(args"+(ie?"+"+ie:"")+`);
|
|
67
|
+
`,ie+=l[w+1].argPackAdvance;for(z+=" var rv = handle[name]("+M+`);
|
|
68
|
+
`,w=0;w<a-1;++w)l[w+1].deleteObject&&(z+=" argType"+w+".deleteObject(arg"+w+`);
|
|
69
|
+
`);h.isVoid||(z+=` return retType.toWireType(destructors, rv);
|
|
70
|
+
`),z+=`};
|
|
71
|
+
`,A.push(z);var oe,re,ye=hn(Function,A).apply(null,R);return oe=ye,re=K.length,K.push(oe),S=re,F[I]=S,S},a:()=>{Cr("")},e:function(){return Date.now()},v:()=>De.length,A:(a,c,l)=>De.copyWithin(a,c,c+l),u:a=>{De.length,Cr("OOM")},y:(a,c)=>{var l=0;return Ae().forEach(function(h,I){var S=c+l;Be[a+4*I>>2]=S,((A,R)=>{for(var M=0;M<A.length;++M)Q[0|R++]=A.charCodeAt(M);Q[0|R]=0})(h,S),l+=h.length+1}),0},z:(a,c)=>{var l=Ae();Be[a>>2]=l.length;var h=0;return l.forEach(function(I){h+=I.length+1}),Be[c>>2]=h,0},i:function(a){try{var c=ft.getStreamFromFD(a);return f.close(c),0}catch(l){if(f===void 0||l.name!=="ErrnoError")throw l;return l.errno}},x:function(a,c){try{var l=ft.getStreamFromFD(a),h=l.tty?2:f.isDir(l.mode)?3:f.isLink(l.mode)?7:4;return Q[c|0]=h,Ce[c+2>>1]=0,Ge=[0,(ge=0,+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],Pe[c+8>>2]=Ge[0],Pe[c+12>>2]=Ge[1],Ge=[0,(ge=0,+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],Pe[c+16>>2]=Ge[0],Pe[c+20>>2]=Ge[1],0}catch(I){if(f===void 0||I.name!=="ErrnoError")throw I;return I.errno}},B:function(a,c,l,h){try{var I=((S,A,R,M)=>{for(var w=0,z=0;z<R;z++){var ie=Be[A>>2],oe=Be[A+4>>2];A+=8;var re=f.read(S,Q,ie,oe,M);if(re<0)return-1;if(w+=re,re<oe)break;M!==void 0&&(M+=re)}return w})(ft.getStreamFromFD(a),c,l);return Be[h>>2]=I,0}catch(S){if(f===void 0||S.name!=="ErrnoError")throw S;return S.errno}},s:function(a,c,l,h,I){var S,A,R=(A=l)+2097152>>>0<4194305-!!(S=c)?(S>>>0)+4294967296*A:NaN;try{if(isNaN(R))return 61;var M=ft.getStreamFromFD(a);return f.llseek(M,R,h),Ge=[M.position>>>0,(ge=M.position,+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],Pe[I>>2]=Ge[0],Pe[I+4>>2]=Ge[1],M.getdents&&R===0&&h===0&&(M.getdents=null),0}catch(w){if(f===void 0||w.name!=="ErrnoError")throw w;return w.errno}},h:function(a,c,l,h){try{var I=((S,A,R,M)=>{for(var w=0,z=0;z<R;z++){var ie=Be[A>>2],oe=Be[A+4>>2];A+=8;var re=f.write(S,Q,ie,oe,M);if(re<0)return-1;w+=re,M!==void 0&&(M+=re)}return w})(ft.getStreamFromFD(a),c,l);return Be[h>>2]=I,0}catch(S){if(f===void 0||S.name!=="ErrnoError")throw S;return S.errno}}},Ci=(function(){var a,c,l,h,I={a:Rt};function S(A,R){var M,w,z=A.exports;return P=(J=z).E,M=P.buffer,o.HEAP8=Q=new Int8Array(M),o.HEAP16=Ce=new Int16Array(M),o.HEAP32=Pe=new Int32Array(M),o.HEAPU8=De=new Uint8Array(M),o.HEAPU16=me=new Uint16Array(M),o.HEAPU32=Be=new Uint32Array(M),o.HEAPF32=en=new Float32Array(M),o.HEAPF64=tn=new Float64Array(M),rn=J.H,w=J.F,Qo.unshift(w),to(),z}if(sn(),o.instantiateWasm)try{return o.instantiateWasm(I,S)}catch(A){x("Module.instantiateWasm callback failed with error: "+A),r(A)}(a=C,c=gi,l=I,h=function(A){S(A.instance)},a||typeof WebAssembly.instantiateStreaming!="function"||G(c)||typeof fetch!="function"?Nr(c,l,h):fetch(c,{credentials:"same-origin"}).then(A=>WebAssembly.instantiateStreaming(A,l).then(h,function(R){return x("wasm streaming compile failed: "+R),x("falling back to ArrayBuffer instantiation"),Nr(c,l,h)}))).catch(r)}(),a=>(Ci=J.G)(a)),Tt=a=>(Tt=J.I)(a),fn=()=>(fn=J.J)(),mr=a=>(mr=J.K)(a),gn=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=J.L)(),a=>(gn=J.M)(a));o.dynCall_jiji=(a,c,l,h,I)=>(o.dynCall_jiji=J.N)(a,c,l,h,I),o._ff_h264_cabac_tables=67061;function cs(){function a(){He||(He=!0,o.calledRun=!0,on||(o.noFSInit||f.init.initialized||f.init(),f.ignorePermissions=!1,nr.init(),Ei(Qo),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)c=o.postRun.shift(),fi.unshift(c);var c;Ei(fi)}()))}ee>0||(function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)c=o.preRun.shift(),vr.unshift(c);var c;Ei(vr)}(),ee>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),a()},1)):a()))}if(Wr=function a(){He||cs(),He||(Wr=a)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return cs(),t.ready}})(),bI=AI,RI=class extends Js{constructor(i){super(bI,i!=null&&i.wasmPath?fetch(i==null?void 0:i.wasmPath).then(t=>t.arrayBuffer()):void 0,i==null?void 0:i.workerMode,i==null?void 0:i.canvas,i==null?void 0:i.yuvMode)}},vI=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((T,g)=>{e=T,r=g});var s,n=Object.assign({},o),d=typeof window=="object",p=typeof importScripts=="function",m=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(d||p)&&(p?m=self.location.href:typeof document!="undefined"&&document.currentScript&&(m=document.currentScript.src),i&&(m=i),m=m.indexOf("blob:")!==0?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",p&&(s=T=>{var g=new XMLHttpRequest;return g.open("GET",T,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}));var E,_=o.print||console.log.bind(console),b=o.printErr||console.error.bind(console);Object.assign(o,n),n=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(E=o.wasmBinary);var C,k;o.noExitRuntime,typeof WebAssembly!="object"&&ee("no native wasm support detected");var x,P,J,Q,De,Ce,me,Pe,Be,en=!1,tn=[],rn=[],on=[],vr=0,Qo=null,fi=null;function ee(T){o.onAbort&&o.onAbort(T),b(T="Aborted("+T+")"),en=!0,T+=". Build with -sASSERTIONS for more info.";var g=new WebAssembly.RuntimeError(T);throw r(g),g}var Hr,Wr,sn="data:application/octet-stream;base64,";function to(T){return T.startsWith(sn)}function Cr(T){if(T==Hr&&E)return new Uint8Array(E);if(s)return s(T);throw"both async and sync fetching of the wasm failed"}function gi(T,g,v){return function(N){return E||!d&&!p||typeof fetch!="function"?Promise.resolve().then(()=>Cr(N)):fetch(N,{credentials:"same-origin"}).then(U=>{if(!U.ok)throw"failed to load wasm binary file at '"+N+"'";return U.arrayBuffer()}).catch(()=>Cr(N))}(T).then(N=>WebAssembly.instantiate(N,g)).then(N=>N).then(v,N=>{b("failed to asynchronously prepare wasm: "+N),ee(N)})}to(Hr="videodec_simd.wasm")||(Wr=Hr,Hr=o.locateFile?o.locateFile(Wr,m):m+Wr);var ro=T=>{for(;T.length>0;)T.shift()(o)};function ge(T){this.excPtr=T,this.ptr=T-24,this.set_type=function(g){Ce[this.ptr+4>>2]=g},this.get_type=function(){return Ce[this.ptr+4>>2]},this.set_destructor=function(g){Ce[this.ptr+8>>2]=g},this.get_destructor=function(){return Ce[this.ptr+8>>2]},this.set_caught=function(g){g=g?1:0,x[this.ptr+12|0]=g},this.get_caught=function(){return x[this.ptr+12|0]!=0},this.set_rethrown=function(g){g=g?1:0,x[this.ptr+13|0]=g},this.get_rethrown=function(){return x[this.ptr+13|0]!=0},this.init=function(g,v){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(v)},this.set_adjusted_ptr=function(g){Ce[this.ptr+16>>2]=g},this.get_adjusted_ptr=function(){return Ce[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ic(this.get_type()))return Ce[this.excPtr>>2];var g=this.get_adjusted_ptr();return g!==0?g:this.excPtr}}function Ge(T){switch(T){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${T}`)}}var Va=void 0;function G(T){for(var g="",v=T;P[v];)g+=Va[P[v++]];return g}var Gr={},Nr={},Ei={},_i=void 0;function V(T){throw new _i(T)}var nn=void 0;function Wt(T){throw new nn(T)}function Ti(T,g,v){function N(q){var K=v(q);K.length!==T.length&&Wt("Mismatched type converter count");for(var F=0;F<T.length;++F)Dt(T[F],K[F])}T.forEach(function(q){Ei[q]=g});var U=new Array(g.length),W=[],j=0;g.forEach((q,K)=>{Nr.hasOwnProperty(q)?U[K]=Nr[q]:(W.push(q),Gr.hasOwnProperty(q)||(Gr[q]=[]),Gr[q].push(()=>{U[K]=Nr[q],++j===W.length&&N(U)}))}),W.length===0&&N(U)}function Dt(T,g,v={}){if(!("argPackAdvance"in g))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(N,U,W={}){var j=U.name;if(N||V(`type "${j}" must have a positive integer typeid pointer`),Nr.hasOwnProperty(N)){if(W.ignoreDuplicateRegistrations)return;V(`Cannot register type '${j}' twice`)}if(Nr[N]=U,delete Ei[N],Gr.hasOwnProperty(N)){var q=Gr[N];delete Gr[N],q.forEach(K=>K())}}(T,g,v)}function an(T){if(!(this instanceof zt)||!(T instanceof zt))return!1;for(var g=this.$$.ptrType.registeredClass,v=this.$$.ptr,N=T.$$.ptrType.registeredClass,U=T.$$.ptr;g.baseClass;)v=g.upcast(v),g=g.baseClass;for(;N.baseClass;)U=N.upcast(U),N=N.baseClass;return g===N&&v===U}function io(T){V(T.$$.ptrType.registeredClass.name+" instance already deleted")}var oo=!1;function Yo(T){}function nr(T){T.count.value-=1,T.count.value===0&&function(g){g.smartPtr?g.smartPtrType.rawDestructor(g.smartPtr):g.ptrType.registeredClass.rawDestructor(g.ptr)}(T)}function cn(T,g,v){if(g===v)return T;if(v.baseClass===void 0)return null;var N=cn(T,g,v.baseClass);return N===null?null:v.downcast(N)}var Te={};function Eu(){return Object.keys(jr).length}function _u(){var T=[];for(var g in jr)jr.hasOwnProperty(g)&&T.push(jr[g]);return T}var O=[];function f(){for(;O.length;){var T=O.pop();T.$$.deleteScheduled=!1,T.delete()}}var Ii=void 0;function ft(T){Ii=T,O.length&&Ii&&Ii(f)}var jr={};function Ba(T,g){return g=function(v,N){for(N===void 0&&V("ptr should not be undefined");v.baseClass;)N=v.upcast(N),v=v.baseClass;return N}(T,g),jr[g]}function _t(T,g){return g.ptrType&&g.ptr||Wt("makeClassHandle requires ptr and ptrType"),!!g.smartPtrType!=!!g.smartPtr&&Wt("Both smartPtrType and smartPtr must be specified"),g.count={value:1},er(Object.create(T,{$$:{value:g}}))}function Si(T){var g=this.getPointee(T);if(!g)return this.destructor(T),null;var v=Ba(this.registeredClass,g);if(v!==void 0){if(v.$$.count.value===0)return v.$$.ptr=g,v.$$.smartPtr=T,v.clone();var N=v.clone();return this.destructor(T),N}function U(){return this.isSmartPointer?_t(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:g,smartPtrType:this,smartPtr:T}):_t(this.registeredClass.instancePrototype,{ptrType:this,ptr:T})}var W,j=this.registeredClass.getActualType(g),q=Te[j];if(!q)return U.call(this);W=this.isConst?q.constPointerType:q.pointerType;var K=cn(g,this.registeredClass,W.registeredClass);return K===null?U.call(this):this.isSmartPointer?_t(W.registeredClass.instancePrototype,{ptrType:W,ptr:K,smartPtrType:this,smartPtr:T}):_t(W.registeredClass.instancePrototype,{ptrType:W,ptr:K})}var er=function(T){return typeof FinalizationRegistry=="undefined"?(er=g=>g,T):(oo=new FinalizationRegistry(g=>{nr(g.$$)}),Yo=g=>oo.unregister(g),(er=g=>{var v=g.$$;if(v.smartPtr){var N={$$:v};oo.register(g,N,g)}return g})(T))};function Zo(){if(this.$$.ptr||io(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var T,g=er(Object.create(Object.getPrototypeOf(this),{$$:{value:(T=this.$$,{count:T.count,deleteScheduled:T.deleteScheduled,preservePointerOnDelete:T.preservePointerOnDelete,ptr:T.ptr,ptrType:T.ptrType,smartPtr:T.smartPtr,smartPtrType:T.smartPtrType})}}));return g.$$.count.value+=1,g.$$.deleteScheduled=!1,g}function yi(){this.$$.ptr||io(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&V("Object already scheduled for deletion"),Yo(this),nr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function ke(){return!this.$$.ptr}function $a(){return this.$$.ptr||io(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&V("Object already scheduled for deletion"),O.push(this),O.length===1&&Ii&&Ii(f),this.$$.deleteScheduled=!0,this}function zt(){}var so=48,ar=57;function Ko(T){if(T===void 0)return"_unknown";var g=(T=T.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return g>=so&&g<=ar?`_${T}`:T}function no(T,g){return T=Ko(T),{[T]:function(){return g.apply(this,arguments)}}[T]}function es(T,g,v){if(T[g].overloadTable===void 0){var N=T[g];T[g]=function(){return T[g].overloadTable.hasOwnProperty(arguments.length)||V(`Function '${v}' called with an invalid number of arguments (${arguments.length}) - expects one of (${T[g].overloadTable})!`),T[g].overloadTable[arguments.length].apply(this,arguments)},T[g].overloadTable=[],T[g].overloadTable[N.argCount]=N}}function Fa(T,g,v,N,U,W,j,q){this.name=T,this.constructor=g,this.instancePrototype=v,this.rawDestructor=N,this.baseClass=U,this.getActualType=W,this.upcast=j,this.downcast=q,this.pureVirtualFunctions=[]}function ts(T,g,v){for(;g!==v;)g.upcast||V(`Expected null or instance of ${v.name}, got an instance of ${g.name}`),T=g.upcast(T),g=g.baseClass;return T}function Ha(T,g){if(g===null)return this.isReference&&V(`null is not a valid ${this.name}`),0;g.$$||V(`Cannot pass "${mn(g)}" as a ${this.name}`),g.$$.ptr||V(`Cannot pass deleted object as a pointer of type ${this.name}`);var v=g.$$.ptrType.registeredClass;return ts(g.$$.ptr,v,this.registeredClass)}function Wa(T,g){var v;if(g===null)return this.isReference&&V(`null is not a valid ${this.name}`),this.isSmartPointer?(v=this.rawConstructor(),T!==null&&T.push(this.rawDestructor,v),v):0;g.$$||V(`Cannot pass "${mn(g)}" as a ${this.name}`),g.$$.ptr||V(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&g.$$.ptrType.isConst&&V(`Cannot convert argument of type ${g.$$.smartPtrType?g.$$.smartPtrType.name:g.$$.ptrType.name} to parameter type ${this.name}`);var N=g.$$.ptrType.registeredClass;if(v=ts(g.$$.ptr,N,this.registeredClass),this.isSmartPointer)switch(g.$$.smartPtr===void 0&&V("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:g.$$.smartPtrType===this?v=g.$$.smartPtr:V(`Cannot convert argument of type ${g.$$.smartPtrType?g.$$.smartPtrType.name:g.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:v=g.$$.smartPtr;break;case 2:if(g.$$.smartPtrType===this)v=g.$$.smartPtr;else{var U=g.clone();v=this.rawShare(v,Ai.toHandle(function(){U.delete()})),T!==null&&T.push(this.rawDestructor,v)}break;default:V("Unsupporting sharing policy")}return v}function Tu(T,g){if(g===null)return this.isReference&&V(`null is not a valid ${this.name}`),0;g.$$||V(`Cannot pass "${mn(g)}" as a ${this.name}`),g.$$.ptr||V(`Cannot pass deleted object as a pointer of type ${this.name}`),g.$$.ptrType.isConst&&V(`Cannot convert argument of type ${g.$$.ptrType.name} to parameter type ${this.name}`);var v=g.$$.ptrType.registeredClass;return ts(g.$$.ptr,v,this.registeredClass)}function rs(T){return this.fromWireType(De[T>>2])}function ao(T){return this.rawGetPointee&&(T=this.rawGetPointee(T)),T}function dn(T){this.rawDestructor&&this.rawDestructor(T)}function co(T){T!==null&&T.delete()}function cr(T,g,v,N,U,W,j,q,K,F,ce){this.name=T,this.registeredClass=g,this.isReference=v,this.isConst=N,this.isSmartPointer=U,this.pointeeType=W,this.sharingPolicy=j,this.rawGetPointee=q,this.rawConstructor=K,this.rawShare=F,this.rawDestructor=ce,U||g.baseClass!==void 0?this.toWireType=Wa:N?(this.toWireType=Ha,this.destructorFunction=null):(this.toWireType=Tu,this.destructorFunction=null)}var Dr=[],Ga=T=>{var g=Dr[T];return g||(T>=Dr.length&&(Dr.length=T+1),Dr[T]=g=Be.get(T)),g},is=(T,g,v)=>T.includes("j")?((N,U,W)=>{var j=o["dynCall_"+N];return W&&W.length?j.apply(null,[U].concat(W)):j.call(null,U)})(T,g,v):Ga(g).apply(null,v),Iu=(T,g)=>{var v=[];return function(){return v.length=0,Object.assign(v,arguments),is(T,g,v)}};function dr(T,g){var v=(T=G(T)).includes("j")?Iu(T,g):Ga(g);return typeof v!="function"&&V(`unknown function pointer with signature ${T}: ${g}`),v}var ja=void 0;function qa(T){var g=as(T),v=G(g);return lr(g),v}function un(T,g){var v=[],N={};throw g.forEach(function U(W){N[W]||Nr[W]||(Ei[W]?Ei[W].forEach(U):(v.push(W),N[W]=!0))}),new ja(`${T}: `+v.map(qa).join([", "]))}function Ja(T,g){for(var v=[],N=0;N<T;N++)v.push(Ce[g+4*N>>2]);return v}function wr(T){for(;T.length;){var g=T.pop();T.pop()(g)}}function za(T,g){if(!(T instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof T} which is not a function`);var v=no(T.name||"unknownFunctionName",function(){});v.prototype=T.prototype;var N=new v,U=T.apply(N,g);return U instanceof Object?U:N}function Xa(T,g,v,N,U,W){var j=g.length;j<2&&V("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var q=g[1]!==null&&v!==null,K=!1,F=1;F<g.length;++F)if(g[F]!==null&&g[F].destructorFunction===void 0){K=!0;break}var ce=g[0].name!=="void",Ae="",Se="";for(F=0;F<j-2;++F)Ae+=(F!==0?", ":"")+"arg"+F,Se+=(F!==0?", ":"")+"arg"+F+"Wired";var le=`
|
|
72
|
+
return function ${Ko(T)}(${Ae}) {
|
|
73
|
+
if (arguments.length !== ${j-2}) {
|
|
74
|
+
throwBindingError('function ${T} called with ${arguments.length} arguments, expected ${j-2} args!');
|
|
75
|
+
}`;K&&(le+=`var destructors = [];
|
|
76
|
+
`);var be=K?"destructors":"null",Ze=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],Fe=[V,N,U,wr,g[0],g[1]];for(q&&(le+="var thisWired = classParam.toWireType("+be+`, this);
|
|
77
|
+
`),F=0;F<j-2;++F)le+="var arg"+F+"Wired = argType"+F+".toWireType("+be+", arg"+F+"); // "+g[F+2].name+`
|
|
78
|
+
`,Ze.push("argType"+F),Fe.push(g[F+2]);if(q&&(Se="thisWired"+(Se.length>0?", ":"")+Se),le+=(ce||W?"var rv = ":"")+"invoker(fn"+(Se.length>0?", ":"")+Se+`);
|
|
79
|
+
`,K)le+=`runDestructors(destructors);
|
|
80
|
+
`;else for(F=q?1:2;F<g.length;++F){var ct=F===1?"thisWired":"arg"+(F-2)+"Wired";g[F].destructorFunction!==null&&(le+=ct+"_dtor("+ct+"); // "+g[F].name+`
|
|
81
|
+
`,Ze.push(ct+"_dtor"),Fe.push(g[F].destructorFunction))}return ce&&(le+=`var ret = retType.fromWireType(rv);
|
|
82
|
+
return ret;
|
|
83
|
+
`),le+=`}
|
|
84
|
+
`,Ze.push(le),za(Function,Ze).apply(null,Fe)}function uo(){this.allocated=[void 0],this.freelist=[]}var Vt=new uo;function ln(T){T>=Vt.reserved&&--Vt.get(T).refcount==0&&Vt.free(T)}function Su(){for(var T=0,g=Vt.reserved;g<Vt.allocated.length;++g)Vt.allocated[g]!==void 0&&++T;return T}var Ai={toValue:T=>(T||V("Cannot use deleted val. handle = "+T),Vt.get(T).value),toHandle:T=>{switch(T){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Vt.allocate({refcount:1,value:T})}}};function mn(T){if(T===null)return"null";var g=typeof T;return g==="object"||g==="array"||g==="function"?T.toString():""+T}function yu(T,g){switch(g){case 2:return function(v){return this.fromWireType(me[v>>2])};case 3:return function(v){return this.fromWireType(Pe[v>>3])};default:throw new TypeError("Unknown float type: "+T)}}function Au(T,g,v){switch(g){case 0:return v?function(N){return x[N]}:function(N){return P[N]};case 1:return v?function(N){return J[N>>1]}:function(N){return Q[N>>1]};case 2:return v?function(N){return De[N>>2]}:function(N){return Ce[N>>2]};default:throw new TypeError("Unknown integer type: "+T)}}var lo=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Qa=(T,g,v)=>{for(var N=g+v,U=g;T[U]&&!(U>=N);)++U;if(U-g>16&&T.buffer&&lo)return lo.decode(T.subarray(g,U));for(var W="";g<U;){var j=T[g++];if(128&j){var q=63&T[g++];if((224&j)!=192){var K=63&T[g++];if((j=(240&j)==224?(15&j)<<12|q<<6|K:(7&j)<<18|q<<12|K<<6|63&T[g++])<65536)W+=String.fromCharCode(j);else{var F=j-65536;W+=String.fromCharCode(55296|F>>10,56320|1023&F)}}else W+=String.fromCharCode((31&j)<<6|q)}else W+=String.fromCharCode(j)}return W},bu=(T,g)=>T?Qa(P,T,g):"",Ya=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,ur=(T,g)=>{for(var v=T,N=v>>1,U=N+g/2;!(N>=U)&&Q[N];)++N;if((v=N<<1)-T>32&&Ya)return Ya.decode(P.subarray(T,v));for(var W="",j=0;!(j>=g/2);++j){var q=J[T+2*j>>1];if(q==0)break;W+=String.fromCharCode(q)}return W},os=(T,g,v)=>{if(v===void 0&&(v=2147483647),v<2)return 0;for(var N=g,U=(v-=2)<2*T.length?v/2:T.length,W=0;W<U;++W){var j=T.charCodeAt(W);J[g>>1]=j,g+=2}return J[g>>1]=0,g-N},Za=T=>2*T.length,Ru=(T,g)=>{for(var v=0,N="";!(v>=g/4);){var U=De[T+4*v>>2];if(U==0)break;if(++v,U>=65536){var W=U-65536;N+=String.fromCharCode(55296|W>>10,56320|1023&W)}else N+=String.fromCharCode(U)}return N},vu=(T,g,v)=>{if(v===void 0&&(v=2147483647),v<4)return 0;for(var N=g,U=N+v-4,W=0;W<T.length;++W){var j=T.charCodeAt(W);if(j>=55296&&j<=57343&&(j=65536+((1023&j)<<10)|1023&T.charCodeAt(++W)),De[g>>2]=j,(g+=4)+4>U)break}return De[g>>2]=0,g-N},bi=T=>{for(var g=0,v=0;v<T.length;++v){var N=T.charCodeAt(v);N>=55296&&N<=57343&&++v,g+=4}return g},Ka={},ss=[],ns=[],pn;pn=()=>performance.now();var ec,hn,Ri,tc=[null,[],[]];(function(){for(var T=new Array(256),g=0;g<256;++g)T[g]=String.fromCharCode(g);Va=T})(),_i=o.BindingError=class extends Error{constructor(T){super(T),this.name="BindingError"}},nn=o.InternalError=class extends Error{constructor(T){super(T),this.name="InternalError"}},zt.prototype.isAliasOf=an,zt.prototype.clone=Zo,zt.prototype.delete=yi,zt.prototype.isDeleted=ke,zt.prototype.deleteLater=$a,o.getInheritedInstanceCount=Eu,o.getLiveInheritedInstances=_u,o.flushPendingDeletes=f,o.setDelayFunction=ft,cr.prototype.getPointee=ao,cr.prototype.destructor=dn,cr.prototype.argPackAdvance=8,cr.prototype.readValueFromPointer=rs,cr.prototype.deleteObject=co,cr.prototype.fromWireType=Si,ja=o.UnboundTypeError=(ec=Error,(Ri=no(hn="UnboundTypeError",function(T){this.name=hn,this.message=T;var g=new Error(T).stack;g!==void 0&&(this.stack=this.toString()+`
|
|
85
|
+
`+g.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(ec.prototype),Ri.prototype.constructor=Ri,Ri.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},Ri),Object.assign(uo.prototype,{get(T){return this.allocated[T]},has(T){return this.allocated[T]!==void 0},allocate(T){var g=this.freelist.pop()||this.allocated.length;return this.allocated[g]=T,g},free(T){this.allocated[T]=void 0,this.freelist.push(T)}}),Vt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Vt.reserved=Vt.allocated.length,o.count_emval_handles=Su;var wt,rc={o:function(T,g,v){throw new ge(T).init(g,v),T},r:function(T,g,v,N,U){},m:function(T,g,v,N,U){var W=Ge(v);Dt(T,{name:g=G(g),fromWireType:function(j){return!!j},toWireType:function(j,q){return q?N:U},argPackAdvance:8,readValueFromPointer:function(j){var q;if(v===1)q=x;else if(v===2)q=J;else{if(v!==4)throw new TypeError("Unknown boolean type size: "+g);q=De}return this.fromWireType(q[j>>W])},destructorFunction:null})},q:function(T,g,v,N,U,W,j,q,K,F,ce,Ae,Se){ce=G(ce),W=dr(U,W),q&&(q=dr(j,q)),F&&(F=dr(K,F)),Se=dr(Ae,Se);var le=Ko(ce);(function(be,Ze,Fe){o.hasOwnProperty(be)?((Fe===void 0||o[be].overloadTable!==void 0&&o[be].overloadTable[Fe]!==void 0)&&V(`Cannot register public name '${be}' twice`),es(o,be,be),o.hasOwnProperty(Fe)&&V(`Cannot register multiple overloads of a function with the same number of arguments (${Fe})!`),o[be].overloadTable[Fe]=Ze):(o[be]=Ze,Fe!==void 0&&(o[be].numArguments=Fe))})(le,function(){un(`Cannot construct ${ce} due to unbound types`,[N])}),Ti([T,g,v],N?[N]:[],function(be){var Ze,Fe;be=be[0],Fe=N?(Ze=be.registeredClass).instancePrototype:zt.prototype;var ct=no(le,function(){if(Object.getPrototypeOf(this)!==He)throw new _i("Use 'new' to construct "+ce);if(Rt.constructor_body===void 0)throw new _i(ce+" has no accessible constructor");var mr=Rt.constructor_body[arguments.length];if(mr===void 0)throw new _i(`Tried to invoke ctor of ${ce} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Rt.constructor_body).toString()}) parameters instead!`);return mr.apply(this,arguments)}),He=Object.create(Fe,{constructor:{value:ct}});ct.prototype=He;var Rt=new Fa(ce,ct,He,Se,Ze,W,q,F);Rt.baseClass&&(Rt.baseClass.__derivedClasses===void 0&&(Rt.baseClass.__derivedClasses=[]),Rt.baseClass.__derivedClasses.push(Rt));var Ci=new cr(ce,Rt,!0,!1,!1),Tt=new cr(ce+"*",Rt,!1,!1,!1),fn=new cr(ce+" const*",Rt,!1,!0,!1);return Te[T]={pointerType:Tt,constPointerType:fn},function(mr,gn,cs){o.hasOwnProperty(mr)||Wt("Replacing nonexistant public symbol"),o[mr].overloadTable!==void 0&&cs!==void 0?o[mr].overloadTable[cs]=gn:(o[mr]=gn,o[mr].argCount=cs)}(le,ct),[Ci,Tt,fn]})},p:function(T,g,v,N,U,W){var j=Ja(g,v);U=dr(N,U),Ti([],[T],function(q){var K=`constructor ${(q=q[0]).name}`;if(q.registeredClass.constructor_body===void 0&&(q.registeredClass.constructor_body=[]),q.registeredClass.constructor_body[g-1]!==void 0)throw new _i(`Cannot register multiple constructors with identical number of parameters (${g-1}) for class '${q.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return q.registeredClass.constructor_body[g-1]=()=>{un(`Cannot construct ${q.name} due to unbound types`,j)},Ti([],j,function(F){return F.splice(1,0,null),q.registeredClass.constructor_body[g-1]=Xa(K,F,null,U,W),[]}),[]})},d:function(T,g,v,N,U,W,j,q,K){var F=Ja(v,N);g=G(g),W=dr(U,W),Ti([],[T],function(ce){var Ae=`${(ce=ce[0]).name}.${g}`;function Se(){un(`Cannot call ${Ae} due to unbound types`,F)}g.startsWith("@@")&&(g=Symbol[g.substring(2)]),q&&ce.registeredClass.pureVirtualFunctions.push(g);var le=ce.registeredClass.instancePrototype,be=le[g];return be===void 0||be.overloadTable===void 0&&be.className!==ce.name&&be.argCount===v-2?(Se.argCount=v-2,Se.className=ce.name,le[g]=Se):(es(le,g,Ae),le[g].overloadTable[v-2]=Se),Ti([],F,function(Ze){var Fe=Xa(Ae,Ze,ce,W,j,K);return le[g].overloadTable===void 0?(Fe.argCount=v-2,le[g]=Fe):le[g].overloadTable[v-2]=Fe,[]}),[]})},u:function(T,g){Dt(T,{name:g=G(g),fromWireType:function(v){var N=Ai.toValue(v);return ln(v),N},toWireType:function(v,N){return Ai.toHandle(N)},argPackAdvance:8,readValueFromPointer:rs,destructorFunction:null})},k:function(T,g,v){var N=Ge(v);Dt(T,{name:g=G(g),fromWireType:function(U){return U},toWireType:function(U,W){return W},argPackAdvance:8,readValueFromPointer:yu(g,N),destructorFunction:null})},b:function(T,g,v,N,U){g=G(g),U===-1&&(U=4294967295);var W=Ge(v),j=F=>F;if(N===0){var q=32-8*v;j=F=>F<<q>>>q}var K=g.includes("unsigned");Dt(T,{name:g,fromWireType:j,toWireType:K?function(F,ce){return this.name,ce>>>0}:function(F,ce){return this.name,ce},argPackAdvance:8,readValueFromPointer:Au(g,W,N!==0),destructorFunction:null})},a:function(T,g,v){var N=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][g];function U(W){var j=Ce,q=j[W>>=2],K=j[W+1];return new N(j.buffer,K,q)}Dt(T,{name:v=G(v),fromWireType:U,argPackAdvance:8,readValueFromPointer:U},{ignoreDuplicateRegistrations:!0})},j:function(T,g){var v=(g=G(g))==="std::string";Dt(T,{name:g,fromWireType:function(N){var U,W=Ce[N>>2],j=N+4;if(v)for(var q=j,K=0;K<=W;++K){var F=j+K;if(K==W||P[F]==0){var ce=bu(q,F-q);U===void 0?U=ce:(U+="\0",U+=ce),q=F+1}}else{var Ae=new Array(W);for(K=0;K<W;++K)Ae[K]=String.fromCharCode(P[j+K]);U=Ae.join("")}return lr(N),U},toWireType:function(N,U){var W;U instanceof ArrayBuffer&&(U=new Uint8Array(U));var j=typeof U=="string";j||U instanceof Uint8Array||U instanceof Uint8ClampedArray||U instanceof Int8Array||V("Cannot pass non-string to std::string"),W=v&&j?(Ae=>{for(var Se=0,le=0;le<Ae.length;++le){var be=Ae.charCodeAt(le);be<=127?Se++:be<=2047?Se+=2:be>=55296&&be<=57343?(Se+=4,++le):Se+=3}return Se})(U):U.length;var q=vi(4+W+1),K=q+4;if(Ce[q>>2]=W,v&&j)((Ae,Se,le,be)=>{if(!(be>0))return 0;for(var Ze=le,Fe=le+be-1,ct=0;ct<Ae.length;++ct){var He=Ae.charCodeAt(ct);if(He>=55296&&He<=57343&&(He=65536+((1023&He)<<10)|1023&Ae.charCodeAt(++ct)),He<=127){if(le>=Fe)break;Se[le++]=He}else if(He<=2047){if(le+1>=Fe)break;Se[le++]=192|He>>6,Se[le++]=128|63&He}else if(He<=65535){if(le+2>=Fe)break;Se[le++]=224|He>>12,Se[le++]=128|He>>6&63,Se[le++]=128|63&He}else{if(le+3>=Fe)break;Se[le++]=240|He>>18,Se[le++]=128|He>>12&63,Se[le++]=128|He>>6&63,Se[le++]=128|63&He}}Se[le]=0})(U,P,K,W+1);else if(j)for(var F=0;F<W;++F){var ce=U.charCodeAt(F);ce>255&&(lr(K),V("String has UTF-16 code units that do not fit in 8 bits")),P[K+F]=ce}else for(F=0;F<W;++F)P[K+F]=U[F];return N!==null&&N.push(lr,q),q},argPackAdvance:8,readValueFromPointer:rs,destructorFunction:function(N){lr(N)}})},g:function(T,g,v){var N,U,W,j,q;v=G(v),g===2?(N=ur,U=os,j=Za,W=()=>Q,q=1):g===4&&(N=Ru,U=vu,j=bi,W=()=>Ce,q=2),Dt(T,{name:v,fromWireType:function(K){for(var F,ce=Ce[K>>2],Ae=W(),Se=K+4,le=0;le<=ce;++le){var be=K+4+le*g;if(le==ce||Ae[be>>q]==0){var Ze=N(Se,be-Se);F===void 0?F=Ze:(F+="\0",F+=Ze),Se=be+g}}return lr(K),F},toWireType:function(K,F){typeof F!="string"&&V(`Cannot pass non-string to C++ string type ${v}`);var ce=j(F),Ae=vi(4+ce+g);return Ce[Ae>>2]=ce>>q,U(F,Ae+4,ce+g),K!==null&&K.push(lr,Ae),Ae},argPackAdvance:8,readValueFromPointer:rs,destructorFunction:function(K){lr(K)}})},n:function(T,g){Dt(T,{isVoid:!0,name:g=G(g),argPackAdvance:0,fromWireType:function(){},toWireType:function(v,N){}})},e:function(T,g,v,N){var U,W;(T=ss[T])(g=Ai.toValue(g),v=(W=Ka[U=v])===void 0?G(U):W,null,N)},l:ln,h:function(T,g){var v=function(Ze,Fe){for(var ct,He,Rt,Ci=new Array(Ze),Tt=0;Tt<Ze;++Tt)Ci[Tt]=(ct=Ce[Fe+4*Tt>>2],He="parameter "+Tt,Rt=void 0,(Rt=Nr[ct])===void 0&&V(He+" has unknown type "+qa(ct)),Rt);return Ci}(T,g),N=v[0],U=N.name+"_$"+v.slice(1).map(function(Ze){return Ze.name}).join("_")+"$",W=ns[U];if(W!==void 0)return W;for(var j=["retType"],q=[N],K="",F=0;F<T-1;++F)K+=(F!==0?", ":"")+"arg"+F,j.push("argType"+F),q.push(v[1+F]);var ce="return function "+Ko("methodCaller_"+U)+`(handle, name, destructors, args) {
|
|
86
|
+
`,Ae=0;for(F=0;F<T-1;++F)ce+=" var arg"+F+" = argType"+F+".readValueFromPointer(args"+(Ae?"+"+Ae:"")+`);
|
|
87
|
+
`,Ae+=v[F+1].argPackAdvance;for(ce+=" var rv = handle[name]("+K+`);
|
|
88
|
+
`,F=0;F<T-1;++F)v[F+1].deleteObject&&(ce+=" argType"+F+".deleteObject(arg"+F+`);
|
|
89
|
+
`);N.isVoid||(ce+=` return retType.toWireType(destructors, rv);
|
|
90
|
+
`),ce+=`};
|
|
91
|
+
`,j.push(ce);var Se,le,be=za(Function,j).apply(null,q);return Se=be,le=ss.length,ss.push(Se),W=le,ns[U]=W,W},f:()=>{ee("")},c:pn,t:(T,g,v)=>P.copyWithin(T,g,g+v),s:T=>{P.length,ee("OOM")},i:(T,g,v,N)=>{for(var U,W,j,q=0,K=0;K<v;K++){var F=Ce[g>>2],ce=Ce[g+4>>2];g+=8;for(var Ae=0;Ae<ce;Ae++)U=T,W=P[F+Ae],j=void 0,j=tc[U],W===0||W===10?((U===1?_:b)(Qa(j,0)),j.length=0):j.push(W);q+=ce}return Ce[N>>2]=q,0}},lr=(function(){var T,g,v,N,U={a:rc};function W(j,q){var K,F,ce=j.exports;return C=(k=ce).v,K=C.buffer,o.HEAP8=x=new Int8Array(K),o.HEAP16=J=new Int16Array(K),o.HEAP32=De=new Int32Array(K),o.HEAPU8=P=new Uint8Array(K),o.HEAPU16=Q=new Uint16Array(K),o.HEAPU32=Ce=new Uint32Array(K),o.HEAPF32=me=new Float32Array(K),o.HEAPF64=Pe=new Float64Array(K),Be=k.z,F=k.w,rn.unshift(F),function(){if(vr--,o.monitorRunDependencies&&o.monitorRunDependencies(vr),vr==0&&(Qo!==null&&(clearInterval(Qo),Qo=null),fi)){var Ae=fi;fi=null,Ae()}}(),ce}if(vr++,o.monitorRunDependencies&&o.monitorRunDependencies(vr),o.instantiateWasm)try{return o.instantiateWasm(U,W)}catch(j){b("Module.instantiateWasm callback failed with error: "+j),r(j)}(T=E,g=Hr,v=U,N=function(j){W(j.instance)},T||typeof WebAssembly.instantiateStreaming!="function"||to(g)||typeof fetch!="function"?gi(g,v,N):fetch(g,{credentials:"same-origin"}).then(j=>WebAssembly.instantiateStreaming(j,v).then(N,function(q){return b("wasm streaming compile failed: "+q),b("falling back to ArrayBuffer instantiation"),gi(g,v,N)}))).catch(r)}(),T=>(lr=k.x)(T)),vi=T=>(vi=k.y)(T),as=T=>(as=k.A)(T),ic=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=k.B)(),T=>(ic=k.C)(T));o.dynCall_jiji=(T,g,v,N,U)=>(o.dynCall_jiji=k.D)(T,g,v,N,U);function oc(){function T(){wt||(wt=!0,o.calledRun=!0,en||(ro(rn),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)g=o.postRun.shift(),on.unshift(g);var g;ro(on)}()))}vr>0||(function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)g=o.preRun.shift(),tn.unshift(g);var g;ro(tn)}(),vr>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),T()},1)):T()))}if(fi=function T(){wt||oc(),wt||(fi=T)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return oc(),t.ready}})(),CI=vI,NI=class extends Js{constructor(i){super(CI,i!=null&&i.wasmPath?fetch(i.wasmPath).then(t=>t.arrayBuffer()):void 0,i==null?void 0:i.workerMode,i==null?void 0:i.canvas,i==null?void 0:i.yuvMode)}},DI="web.sdk.qcloud.com",wI=`https://${DI}/trtc/webrtc/v5/doc`,vM=`${wI}/zh-cn/`,Lf=(i=>(i[i.TRACE=0]="TRACE",i[i.DEBUG=1]="DEBUG",i[i.INFO=2]="INFO",i[i.WARN=3]="WARN",i[i.ERROR=4]="ERROR",i[i.NONE=5]="NONE",i))(Lf||{});var Vd={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"},CM=Vd.MAIN,NM=Vd.AUXILIARY,DM=Vd.BIG,wM=Vd.SMALL;var MM=Object.keys(Lf);var OM=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{};function Of(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var{toString:PM}=Object.prototype,Uf=class Vf{constructor(t){this.core=t,Ar(this,"contextMap",new Map),Ar(this,"decodeProcessorMap",new WeakMap),this.addKVReportBeforeExitRoom=this.addKVReportBeforeExitRoom.bind(this),this.createDecoder=this.createDecoder.bind(this),this.core.innerEmitter.on("51",this.addKVReportBeforeExitRoom)}getAlias(){return"videoDecoder"}getGroup(t){return t!=null&&t.track?`${t.track.userId}${t.track.streamType}`:"*"}getName(){return Vf.Name}getValidateRule(t){return{type:this.core.enums.BASIC_TYPE.Object}}createDecoder(t,e){switch(t){case"wasm":return this.core.rtcDectection.isSIMDSupported()?new NI(ba(Aa({},e),{wasmPath:`${this.core.assetsPath||"."}/videodec_simd.wasm`})):new RI(ba(Aa({},e),{wasmPath:`${this.core.assetsPath||"."}/videodec.wasm`}));case"webCodecs":return new qs;case"mse":throw new Error("mse decoder not supported yet");default:throw new Error("Unsupported decoder type")}}start(t){this.decodeProcessorMap.set(t.track,this.decode(t)),this.core.room.videoManager.addDecodeProcessor({processor:({frame:e,track:r})=>{var o;return((o=this.decodeProcessorMap.get(r))==null?void 0:o({frame:e,track:r}))||e},type:3})}decode(t){let{pipe:e,take:r,subscribe:o}=this.core.rx;return({frame:s,track:n})=>{if(n!==t.track||s.type==="empty")return s;if(this.contextMap.has(n))return this.contextMap.get(n).decode(s);let d=this.core.room.videoManager.createDecodeContext(ba(Aa({},t),{createDecoder:this.createDecoder}));return e(d.trackDoneOB,r(1),o(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:n})})),this.contextMap.set(n,d),d.decode(s)}}stop(t){if(t!=null&&t.track){let e=this.contextMap.get(t.track);e&&(e.close("stop"),this.report(e,t.track),this.contextMap.delete(t.track))}else this.contextMap.forEach((e,r)=>{e.close("stop"),this.contextMap.delete(r)});this.contextMap.size===0&&this.core.room.videoManager.removeDecodeProcessor({type:3})}report(t,e){if(t.isReported)return;t.isReported=!0;let r=Of()-t.startPerformanceTime,{renderFreezeTotal:o,dataFreezeTotal:s}=this.getRemoteTrackFreezeDuration(e,t);r&&this.core.kvStatManager.addNumber({key:514850,value:Math.floor(o/r*100),split:1}),r&&this.core.kvStatManager.addNumber({key:514851,value:Math.floor(s/r*100),split:1}),t.inputFrameCount&&this.core.kvStatManager.addNumber({key:514852,value:Math.floor(t.decodedFrameCount/t.inputFrameCount*100),split:1})}addKVReportBeforeExitRoom({room:t}){t===this.core.room&&this.contextMap.forEach((e,r)=>{this.report(e,r)})}update(t){let e=this.contextMap.get(t.track);e&&(t.type!=="mock"?(e.close("update"),this.contextMap.set(t.track,this.core.room.videoManager.createDecodeContext(ba(Aa({},t),{createDecoder:this.createDecoder})))):e.mock(this.core.enums.DECODE_FAILED_ERROR_CODE.TEST))}getRemoteTrackFreezeDuration(t,e){let r=this.core.room.badCaseDetector.getRenderFreezeMap().get(`${t.userId}_${t.streamType}`),o=this.core.room.badCaseDetector.getDataFreezeMap().get(`${t.userId}_${t.streamType}`),s=0;r&&r.freezeTimeline.forEach(({startTime:d,endTime:p})=>{d>e.startPerformanceTime&&(s+=p===0?Of()-d:p-d)});let n=0;return o&&o.durationItemList.forEach(d=>{d.startTime>e.startPerformanceTime&&(n+=d.getDuration())}),{renderFreezeTotal:s,dataFreezeTotal:n}}destroy(){this.core.innerEmitter.off("51",this.addKVReportBeforeExitRoom)}};Ar(Uf,"Name","VideoDecoderPlugin");var Bm=Uf;var ng=Di(Ui());function $m({timesInSecond:i,maxSizeInSecond:t,getSize:e}){return Me((r,o)=>{let s=new WeakMap;return H.on(L.ROOM_DESTROY,({room:n})=>s.delete(n)),function(...n){let d=s.get(this);if(d||(d={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},s.set(this,d)),d.timestamp===0?d.timestamp=Date.now():Date.now()-d.timestamp>1e3&&(d.timestamp=Date.now(),d.callCountInSecond=0,d.totalSizeInSecond=0),e&&(d.totalSizeInSecond+=e(...n)),d.timestamp!==0&&Date.now()-d.timestamp<1e3&&(d.callCountInSecond>=i||d.totalSizeInSecond>t))throw new he({code:te.INVALID_OPERATION,message:at({key:nt.CALL_FREQUENCY_LIMIT,data:{isTimes:d.callCountInSecond>=i,isSize:d.totalSizeInSecond>t,name:o,timesInSecond:i,maxSizeInSecond:t}})});d.callCountInSecond++,r.call(this,...n)}})}var MI="2025-04-07 14:30:49",Bf=!0,$f=function(){var i;Bf&&(Bf=!1,B.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Mr}/en/index.html`),console.info(`* Changelog: ${Mr}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),B.info("TRTC Web SDK Version:",rt),Tr||B.debug("Build Time:",MI),B.info("UA:",navigator.userAgent),B.info(`URL: ${location.href}${((i=self.frameElement)==null?void 0:i.tagName)==="IFRAME"?" in iframe":""}`),qn().then(t=>{t&&B.info(fr)}))};var sr={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 ue={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},br=(O=>(O[O.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",O[O.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",O[O.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",O[O.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",O[O.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",O[O.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",O[O.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",O[O.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",O[O.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",O[O.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",O[O.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",O[O.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",O[O.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",O[O.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",O[O.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",O[O.INVALID_ROOM_ID_REQUIED=5015]="INVALID_ROOM_ID_REQUIED",O[O.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",O[O.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",O[O.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",O[O.INVALID_OPERATION=5100]="INVALID_OPERATION",O[O.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",O[O.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",O[O.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",O[O.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",O[O.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",O[O.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",O[O.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",O[O.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",O[O.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",O[O.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",O[O.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",O[O.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",O[O.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",O[O.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",O[O.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",O[O.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",O[O.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",O[O.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",O[O.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",O[O.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",O[O.DEVICE_ERROR=5300]="DEVICE_ERROR",O[O.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",O[O.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",O[O.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",O[O.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",O[O.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",O[O.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",O[O.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",O[O.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",O[O.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",O[O.SERVER_ERROR=5400]="SERVER_ERROR",O[O.NEED_TO_BUY=5401]="NEED_TO_BUY",O[O.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",O[O.OPERATION_FAILED=5500]="OPERATION_FAILED",O[O.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",O[O.REJOIN_FAILED=5502]="REJOIN_FAILED",O[O.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",O[O.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",O[O.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",O[O.OPERATION_ABORT=5998]="OPERATION_ABORT",O[O.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",O))(br||{});function Hf({code:i,params:t,enableDocLink:e=!1}){let r="",o,s=br[i];try{o=Ff[s]}catch(n){o=Ff.UNKNOWN_ERROR}return ze(o)?r=o(t):we(o)&&(r=o),t.fnName&&!r.includes(t.fnName)&&(r[r.length-1]!=="."&&(r+="."),r+=` thrown from ${t.fnName}()`),e&&(r+=" doc:"),r}var Ff=Ee(Z({},qt),{INVALID_PARAMETER({fnName:i}){return`the parameters of the '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${mt(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${mt(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:i,rule:t,fnName:e}){return`'${i||t.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:i,rule:t,value:e}){return`the min value of ${i||t.name} is ${t.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:i,rule:t,value:e}){return`the max value of ${i||t.name} is ${t.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:i,fnName:t}){return`'${i}' is not found in the document object when calling ${t}().`},INVALID_ELEMENT_ID_TYPE({key:i,fnName:t,type:e}){return`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`},INVALID_STREAM_ID({key:i}){return`'${i}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:i}){return`'${i}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:i}){return`'${i}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:i}){return`'${i}' 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:i})=>`'streamType' is required when 'userId' is not '*', calling ${i}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:i}){return`the API '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:i}){return`cannot ${i} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing ${t.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:i}){return`you are already ${i}(), cannot repeated call '${i}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:i}){return`cannot call '${i}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:i}){return`cannot call '${i}' because the microphone is not turned on.`},INVALID_BUFFER_EMPTY:({key:i})=>`the buffer size of paramerter '${i}' 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:i})=>`you need to call ${i}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:i}){return`the current browser does not support the capability of the function '${i}' 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:i}){return`cannot call ${i} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:i,error:t}){return`'${i}' got device exception${t?`, error: ${t.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:i,deviceType:t=jo(i),error:e}){return`NotFoundError, no ${t} detected, please check your device and the configuration on '${i}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:i,deviceType:t=jo(i),error:e}){return`NotAllowedError, you have disabled ${t} access, please allow the current application to use the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:i,deviceType:t=jo(i),error:e}){return`NotReadableError, the ${t} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:i,deviceType:t=jo(i),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:i,deviceType:t=jo(i),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:i,deviceType:t=jo(i),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${t}, and it is recommended to turn on the ${t} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:i,deviceType:t=jo(i),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:i}){return`camera recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},MICROPHONE_RECOVER_FAILED({error:i}){return`microphone recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},OPERATION_FAILED({fnName:i,error:t}){return`'${i}' failed, reason: ${t==null?void 0:t.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:i}){return`an error was caught on trtc.on('${i}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:i,error:t}){return`video context error ${i} ${(t==null?void 0:t.name)||""} ${(t==null?void 0:t.message)||""}`},SERVER_ERROR({fnName:i,error:t}){return`'${i}' got server error: ${t==null?void 0:t.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:i,url:t}){return`You need to buy packages for ${i}. Refer to: ${t}`},ACCOUNT_NO_MONEY:({fnParams:i})=>`your TRTC account run out of credit, please recharge.${i.sdkAppId?` SDKAppId: ${i.sdkAppId}`:""}`,OPERATION_ABORT({fnName:i}){return`'${i}' abort`},UNKNOWN_ERROR({fnName:i,error:t}){return`'${i}' throw unknown exception${t?`, error: ${t.toString()}.`:"."}`}});function jo(i){if(!i)return"camera";let t=i.toLowerCase();return t.includes("screen")?"screen share":t.includes("audio")?"microphone":"camera"}var Fm=class i extends Error{constructor({code:e,extraCode:r,message:o="",messageParams:s,fnName:n="",originError:d}){var m;let p;o?p=o:p=Hf({code:e===ue.SERVER_ERROR?e:r||e,params:Z({fnName:n,error:d},s)});super(p);u(this,"name","RtcError");u(this,"code");u(this,"extraCode");u(this,"functionName");u(this,"message");u(this,"handler");u(this,"originError");this.name=br[e],this.code=e,this.extraCode=r,this.functionName=n,this.originError=d,this.message=p,this.extraCode===5302&&((m=this.originError)!=null&&m.message.includes("system"))&&(this.handler=()=>{let E={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},_={startLocalVideo:"webcam",startLocalAudio:"microphone"},b=document.createElement("a");To?b.href=`ms-settings:privacy-${_[this.functionName]}`:_r&&(b.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${E[this.functionName]}`),b.href.length>0&&b.click()})}static convertFrom(e,r,o){let s=e;if(e instanceof he){let{stack:n}=e,d={code:ue.UNKNOWN_ERROR,fnName:r,originError:e};switch(e.getCode()){case te.INVALID_PARAMETER:d.code=ue.INVALID_PARAMETER,d.message=e.message;break;case te.INVALID_OPERATION:d.code=ue.INVALID_OPERATION;break;case te.NOT_SUPPORTED:case te.NOT_SUPPORTED_H264:d.code=ue.ENV_NOT_SUPPORTED,e.getCode()===te.NOT_SUPPORTED_H264&&(d.extraCode=e.message.includes(qt.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case te.JOIN_ROOM_FAILED:d.messageParams={fnParams:o};case te.SERVER_TIMEOUT:case te.SWITCH_ROLE_FAILED:d.code=ue.SERVER_ERROR,d.extraCode=e.getExtraCode();break;case te.API_CALL_ABORTED:d.code=ue.OPERATION_ABORT;break;case te.DEVICE_NOT_FOUND:case te.DEVICE_AUTO_RECOVER_FAILED:case te.INITIALIZE_FAILED:d.code=5300,e.name&&(d.extraCode=OI(e.name));break;case te.UNKNOWN:break;default:d.code=ue.OPERATION_FAILED}s=new i(d),n&&(s.stack+=n.substr(n.indexOf(`
|
|
92
|
+
`)))}else{if(e instanceof i)return e;s=new i({code:ue.UNKNOWN_ERROR,fnName:r,originError:e})}return s}};function OI(i){let t;switch(i){case"NotFoundError":t=5301;break;case"NotAllowedError":t=5302;break;case"NotReadableError":t=5303;break;case"OverconstrainedError":t=5304;break;case"InvalidStateError":t=5305;break;case"SecurityError":t=5306;break;case"AbortError":t=5307;break;default:t=5300}return t}var ae=Fm;var Wf={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}}},Gf={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}}},zs={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(i,t,e){if(we(i)&&!document.getElementById(i))throw new ae({code:ue.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:t}})}},jf={name:"userId",required:!0,type:"string"},qf={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[sr.AUDIO_PROFILE_STANDARD,sr.AUDIO_PROFILE_STANDARD_STEREO,sr.AUDIO_PROFILE_HIGH,sr.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function Ca(i,t){if(!i)throw new ae({code:ue.INVALID_OPERATION,extraCode:5101,fnName:t})}function Jf(i,t,e){if(!i)throw new ae({code:ue.INVALID_OPERATION,extraCode:5102,fnName:t,messageParams:{value:e}})}var GO={type:"number",notLessThanZero:!0},PI={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(i,t,e){if(this._room.isJoined)throw new ae({code:ue.INVALID_OPERATION,extraCode:5104,fnName:e});if(i.roomId){if(we(i.roomId))throw new ae({code:ue.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:t}});if(!(/^[1-9]\d*$/.test(String(i.roomId))&&i.roomId<4294967295))throw new ae({code:ue.INVALID_PARAMETER,extraCode:5013,fnName:e,messageParams:{key:t}})}else if(i.strRoomId){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(i.strRoomId))throw new ae({code:ue.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:t}})}else throw new ae({code:ue.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:1e3}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:zs,mute:{type:["boolean","string"]},publish:{type:"boolean"},option:Wf},validate(i){var t;if(!((t=i==null?void 0:i.option)!=null&&t.videoTrack)&&si())throw new ae({code:ue.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:Ee(Z({},zs),{required:!1}),publish:{type:"boolean"},mute:{type:["boolean","string"]},option:Wf}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:qf},validate(i){var t;if(!((t=i==null?void 0:i.option)!=null&&t.audioTrack)&&si())throw new ae({code:ue.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:qf}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:zs,publish:{type:"boolean"},option:Gf},validate(i,t,e,r,o){var s;if(!((s=i==null?void 0:i.option)!=null&&s.videoTrack)){if(si())throw new ae({code:ue.ENV_NOT_SUPPORTED,extraCode:5201});if(!ta())throw new ae({code:ue.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:zs,publish:{type:"boolean"},option:Gf}},muteRemoteAudio:[jf,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[jf,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:zs,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(i,t,e){Ca(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(Jf(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new ae({code:ue.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:Ee(Z({},zs),{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(i,t,e){Ca(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(Jf(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new ae({code:ue.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(i,t,e){if(i.userId!=="*"&&$(i.streamType))throw new ae({code:ue.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(i,t,e){Ca(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(i,t,e,r){if(!sa)throw new ae({code:ue.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new ae({code:ue.INVALID_OPERATION,fnName:e,extraCode:5108});if(i.byteLength>1e3)throw new ae({code:ue.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new ae({code:ue.INVALID_PARAMETER,extraCode:5017,messageParams:{key:t},fnName:e});Ca(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(i,t,e){if(!i&&!this._room.isMainStreamPublished||i&&!this._room.isAuxStreamPublished)throw new ae({code:ue.INVALID_OPERATION,extraCode:5109,messageParams:{key:t},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(i,t,e,r){if(i.byteLength>1e3)throw new ae({code:ue.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new ae({code:ue.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:t}})}}},validate(i,t,e){if(Ca(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new ae({code:ue.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:t}})}}},At={TRTC:PI};var Lt=class extends Error{};function xI(i,t){let e=go(i);for(let r=0;r<t.length;r++)kr(e[r],t[r]);return e}function kI(i){this._resolve=Promise.resolve(i)}function LI(i){this._reject=Promise.reject(i)}var zi=class zi{constructor(t,e){this.instance=t;this.group=e;u(this,"started",!1);u(this,"ops",[]);u(this,"startSame",()=>!0);u(this,"mergeUpdate",xI);let r=zi.instances.get(t);r?r.set(e,this):zi.instances.set(t,new Map([[e,this]]))}static get(t,e){if(!e)return;let r=zi.instances.get(t);return r&&r.get(e)||new zi(t,e)}static gets(t,e){let r=zi.instances.get(t),o=[];return r&&r.forEach((s,n)=>{e.test(n)&&o.push(s)}),o}action(t,e,r){let o=d=>{var p;return t===0?this.started=!0:t===3&&(this.started=!1),this.ops.shift(),(p=this.currentOp)==null||p.action(),d},s=d=>{var p,m;throw this.ops.shift(),t===0&&((p=this.currentOp)==null?void 0:p.type)===2&&this.ops.shift().reject(new Lt("start failed")),(m=this.currentOp)==null||m.action(),d},n={type:t,action:()=>e(...n.args).then(o,s),args:r,resolve:kI,reject:LI};try{switch(this.state){case 1:if(t===0)throw new Lt("already started");break;case 4:if(t===2)throw new Lt("not started");break;default:return this.cacheOp(n)}}catch(d){return Promise.reject(d)}return this.ops.push(n),n.promise=e(...n.args).then(o,s)}cacheOp(t){if(this.ops.length===1)switch(this.state){case 0:case 2:if(t.type===0)throw new Lt("already start");break;case 3:switch(t.type){case 2:throw new Lt("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new Lt("unknown state")}else switch(t.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let r=new Lt("keep stop");if(this.ops.slice(1).forEach(o=>o.reject(r)),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,t.args),this.lastOp.promise;case 3:throw new Lt("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new Lt("start not allowed after update");case 0:throw new Lt("duplicate start");case 3:if(this.startSame(this.currentOp.args,t.args))throw this.ops.pop().reject(new Lt("keep start")),new Lt("already start")}}t.promise=new Promise((r,o)=>{t._resolve?t._resolve.then(r):t.resolve=r,t._reject?t._reject.catch(o):t.reject=o});let{action:e}=t;return t.action=()=>e().then(t.resolve,t.reject),this.ops.push(t),t.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}};u(zi,"instances",new WeakMap);var pi=zi;var Bd=new WeakMap,$d=(i,t)=>{if(t instanceof Lt){let{stack:e}=t;t=new ae({code:ue.OPERATION_ABORT,message:`${i} abort: ${t.message}`,fnName:i}),e&&(t.stack+=e.substr(e.indexOf(`
|
|
93
|
+
`)))}throw t};function Xi(i,t){return Me((e,r)=>function(...o){let s=pi.get(this,typeof i=="string"?i:i.call(this,...o));return s?(t&&(s.startSame=t.bind(this)),s.action(0,e.bind(this),o).catch($d.bind(null,r))):e.apply(this,o)})}function qo(i,t){let{merge:e,debounce:r}=t||{};return Me((o,s)=>function(...n){let d=pi.get(this,typeof i=="string"?i:i.call(this,...n));if(!d)return o.apply(this,n);if(e&&(d.mergeUpdate=e.bind(this)),r&&r.isNeedToDebounce.apply(this,n)){let{delay:p,getKey:m}=r;return new Promise((E,_)=>{var k,x;let b=(k=Bd.get(this))==null?void 0:k.get(m(...n));if(b){let{timeoutId:P,resolve:J}=b;clearTimeout(P),J()}let C=setTimeout(()=>{if(d.state===3||d.state===4)return E();d.action(2,o.bind(this),n).catch($d.bind(null,s)).then(E,_)},p);Bd.has(this)?(x=Bd.get(this))==null||x.set(m(...n),{timeoutId:C,resolve:E}):Bd.set(this,new Map([[m(...n),{timeoutId:C,resolve:E}]]))})}return d.action(2,o.bind(this),n).catch($d.bind(null,s))})}function Qi(i){return Me((t,e)=>function(...r){let o=typeof i=="function"?i.call(this,...r):i;if(o instanceof RegExp)return Promise.all(pi.gets(this,o).map(n=>n.action(3,()=>Promise.resolve(),r))).then(()=>t.call(this,...r));let s=pi.get(this,o);return s?s.action(3,t.bind(this),r).catch($d.bind(null,e)):t.apply(this,r)})}var se={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"},zf=new Set([se.ERROR,se.AUTOPLAY_FAILED,se.KICKED_OUT,se.REMOTE_USER_ENTER,se.REMOTE_USER_EXIT,se.REMOTE_AUDIO_AVAILABLE,se.REMOTE_AUDIO_UNAVAILABLE,se.REMOTE_VIDEO_AVAILABLE,se.REMOTE_VIDEO_UNAVAILABLE,se.CONNECTION_STATE_CHANGED,se.PUBLISH_STATE_CHANGED,se.SCREEN_SHARE_STOPPED,se.DEVICE_CHANGED,se.FIRST_VIDEO_FRAME]);function Yi(i){return i==="sub"?"auxiliary":i==="auxiliary"?"sub":"main"}function Na(i){return i===sr.QOS_PREFERENCE_CLEAR?"detail":i===sr.QOS_PREFERENCE_SMOOTH?"motion":""}var Wm={};qr(Wm,{bytes2ms:()=>Up,convertObjectNumberToInt:()=>On,copyProperties:()=>Lp,deepClone:()=>go,deepMerge:()=>kr,delay:()=>Pn,fibonacci:()=>Eo,formatedTime:()=>Ec,getConstructorName:()=>wn,getContainerFromElement:()=>jp,getEnv:()=>Pp,getInternalVersion:()=>Wp,getLoggerUrl:()=>Qr,getMuteStateFromFlag:()=>Mn,getNetworkType:()=>Nn,getNumNetworkType:()=>fc,getReconnectionTimeout:()=>Bp,getStringByteLength:()=>qp,getTurnServer:()=>Gp,getUint32Version:()=>Ic,getValueType:()=>mt,getViewListFromView:()=>gs,glog:()=>Dn,ipv4ToUint32:()=>fs,isArray:()=>st,isAudioWorkletSupported:()=>Hp,isBoolean:()=>dt,isConstructor:()=>ps,isEmpty:()=>hs,isFunction:()=>ze,isLangChinese:()=>hr,isMediaStreamTrack:()=>$p,isNumber:()=>je,isObject:()=>xr,isOverseaSdkAppId:()=>Cn,isPlainObject:()=>Gt,isPortrait:()=>Tc,isPromise:()=>Mi,isRemoteTrack:()=>Fp,isString:()=>we,isUndefined:()=>$,loadImage:()=>Es,ms2bytes:()=>Vp,ms2samples:()=>Fu,performanceNow:()=>_e,promiseAny:()=>gc,samples2ms:()=>$u,setNetworkType:()=>kp,stringify:()=>rr,stringifyIncludeValue:()=>_c,throttlePromise:()=>Sc});var qm={};qr(qm,{getAbilityConfigUrl:()=>VI,getScheduleDomain:()=>Da,isNeedToSchedule:()=>Fd,scheduleProxy:()=>Rr,sendScheduleRequest:()=>jm,setIsNeedToSchedule:()=>Jo,setScheduleProxy:()=>Hd});var Gm=null,Fd=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(Xr).map(i=>`<link rel="dns-prefetch" href="https://${i}">`).join(`\r
|
|
94
|
+
`));function Jo(i){dt(i)&&i!==Fd&&(Fd=i,B.info(`setIsNeedToSchedule ${i}`))}H.on("28",()=>Jo(!0));H.on("63",()=>Jo(!0));H.on("84",()=>Jo(!0));H.on("201",i=>{i.state==="RECONNECTING"&&Jo(!0)});H.on("202",i=>{i.state==="RECONNECTING"&&Jo(!0)});function UI(i,t,e){let r={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let o=performance.getEntriesByType("resource"),s=Xs(i,D.MAIN),n=Xs(i,D.BACKUP);for(let d of o)if(d.startTime>=e&&(d.name===s||d.name===n)&&d.transferSize>0){let p=d.name===s?D.MAIN:D.BACKUP,m=Math.round(d.duration),E=Math.round(d.domainLookupStart-d.startTime),_=d.redirectStart>0?Math.round(d.redirectEnd-d.redirectStart):0,b=d.fetchStart>0?Math.round(d.domainLookupStart-d.fetchStart):0,C=Math.round(d.domainLookupEnd-d.domainLookupStart),k=Math.round(d.requestStart-d.secureConnectionStart),x=Math.round(d.secureConnectionStart-d.connectStart),P=Math.round(d.responseStart-d.requestStart),J=Math.round(d.responseEnd-d.responseStart),Q=[C,k,x,P,J];$e.uploadEvent({log:`stat-schedule-net:${m}(${E}(${_}->${b})->${Q.join("->")}) ${p}`,userId:t}),r=Ee(Z({},r),{totalCost:m,local:E,dns:C,tcp:x,tls:k,request:P,response:J});break}}catch(o){B.error("getScheduleDetailCost error",o)}return r}function jm(m){return y(this,arguments,function*({userId:i,sdkAppId:t,useStringRoomId:e,roomId:r,userSig:o,version:s,frameWorkType:n,role:d,latencyLevel:p}){if(!Fd&&Gm)return{isCached:!0,result:Gm};let E={delta:0,count:[1,1],msg:[],detail:[]};try{let _=new FormData;_.append("userId",String(i)),_.append("sdkAppId",String(t)),_.append("isStrGroupId",String(e)),_.append("groupId",String(r)),_.append("sdkVersion",s),_.append("userSig",String(o)),d&&_.append("role",String(d)),p&&_.append("latencyLevel",String(p)),n&&_.append("frameWorkType",String(n));let b=_e(),C=yield $I(_,E,t);C.config&&(C.config.loggerDomain&&po(C.config.loggerDomain),dt(C.config.scheduleCache)&&Jo(!C.config.scheduleCache)),E.delta=_e()-b;let k=UI(Number(t),i,b);return Gm=C,{isCached:!1,result:C,detailCost:k}}catch(_){let b=st(_)?_[0]:_,C=je(b.code)?b.code:0,k=`schedule failed${b.message?`: ${b.message}`:""}`,x=new he({code:te.SCHEDULE_FAILED,extraCode:C,message:at({key:nt.JOIN_ROOM_FAILED,data:{error:k,code:C}})});throw B.error(k,C),x}})}var Rr={main:"",backup:""};function Hd(i){st(i)?(Rr.main=i[0],Rr.backup=i[1]):Rr.main=i}function Xs(i,t=D.MAIN,e=!1){return`https://${Rr[t]||Da(i,t,e)}/api/v1/config`}function VI(i,t=D.MAIN){return`https://${Rr[t]||Da(i,t)}/api/v1/trtcAutoConf`}function Da(i,t=D.MAIN,e=!1){let r;return Cn(i)?e?r=t===D.MAIN?Xr.MAIN_OVERSEA_BACKUP:Xr.BACKUP_OVERSEA:r=t===D.MAIN?Xr.MAIN_OVERSEA:Xr.BACKUP_OVERSEA:r=t===D.MAIN?Xr.MAIN:Xr.BACKUP,r}function BI(i,t,e){return new Promise((r,o)=>{Yr({url:i,body:t,timeout:e.timeout,priority:"high"}).then(s=>{s.data.code===0?r(s.data.data):o({code:s.data.code,message:s.data.msg})}).catch(o)})}var Xf=(i,t)=>Pi({retryFunction:BI,settings:{retries:3,timeout:0},onError:t,onRetrying:i});function $I(i,t,e){return new Promise((r,o)=>{let s=null;gc([Xf(n=>t.count[0]=n+1,({error:n,retry:d,retriedCount:p,retryFuncArgs:m})=>{t.msg[0]=n.message,s||(p>=1&&(m[0]=Xs(e,D.MAIN,!0)),d())})(Xs(e,D.MAIN),i,{get timeout(){return Eo(2+t.count[0])*1e3}}),Xf(n=>t.count[1]=n+1,({error:n,retry:d,retriedCount:p,retryFuncArgs:m})=>{t.msg[1]=n.message,s||(p>=2&&(m[0]=Xs(e,D.BACKUP,!0)),d())})(Xs(e,D.BACKUP),i,{get timeout(){return Eo(2+t.count[1])*1e3}})]).then(n=>{s=n,r(s)}).catch(o)})}var FI=i=>i.startsWith("data:application/octet-stream;base64,"),HI=i=>i.startsWith("file://"),Wd=class{constructor(){u(this,"_log");this._log=B.createLogger({id:"fd"})}download(t,e){return y(this,null,function*(){let{type:r="blob"}=e||{};try{let o=_e(),s;if(ze(fetch)?s=yield this.downloadWithFetch(t,r):s=yield this.downloadWithXHR(t,r),!s||!s.data)throw new Error("data is empty");let n=_e()-o;return this._log.info(`downloaded: ${t}, return type: ${r}, cost: ${n}ms`),Y.addSuccessEvent({key:522700,cost:_e()-o}),s.data}catch(o){throw this._log.error(`failed to download: ${t}, error: ${o}`),Y.addFailedEvent({key:522700,error:o}),o}})}downloadWithFetch(t,e){return y(this,null,function*(){this._log.info(`download with fetch: ${t}, return type: ${e}`);try{let r=yield fetch(t);if(!r.ok)throw new Error("network response was not ok");let o;return e==="arraybuffer"?o=yield r.arrayBuffer():o=yield r.blob(),{data:o}}catch(r){throw r}})}downloadWithXHR(t,e){return this._log.info(`download with xhr: ${t}, return type: ${e}`),new Promise((r,o)=>{let s=new XMLHttpRequest;s.open("GET",t,!0),s.responseType=e,s.onload=()=>{s.status===200||s.status===0&&s.response?r({data:s.response}):o(new Error("XHR failed"))},s.onerror=o,s.send(null)})}loadWasm(t,e){return y(this,null,function*(){this._log.info(`loadWasm ${t}, importObject: ${JSON.stringify(e)}`);let r=_e(),o=null,s=null;if(ze(WebAssembly.instantiateStreaming)&&!FI(t)&&!HI(t)&&ze(fetch))try{let n=fetch(t);o=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){s=n}if(!o)try{let n=yield this.download(t,{type:"arraybuffer"});o=(yield WebAssembly.instantiate(n,e)).instance}catch(n){s=n}if(o){let n=_e()-r;return this._log.info(`loadedWasm ${t}, cost: ${n}ms`),Y.addSuccessEvent({key:522701,cost:n}),o}throw this._log.error(`failed to loadWasm ${t}, error: ${s}`),Y.addFailedEvent({key:522701,error:s}),s})}};X([Bi({settings:{timeout:0,retries:3},onRetrying(t){this._log.warn(`download retrying: ${t}`)}})],Wd.prototype,"download",1);var Qf=new Wd;function Yf({TRTC:i,room:t,errorModule:e,assetsPath:r}){return{TRTC:i,room:t,assetsPath:r,fileDownloader:Qf,innerEmitter:H,constants:Bu,environment:Ds,utils:Wm,eventLogger:$e,log:this.room.getLogger(),loggerManager:B,errorModule:e,kvStatManager:Y,rtcDectection:Vi,trtc:this,rx:km,enums:Tl,schedule:qm,clearStarted:(o,s)=>{let n=o.getAlias(),d=pi.instances.get(this);if(d)if(s){let p=d.get(n+s);if(!p)return;p.started=!1}else d.forEach((p,m)=>{m.startsWith(n)&&(p.started=!1)})},startGetPCM:ga,createAudioNode:Gl}}var Zf=(i,t)=>{let{emit:e}=i;return i.emit=(...r)=>{try{return e.apply(i,r)}catch(o){let s=at({key:nt.CATCH_HANDLER_ERROR,data:{name:t,event:r[0]},addDocLink:!1});return B.warn(`${s}
|
|
55
95
|
|
|
56
|
-
${r.stack}`),!1}},s};var ys=new WeakMap;function Rm(s){let i=ys.get(s);i&&(i.forEach(e=>clearTimeout(e)),ys.delete(s))}function ym(s,i){return J((e,t)=>function(...r){let o=ys.get(this);o||(o=new Map,ys.set(this,o));let n=i(...r),a=o.get(n);if(!a||a<=0){e.apply(this,r);let d=setTimeout(()=>{var l;(l=ys.get(this))==null||l.delete(n)},s);o.set(n,d)}else{clearTimeout(a);let d=window.setTimeout(()=>{var l;e.apply(this,r),(l=ys.get(this))==null||l.delete(n)},s);o.set(n,d)}})}var bm="5.9.2-beta.9";function Ge(...s){return J((i,e)=>function(...t){try{Fa.call(this,s,t,e,this._name)}catch(r){return Promise.reject(r)}return i.apply(this,t)})}function Pl(...s){return J((i,e)=>function(...t){try{Fa.call(this,s,t,e,this._name)}catch(r){throw r}return i.apply(this,t)})}function Fa(s,i,e,t){if(Te(s))for(let r=0;r<s.length;r++)Ba.call(this,{rule:s[r],value:i[r],key:s[r].name,fnName:e,className:t});else Ba.call(this,{rule:s,value:i[0],key:s.name,fnName:e,className:t})}function Ba({rule:s,value:i,key:e,fnName:t,className:r}){function o(d){return{code:V.INVALID_PARAMETER,extraCode:d,fnName:t,messageParams:{key:e,rule:s,value:i}}}if(g(i)){if(s.required)throw new w(o(5001));if(g(s.defaultValue)){oe(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 l=0;l<s.type.length;l++)s.type[l]===null&&i===null&&(d=!0),oe(s.type[l])&&i instanceof s.type[l]&&(d=!0),K(s.type[l])&&Ae(i)===s.type[l].toLowerCase()&&(d=!0);if(!d)throw new w({code:V.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:s.type.map(l=>Wr(l)?Qs(l):K(l)?l:Ae(l))},value:i}})}else if(!g(s.type)&&Ae(i)!==s.type)throw new w(o(5002));if(s.allowEmpty===!1){let d=Y(i)&&(i===0||Number.isNaN(i)),l=K(i)&&i.trim()==="";if(d||l)throw new w(o(5003))}if(s.notLessThanZero&&Y(i)&&i<0)throw new w(o(5006));if(!g(s.min)&&Y(i)&&i<s.min)throw new w(o(5007));if(!g(s.max)&&Y(i)&&i>s.max)throw new w(o(5008));if(K(s.instanceOf)){if(!i||i._name!==s.instanceOf)throw new w(o(5004))}else if(oe(s.instanceOf)&&!(i instanceof s.instanceOf))throw new w(o(5004));if(Array.isArray(s.values)&&!s.values.includes(i))throw new w(o(5005));let{properties:n}=s;Ye(n)&&$t(i)&&Object.keys(n).forEach(d=>{Ba.call(this,{rule:n[d],value:i&&i[d],key:`${d}`,fnName:t,className:r})});let{arrayItem:a}=s;Ye(a)&&Te(i)&&i.forEach((d,l)=>{Ba.call(this,{rule:a,value:d,key:`${e}[${l}]`,fnName:t,className:r})}),oe(s.validate)&&s.validate.call(this,i,e,t,r,this)}function ue(s={}){let{getRemoteId:i=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:r}=s;return J((o,n)=>function(...a){var u;function d(p,_,I){if(I&&I.includes(p))return"hided";if(e){let R=e(...a);if(a[R.argIndex]===_)return R.value}if(_===a||p in a)return _;try{return _ instanceof HTMLElement?`id: ${_.id} type:${Ae(_)}`:(JSON.stringify(_),_)}catch(R){return`type:${Ae(_)}`}}let l=this._log||C;if(r!=null&&r(...a))return o.apply(this,a);a.length>0?l.info(`${n}() ${JSON.stringify(a,(p,_)=>d(p,_,["userSig","privateMapKey"]))}`):l.info(`${n}()`);let m=t?t(...a):Wn[n];try{let p=o.apply(this,a),_=L();return Gi(p)?p.then(I=>(l.info(`${n}() success ${i.call(this,...a)}`),N.addSuccessEvent({key:m,cost:L()-_}),I)).catch(I=>{var G;I=w.convertFrom.call(this,I,n,a.length===1?a[0]:a);let R=I.extraCode||I.code,D=(G=I.message)!=null&&G.includes(R)?"":` code:${R}`;throw l.error(`${n}() failed ${i.call(this,...a)} ${I}${D} params: ${JSON.stringify(a,d)}`),N.addFailedEvent({key:m,error:I}),I}):(N.addSuccessEvent({key:m}),p)}catch(p){p=w.convertFrom.call(this,p,n);let _=p.extraCode||p.code,I=(u=p.message)!=null&&u.includes(_)?"":` code:${_}`;throw l.error(`${n}() failed ${p}${I} params: ${JSON.stringify(a,d)}`),N.addFailedEvent({key:m,error:p}),p}})}var Ha=s=>J((i,e)=>function(t,r){return f(this,null,function*(){let o=this._plugins.get(t);if(!o)throw this._log.error(`plugin ${String(t)} is not found`),new w({code:V.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 w({code:V.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return Fa.call(this,o.getValidateRule(s),[r],e,"TRTC"),i.call(this,o,r)})});var $a=0,wl=class{constructor(i,e){c(this,"player");c(this,"publisher");c(this,"mixInput");this.mixInput=new ps(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&&(g(i.volume)||(this.volume=i.volume),g(i.loop)||(this.loop=i.loop),g(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 bs(s,i){if(i&&typeof i!="function")throw new w({code:V.INVALID_PARAMETER,message:`start audioMixer plugin: param ${s} should be a function.`})}var oi=class oi{constructor(i){this.core=i;c(this,"log");c(this,"mixedMusicMap",new Map);c(this,"cacheMusicMap",new Map);$a=$a+1,this.log=i.log.createChild({id:`${this.getAlias()}${$a}`}),this.log.info(`[audioMixer] created id=${this.getAlias()}${$a}`),this.core=i}getName(){return oi.Name}getAlias(){return"ax"}getGroup(i){return i==null?void 0:i.id}getValidateRule(i){switch(i){case"start":return oi.startValidateRule;case"update":return oi.updateValidateRule;case"stop":return oi.stopValidateRule}}start(i){return f(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 wl(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.`),N.addEnum({key:502700,value:3}),this.kvUpload(i)})}update(i){return f(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),g(t)||n.setOperation(t),g(r)||n.seek(r),this.kvUpload(i)})}stop(e){return f(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:d,onDurationChange:l,onEnded:m}=i;e&&N.addCount({key:502711}),t&&N.addCount({key:502703}),r&&N.addCount({key:502704}),o&&N.addCount({key:502705}),n&&N.addCount({key:502706}),a&&N.addCount({key:502707}),typeof d!="function"&&N.addCount({key:502709}),typeof m!="function"&&N.addCount({key:502710}),typeof l!="function"&&N.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()}};c(oi,"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"),l=r.startsWith("data");if(!(a||d||l))throw new w({code:V.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:t})}if(!i.url&&!i.track)throw new w({code:V.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});bs("onTimeUpdate",i.onTimeUpdate),bs("onEnded",i.onEnded),bs("onDurationChange",i.onDurationChange)}}),c(oi,"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){bs("onTimeUpdate",i.onTimeUpdate),bs("onEnded",i.onEnded),bs("onDurationChange",i.onDurationChange)}}),c(oi,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),c(oi,"Name","AudioMixer");var Ga=oi;var Wa=0,xl,xi=class xi{constructor(i){this.core=i;c(this,"log");c(this,"audioContext",et("denoiser"));c(this,"workletNode");Wa=Wa+1,this.log=i.log.createChild({id:`${this.getAlias()}${Wa}`}),this.log.info(`[audioDenoiser] created id=${this.getAlias()}${Wa}`),i.assetsPath&&this.preload(`${i.assetsPath}/denoiser-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 w({code:V.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return xl||(xl=this.doPreload(i)),xl}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield Sr(this.audioContext,t)}finally{URL.revokeObjectURL(t)}})}getName(){return xi.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(i){switch(i){case"start":return xi.startValidateRule(this.core);case"update":return xi.updateValidateRule;case"stop":return xi.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core;if(yield this.preload(`${i.assetsPath}/denoiser-wasm.js`),!this.workletNode){let t=String(Date.now()).slice(0,-3),{auth:r,sign:o,status:n,message:a}=yield rT(M(v({},i),{timestamp:t}));if(!r)throw this.log.info(`RTCAIDenoiser: ${i.userId} auth result: ${r}. Message: ${a}`),new w({code:V.INVALID_PARAMETER,message:a});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:t,sign:o,status:n}}),this.workletNode.port.onmessage=d=>{let{data:l}=d;l.type==="cost"&&this.log.debug(`[RTCAIDenoiser] ${l.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return f(this,null,function*(){})}stop(){return f(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)}};c(xi,"updateValidateRule",{type:"object"}),c(xi,"stopValidateRule",{type:"object"}),c(xi,"Name","AIDenoiser");var Ja=xi;function iT(s,i=h.MAIN){return`https://${wt[i]||$o(s,i)}/api/v1/audioAiAuth`}function rT(r){return f(this,arguments,function*({sdkAppId:s,userId:i,userSig:e,timestamp:t}){let n=`${iT(s)}?sdkAppId=${s}&userId=${i}&userSig=${e}×tamp=${t}`,a=yield fetch(n),{data:{errCode:d,errMsg:l,sign:m,status:u}}=yield a.json();if(u==="1")return{auth:!0,sign:m,status:u,message:l};let p="Init RTCAIDenoiser failed.",_="";switch(d){case 1:_="Please check your params.";break;case 2:_="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:_="Server is invalid. Please contact our engineer. ";break;case 4:_="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:_="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:_="Your version is not supported.";break}return{auth:!1,status:u,message:l?`${p} Reason: ${l}. ${_}`:`${p}, ${_}`}})}var Nm=Pe(Je(),1);var Ul=class extends Nm.EventEmitter{constructor(){super();c(this,"observer");c(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 f(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!pe&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){ee.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)&&C.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){ee.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:t})}}},sT=new Ul,Vl=sT;function Bl([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 Di(new DataView(new Uint8Array(o).buffer),!0)}function Fl(s){return s.type==="empty"||s.data.byteLength===0}function Hl(s){return s.getInt32(0)===1&&s.getInt8(4)===6}function $l(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 Gl({frame:s,seiMessageList:i}){if(!i||i.length===0||s.data.byteLength===0)return s;let t=9-$l(s.data);if(t<=0)return s;let r=i.splice(0,t).reverse().map(Bl),o=r.reduce((m,u)=>m+u.dataView.byteLength,0),n=new ArrayBuffer(o+s.data.byteLength),a=new DataView(n),d=new DataView(s.data),l=0;for(let m=0;m<r.length;m++)for(let u=0;u<r[m].dataView.byteLength;u++)a.setInt8(l++,r[m].dataView.getInt8(u));for(let m=0;m<s.data.byteLength;m++)a.setInt8(l++,d.getInt8(m));return s.data=n,s}function Wl({frame:s,onSEI:i}){try{let e=new DataView(s.data);if(Fl(s)||!Hl(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 l=a-r;if(o===-1?o=l:n===-1&&(n=l,t.push(new Di(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 Jl=0,Go=class Go{constructor(i){this.core=i;c(this,"log");c(this,"_seiMessageList",[]);c(this,"_smallSeiMessageList",[]);c(this,"_subStreamSeiMessageList",[]);Jl++,this.log=i.log.createChild({id:`${this.getAlias()}${Jl}`}),this.log.info(`[sei] created id=${this.getAlias()}${Jl}`),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 Gl({frame:i,seiMessageList:t})}catch(t){this.log.warn(t)}return i}decode({frame:i,track:e}){return Wl({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:yi?this.encode:Gl,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:yi?this.decode:Wl,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 Go.Name}getAlias(){return"sei"}getGroup(){return"sei"}};c(Go,"autoStart",!0),c(Go,"Name","SEI");var qa=Go;function ql({frame:s,onDump:i}){return i==null||i(),s}function jl({frame:s,onDump:i}){return i==null||i(),s}var vm={"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:
|
|
96
|
+
${o.stack}`),!1}},i};var Qs=new WeakMap;function Kf(i){let t=Qs.get(i);t&&(t.forEach(e=>clearTimeout(e)),Qs.delete(i))}function eg(i,t){return Me((e,r)=>function(...o){let s=Qs.get(this);s||(s=new Map,Qs.set(this,s));let n=t(...o),d=s.get(n);if(!d||d<=0){e.apply(this,o);let p=setTimeout(()=>{var m;(m=Qs.get(this))==null||m.delete(n)},i);s.set(n,p)}else{clearTimeout(d);let p=window.setTimeout(()=>{var m;e.apply(this,o),(m=Qs.get(this))==null||m.delete(n)},i);s.set(n,p)}})}var tg="5.10.0-wasm.1";function Ut(...i){return Me((t,e)=>function(...r){try{jd.call(this,i,r,e,this._name)}catch(o){return Promise.reject(o)}return t.apply(this,r)})}function Jm(...i){return Me((t,e)=>function(...r){try{jd.call(this,i,r,e,this._name)}catch(o){throw o}return t.apply(this,r)})}function jd(i,t,e,r){if(st(i))for(let o=0;o<i.length;o++)Gd.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else Gd.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}function Gd({rule:i,value:t,key:e,fnName:r,className:o}){function s(p){return{code:ue.INVALID_PARAMETER,extraCode:p,fnName:r,messageParams:{key:e,rule:i,value:t}}}if($(t)){if(i.required)throw new ae(s(5001));if($(i.defaultValue)){ze(i.validate)&&i.validate.call(this,t,e,r,o,this);return}t=i.defaultValue}if(Array.isArray(i.type)){let p=!1;for(let m=0;m<i.type.length;m++)i.type[m]===null&&t===null&&(p=!0),ze(i.type[m])&&t instanceof i.type[m]&&(p=!0),we(i.type[m])&&mt(t)===i.type[m].toLowerCase()&&(p=!0);if(!p)throw new ae({code:ue.INVALID_PARAMETER,extraCode:5002,fnName:r,messageParams:{key:e,rule:{type:i.type.map(m=>ps(m)?wn(m):we(m)?m:mt(m))},value:t}})}else if(!$(i.type)&&mt(t)!==i.type)throw new ae(s(5002));if(i.allowEmpty===!1){let p=je(t)&&(t===0||Number.isNaN(t)),m=we(t)&&t.trim()==="";if(p||m)throw new ae(s(5003))}if(i.notLessThanZero&&je(t)&&t<0)throw new ae(s(5006));if(!$(i.min)&&je(t)&&t<i.min)throw new ae(s(5007));if(!$(i.max)&&je(t)&&t>i.max)throw new ae(s(5008));if(we(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new ae(s(5004))}else if(ze(i.instanceOf)&&!(t instanceof i.instanceOf))throw new ae(s(5004));if(Array.isArray(i.values)&&!i.values.includes(t))throw new ae(s(5005));let{properties:n}=i;Gt(n)&&xr(t)&&Object.keys(n).forEach(p=>{Gd.call(this,{rule:n[p],value:t&&t[p],key:`${p}`,fnName:r,className:o})});let{arrayItem:d}=i;Gt(d)&&st(t)&&t.forEach((p,m)=>{Gd.call(this,{rule:d,value:p,key:`${e}[${m}]`,fnName:r,className:o})}),ze(i.validate)&&i.validate.call(this,t,e,r,o,this)}function Ye(i={}){let{getRemoteId:t=()=>"",replaceArg:e,getKVReportKey:r,ignoreLog:o}=i;return Me((s,n)=>function(...d){var _;function p(b,C,k){if(k&&k.includes(b))return"hided";if(e){let x=e(...d);if(d[x.argIndex]===C)return x.value}if(C===d||b in d)return C;try{return C instanceof HTMLElement?`id: ${C.id} type:${mt(C)}`:(JSON.stringify(C),C)}catch(x){return`type:${mt(C)}`}}let m=this._log||B;if(o!=null&&o(...d))return s.apply(this,d);d.length>0?m.info(`${n}() ${JSON.stringify(d,(b,C)=>p(b,C,["userSig","privateMapKey"]))}`):m.info(`${n}()`);let E=r?r(...d):Xc[n];try{let b=s.apply(this,d),C=_e();return Mi(b)?b.then(k=>(m.info(`${n}() success ${t.call(this,...d)}`),Y.addSuccessEvent({key:E,cost:_e()-C}),k)).catch(k=>{var J;k=ae.convertFrom.call(this,k,n,d.length===1?d[0]:d);let x=k.extraCode||k.code,P=(J=k.message)!=null&&J.includes(x)?"":` code:${x}`;throw m.error(`${n}() failed ${t.call(this,...d)} ${k}${P} params: ${JSON.stringify(d,p)}`),Y.addFailedEvent({key:E,error:k}),k}):(Y.addSuccessEvent({key:E}),b)}catch(b){b=ae.convertFrom.call(this,b,n);let C=b.extraCode||b.code,k=(_=b.message)!=null&&_.includes(C)?"":` code:${C}`;throw m.error(`${n}() failed ${b}${k} params: ${JSON.stringify(d,p)}`),Y.addFailedEvent({key:E,error:b}),b}})}var qd=i=>Me((t,e)=>function(r,o){return y(this,null,function*(){let s=this._plugins.get(r);if(!s)throw this._log.error(`plugin ${String(r)} is not found`),new ae({code:ue.OPERATION_ABORT,message:`plugin ${String(r)} is not found`,fnName:e});if(ze(s.constructor.isSupported)&&!s.constructor.isSupported())throw this._log.error(`plugin ${String(r)} is not supported`),new ae({code:ue.ENV_NOT_SUPPORTED,message:`plugin ${String(r)} is not supported`,extraCode:5210,fnName:e});return jd.call(this,s.getValidateRule(i),[o],e,"TRTC"),t.call(this,s,o)})});var Jd=0,zm=class{constructor(t,e){u(this,"player");u(this,"publisher");u(this,"mixInput");this.mixInput=new Vs(e),t.url?(this.player=new Audio(t.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(t.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(t.track),this.mixInput.connect()}updateSettings(t){this.player&&($(t.volume)||(this.volume=t.volume),$(t.loop)||(this.loop=t.loop),$(t.playbackRate)||(this.playbackRate=t.playbackRate))}updateListener(t){if(this.player){if(t.onDurationChange){let{onDurationChange:e}=t;this.player.ondurationchange=r=>{e(r.target.duration)}}if(t.onTimeUpdate){let e=t.onTimeUpdate,{player:r}=this;r.ontimeupdate=()=>{e(r.currentTime,r.duration)}}t.onEnded&&(this.player.onended=t.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(t){this.player&&(t<0&&t>this.player.duration||(this.player.currentTime=t,this.publisher.currentTime=t))}play(){var t,e;return(t=this.publisher)==null||t.play(),(e=this.player)==null?void 0:e.play()}pause(){var t,e;(t=this.player)==null||t.pause(),(e=this.publisher)==null||e.pause()}stop(){var t;(t=this.player)==null||t.pause(),this.mixInput.disconnect()}setOperation(t){t==="pause"&&this.pause(),t==="resume"&&(this.pause(),this.play()),t==="stop"&&(this.pause(),this.seek(0))}set volume(t){!this.player||!this.publisher||(this.player.volume=t,this.publisher.volume=t)}set loop(t){!this.player||!this.publisher||(this.player.loop=t,this.publisher.loop=t)}set playbackRate(t){!this.player||!this.publisher||(this.player.playbackRate=t,this.publisher.playbackRate=t)}};function Ys(i,t){if(t&&typeof t!="function")throw new ae({code:ue.INVALID_PARAMETER,message:`start audioMixer plugin: param ${i} should be a function.`})}var Fr=class Fr{constructor(t){this.core=t;u(this,"log");u(this,"mixedMusicMap",new Map);u(this,"cacheMusicMap",new Map);Jd=Jd+1,this.log=t.log.createChild({id:`${this.getAlias()}${Jd}`}),this.log.info(`[audioMixer] created id=${this.getAlias()}${Jd}`),this.core=t}getName(){return Fr.Name}getAlias(){return"ax"}getGroup(t){return t==null?void 0:t.id}getValidateRule(t){switch(t){case"start":return Fr.startValidateRule;case"update":return Fr.updateValidateRule;case"stop":return Fr.stopValidateRule}}start(t){return y(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${t.id} url: ${t.url}, track: ${t.track}`);let{id:r,url:o}=t;if(this.mixedMusicMap.has(r))return;let s=this.cacheMusicMap.get(r);s?t.url?s.reset():(s.mixInput.replaceSource(t.track),s.mixInput.connect()):(s=new zm(t,e.audioManager),this.cacheMusicMap.set(r,s)),s.updateListener(t),s.updateSettings(t),yield s.play(),this.mixedMusicMap.set(r,s),this.log.info(`start mix audio track ${r} success.`),Y.addEnum({key:502700,value:3}),this.kvUpload(t)})}update(t){return y(this,null,function*(){let{id:e,operation:r,seekFrom:o,playbackRate:s}=t;this.log.info(`update music source, ${JSON.stringify(t)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(t),n.updateListener(t),$(r)||n.setOperation(r),$(o)||n.seek(o),this.kvUpload(t)})}stop(e){return y(this,arguments,function*({id:t}){var r;this.mixedMusicMap.has(t)&&(this.log.info(`remove music source, music id: ${t}`),(r=this.mixedMusicMap.get(t))==null||r.stop(),this.mixedMusicMap.delete(t)),t==="*"&&this.destroyAllMusic()})}kvUpload(t){let{track:e,loop:r,volume:o,playbackRate:s,operation:n,seekFrom:d,onTimeUpdate:p,onDurationChange:m,onEnded:E}=t;e&&Y.addCount({key:502711}),r&&Y.addCount({key:502703}),o&&Y.addCount({key:502704}),s&&Y.addCount({key:502705}),n&&Y.addCount({key:502706}),d&&Y.addCount({key:502707}),typeof p!="function"&&Y.addCount({key:502709}),typeof E!="function"&&Y.addCount({key:502710}),typeof m!="function"&&Y.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((t,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()}};u(Fr,"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(t,e,r){if(t.url&&t.url!=="*"){let o=t.url.split("?")[0],s=["mp3","ogg","wav","flac"],n=o.split(".").pop(),d=s.indexOf(n)>=0,p=o.startsWith("blob"),m=o.startsWith("data");if(!(d||p||m))throw new ae({code:ue.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:r})}if(!t.url&&!t.track)throw new ae({code:ue.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:r});Ys("onTimeUpdate",t.onTimeUpdate),Ys("onEnded",t.onEnded),Ys("onDurationChange",t.onDurationChange)}}),u(Fr,"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(t,e,r){Ys("onTimeUpdate",t.onTimeUpdate),Ys("onEnded",t.onEnded),Ys("onDurationChange",t.onDurationChange)}}),u(Fr,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),u(Fr,"Name","AudioMixer");var zd=Fr;var Xd=0,Xm,hi=class hi{constructor(t){this.core=t;u(this,"log");u(this,"audioContext",et("denoiser"));u(this,"workletNode");Xd=Xd+1,this.log=t.log.createChild({id:`${this.getAlias()}${Xd}`}),this.log.info(`[audioDenoiser] created id=${this.getAlias()}${Xd}`),t.assetsPath&&this.preload(`${t.assetsPath}/denoiser-wasm.js`)}static startValidateRule(t){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,r,o,s){if(!t.room.audioManager.hasAudioTrack)throw new ae({code:ue.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return Xm||(Xm=this.doPreload(t)),Xm}doPreload(t){return y(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield Mo(this.audioContext,r)}finally{URL.revokeObjectURL(r)}})}getName(){return hi.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(t){switch(t){case"start":return hi.startValidateRule(this.core);case"update":return hi.updateValidateRule;case"stop":return hi.stopValidateRule}}start(t){return y(this,null,function*(){let{room:e}=this.core;if(yield this.preload(`${t.assetsPath}/denoiser-wasm.js`),!this.workletNode){let r=String(Date.now()).slice(0,-3),{auth:o,sign:s,status:n,message:d}=yield jI(Ee(Z({},t),{timestamp:r}));if(!o)throw this.log.info(`RTCAIDenoiser: ${t.userId} auth result: ${o}. Message: ${d}`),new ae({code:ue.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(t.sdkAppId),userId:t.userId,timestamp:r,sign:s,status:n}}),this.workletNode.port.onmessage=p=>{let{data:m}=p;m.type==="cost"&&this.log.debug(`[RTCAIDenoiser] ${m.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return y(this,null,function*(){})}stop(){return y(this,null,function*(){if(!this.workletNode)return;let{room:t}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield t.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};u(hi,"updateValidateRule",{type:"object"}),u(hi,"stopValidateRule",{type:"object"}),u(hi,"Name","AIDenoiser");var Qd=hi;function GI(i,t=D.MAIN){return`https://${Rr[t]||Da(i,t)}/api/v1/audioAiAuth`}function jI(o){return y(this,arguments,function*({sdkAppId:i,userId:t,userSig:e,timestamp:r}){let n=`${GI(i)}?sdkAppId=${i}&userId=${t}&userSig=${e}×tamp=${r}`,d=yield fetch(n),{data:{errCode:p,errMsg:m,sign:E,status:_}}=yield d.json();if(_==="1")return{auth:!0,sign:E,status:_,message:m};let b="Init RTCAIDenoiser failed.",C="";switch(p){case 1:C="Please check your params.";break;case 2:C="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:C="Server is invalid. Please contact our engineer. ";break;case 4:C="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:C="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:C="Your version is not supported.";break}return{auth:!1,status:_,message:m?`${b} Reason: ${m}. ${C}`:`${b}, ${C}`}})}var rg=Di(Ui(),1);var Qm=class extends rg.EventEmitter{constructor(){super();u(this,"observer");u(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 y(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!gt&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){$e.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let r=this.stateNum,o=e[e.length-1];this.state=o.state,(this.stateNum>3||r>3)&&B.info(`${o.source}: ${o.state}`),this.emit("state-changed",{type:o.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(r){$e.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:r})}}},qI=new Qm,Ym=qI;function JI([i,t]){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,i);for(let d=0;d<r;d++)s.push(255);s.push(o);let n=new DataView(t);return s.push(...new Uint8Array(n.buffer)),s.push(128),new xo(new DataView(new Uint8Array(s).buffer),!0)}function zI(i){return i.type==="empty"||i.data.byteLength===0}function XI(i){return i.getInt32(0)===1&&i.getInt8(4)===6}function QI(i){let t=0,e=0,r=new DataView(i);for(let o=0;o<i.byteLength;o++)switch(r.getUint8(o)){case 0:t++;break;case 1:(t===2||t===3)&&e++,t=0;break;default:t=0;break}return e}function Zm({frame:i,seiMessageList:t}){if(!t||t.length===0||i.data.byteLength===0)return i;let r=9-QI(i.data);if(r<=0)return i;let o=t.splice(0,r).reverse().map(JI),s=o.reduce((E,_)=>E+_.dataView.byteLength,0),n=new ArrayBuffer(s+i.data.byteLength),d=new DataView(n),p=new DataView(i.data),m=0;for(let E=0;E<o.length;E++)for(let _=0;_<o[E].dataView.byteLength;_++)d.setInt8(m++,o[E].dataView.getInt8(_));for(let E=0;E<i.data.byteLength;E++)d.setInt8(m++,p.getInt8(E));return i.data=n,i}function Km({frame:i,onSEI:t}){try{let e=new DataView(i.data);if(zI(i)||!XI(e))return i;let r=[],o=0,s=-1,n=-1;for(let d=0;d<i.data.byteLength;d++){let p=e.getUint8(d);if(p===0)o++;else if(p===1){if(o===2||o===3){let m=d-o;if(s===-1?s=m:n===-1&&(n=m,r.push(new xo(new DataView(e.buffer.slice(s,n)))),s=m,n=-1),!(e.getUint8(d+1)===6)){i.data=e.buffer.slice(m);break}}o=0}else o=0}t==null||t(r.reverse())}catch(e){}return i}var ep=0,wa=class wa{constructor(t){this.core=t;u(this,"log");u(this,"_seiMessageList",[]);u(this,"_smallSeiMessageList",[]);u(this,"_subStreamSeiMessageList",[]);ep++,this.log=t.log.createChild({id:`${this.getAlias()}${ep}`}),this.log.info(`[sei] created id=${this.getAlias()}${ep}`),this.core=t,this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:t,mediaType:e}){try{let r=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return Zm({frame:t,seiMessageList:r})}catch(r){this.log.warn(r)}return t}decode({frame:t,track:e}){return Km({frame:t,onSEI:r=>{r.forEach(o=>{this.core.trtc.emit(se.SEI_MESSAGE,{seiPayloadType:o.seiPayloadType,data:o.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(t){switch(t){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:oa?this.encode:Zm,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:oa?this.decode:Km,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:t,options:e}){var s;let r=[e.seiPayloadType,t],o=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(r):(this._seiMessageList.push(r),o&&this._smallSeiMessageList.push(r)),(s=this.core.room.scriptTransformWorker)==null||s.postMessage({type:"sei",data:r,isMain:!e.toSubStream,small:o})}getName(){return wa.Name}getAlias(){return"sei"}getGroup(){return"sei"}};u(wa,"autoStart",!0),u(wa,"Name","SEI");var Yd=wa;function tp({frame:i,onDump:t}){return t==null||t(),i}function rp({frame:i,onDump:t}){return t==null||t(),i}var ig={"play() error: NotAllowedError:":{tips:i=>i.includes("main <video>")||i.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:i=>i.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:i=>i.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
97
|
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.
|
|
58
98
|
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:
|
|
59
99
|
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
|
-
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=>{vm[`${s}()`]={tips:`Call trtc.${s}`,color:"blue",class:"blue",textColor:"#fff"}});var Fk=Object.keys(vm);var oT=0,ja,Ns=class Ns{constructor(i){this.core=i;c(this,"_core");c(this,"log");c(this,"dumpLocalVideoMap",{});c(this,"dumpRemoteVideoMap",{});c(this,"dialog");this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${++oT}`}),this.log.info("created")}getName(){return Ns.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 f(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 f(this,null,function*(){try{if(ja)yield ja;else{let i=Date.now();ja=this.loadScript(`https://web.sdk.qcloud.com/trtc/webrtc/assets/debug/debug-dialog@${Re}.js`),yield ja,this.log.info(`download debug dialog script cost: ${Date.now()-i}ms`)}this.dialog=new TRTCDebugDialog(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):ql,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):jl,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:i,mediaType:e}){return ql({frame:i,onDump:()=>{if(!e)return;let t=e===2?"sub":"main",r=this.dumpLocalVideoMap[t];r&&(r.data.push(i.data),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}decodeVideo({frame:i,track:e}){return jl({frame:i,onDump:()=>{if(!e)return;let t=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];t&&(t.data.push(i.data),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)})}};c(Ns,"Name","Debug"),c(Ns,"autoStart",!0),y([Ze({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)}})],Ns.prototype,"loadScript",1);var Xa=Ns;var Dm=s=>{switch(s){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},Qa=class{constructor(i,e,t){c(this,"trackDoneOB");c(this,"startOB");c(this,"stopOB");c(this,"inputFrameCount",0);c(this,"decodedFrameCount",0);c(this,"type","auto");c(this,"config");c(this,"decoder");c(this,"_decodeSink");let{kvStatManager:r,trtc:o}=i;this.config=t.config,this.trackDoneOB=Ie(e,Q.INIT),this.stopOB=st(this.trackDoneOB),this.startOB=st(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let n=st(),a=d=>{let l=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),_e(l,xe(this.stopOB),Ne(()=>{},m=>{e.log.error(m),r.addFailedEvent({key:Dm(this.type),error:m}),d>4?this.startOB.error(m):this.startOB.next(d+1)})),_e(l,Li(1),Uo(vr))};_e(this.startOB,Nr(0),Zi(a),xe(this.stopOB),Ne(()=>{e.player.setOutput(),n.next("STARTED")},d=>{n.next("FAILED")},()=>{r.addSuccessEvent({key:Dm(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 Mi()(e=>f(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"},Wo=class Wo{constructor(i){this.core=i;c(this,"log");c(this,"contextMap",new Map);c(this,"decodeProcessorMap",new WeakMap);this.log=i.log.createChild({id:`${this.getAlias()}`})}getAlias(){return Wo.Name}getGroup(i){return i.track.userId+i.track.streamType}getName(){return Wo.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 Qa(this.core,t,i);return _e(r.trackDoneOB,Li(1),Ne(()=>{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 Qa(this.core,i.track,i))}}};c(Wo,"Name","TRTCAudioDecoder");var Jo=Wo;var Om=0,qo=new Set,Le=null;fc(bm);as.checkStorage();Cd();var aT={RtcError:w,ErrorCode:V,ErrorCodeDictionary:Pt},H=class H extends km.EventEmitter{constructor(e,t){super();c(this,"_room");c(this,"_eventListened",new Set);c(this,"_localVideoTrack",null);c(this,"_localAudioTrack",null);c(this,"_localScreenTrack",null);c(this,"_localScreenAudioTrack",null);c(this,"_localVideoConfig",null);c(this,"_localScreenConfig",null);c(this,"_localAudioConfig",null);c(this,"_remoteVideoConfigMap",new Map);c(this,"_remoteAudioConfigMap",new Map);c(this,"_remoteAudioVolumeMap",new Map);c(this,"_remoteAudioMuteMap",new Map);c(this,"_mediaTrackMap",new WeakMap);c(this,"_log",C.createLogger({id:`t${++Om}`}));c(this,"_plugins",new Map);c(this,"_networkQuality",null);c(this,"_speakerId");c(this,"_getPCMAbortCtrl");this._room=new e(v({logger:this._log,frameWorkType:H.frameWorkType},t)),this._room.videoDecodeFallbackType=t.videoDecodeFallback,this._log.debug(`TRTC.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(Ga,t.assetsPath),this._use(Ja,t.assetsPath),this._use(Jo,t.assetsPath||nn),this._use(Xa),t.enableSEI&&Ao&&this._use(qa),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 w({code:V.OPERATION_FAILED,extraCode:5504,message:r.message,originError:r}))}),this._listenEvents(),this._initActiveSpeaker(),Cm(this,"trtc")}static create(e){}static _create(e,t){um();let r=new H(e,t||{});return qo.add(r),r}get room(){return this._room}_listenEvents(){Be(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().then(()=>{this.emit(k.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().then(()=>{this.emit(k.ERROR,w.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(k.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=M(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=>{Be(r,r).add("player-state-changed",o=>{let n=M(v({},o),{userId:e.userId});r.kind===h.VIDEO&&(n.streamType=rr(r.streamType)),this.emit(r.kind===h.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,resume:()=>r.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{Se(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._remoteVideoConfigMap.delete(`${r}_main`),t.hasAuxiliary||this._remoteVideoConfigMap.delete(`${r}_sub`),n!==d&&(d?this._onVideoAvailable({userId:r,streamType:"main"}):this._onVideoUnavailable({userId:r,streamType:"main"}),this.emit(d?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,M(v({},e),{streamType:rr(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(k.ERROR,new w({code:V.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var o,n,a,d,l,m,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,qs),upLoss:((d=this._networkQuality)==null?void 0:d.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:(((m=e.msg_up_stream_info.msg_audio_status)==null?void 0:m.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((u=e.msg_up_stream_info.msg_audio_status)==null?void 0:u.uint32_audio_level)||0)/ft},video:e.msg_up_stream_info.msg_video_status.filter(p=>t[p.uint32_video_stream_type]).map(p=>({bitrate:(p.uint32_video_codec_bitrate||0)/1e3,width:p.uint32_video_width,height:p.uint32_video_height,frameRate:p.uint32_video_enc_fps,videoType:t[p.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(p=>({userId:p.msg_user_info.str_identifier,audio:{bitrate:(p.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(p.msg_audio_status.uint32_audio_level||0)/ft},video:p.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]}))}))};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,M(v({},e),{streamType:rr(e.streamType)}))}),Be(this,be).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=>f(this,null,function*(){if(this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Le&&Le.deviceId===Js){let t=(yield Yi()).find(r=>r.deviceId===Js);t&&Le.groupId!==t.groupId&&(Le=t,this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>f(this,null,function*(){this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield Yi())[0];if(!t||!Le||Le.groupId===t.groupId)return;let r=Le.deviceId===e.deviceId,o=Le.deviceId===Js&&Le.deviceId===t.deviceId;(r||o)&&(Le=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||nn)}_use(e,t){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let o=new e(Am.call(this,{TRTC:H,room:this._room,errorModule:aT,assetsPath:t}));this._plugins.set(e.Name,o),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return f(this,null,function*(){var d,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=(d=this._room).setTurnServer)==null||l.call(d,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=r,this._room.autoReceiveAudio=o,this._room.autoReceiveVideo=n,he(e.preferHW)&&(this._room.preferHW=e.preferHW);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};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,t,H.frameWorkType),this._checkTrackToPublish(),Vl.start()})}exitRoom(){return f(this,null,function*(){return yield this._exitRoom()})}switchRole(e,t){return f(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(){Se(this),this.removeAllListeners(),this._room.destroy(),qo.delete(this),qo.size===0&&Vl.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 f(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 Tt(this._room.audioManager),a={},d={muted:!0};o&&(g(o.microphoneId)?g(o.audioTrack)||(a.customSource=o.audioTrack):a.deviceId=o.microphoneId,o&&Y(o.captureVolume)&&n.setCaptureVolume(o.captureVolume),g(o.profile)||(K(o.profile)?dn[o.profile]&&n.setProfile(dn[o.profile]):n.setProfile(o.profile)),Y(o.earMonitorVolume)&&(d.muted=!(o.earMonitorVolume>0),d.volume=o.earMonitorVolume),g(o.echoCancellation)||(n.profile.echoCancellation=o.echoCancellation),g(o.noiseSuppression)||(n.profile.noiseSuppression=o.noiseSuppression),g(o.autoGainControl)||(n.profile.autoGainControl=o.autoGainControl)),n.on("5",l=>{this.emit(k.ERROR,new w({code:V.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 m;l.error&&(m=w.convertFrom(l.error)),this.emit(k.PUBLISH_STATE_CHANGED,M(v({},l),{error:m}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),g(r)||n.setMute(r),Be(n,n).add("player-state-changed",l=>{this.emit(k.AUDIO_PLAY_STATE_CHANGED,M(v({},l),{userId:""}))}),this.listeners(k.AUDIO_FRAME).length>0&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(l=>{this.emit(H.EVENT.AUDIO_FRAME,{data:l})})),this._getPCMAbortCtrl&&n.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(l=>{this.emit(H.EVENT.AUDIO_FRAME,{data:l})}))}),t&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=M(v({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:d,track:n})})}updateLocalAudio(e){return f(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):g(o.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(o.audioTrack)),g(o.captureVolume)||this._localAudioTrack.setCaptureVolume(o.captureVolume),g(o.earMonitorVolume)||(n.muted=!(o.earMonitorVolume>0),n.volume=o.earMonitorVolume),yield this._localAudioTrack.update3A(o)),this._room.isJoined&&!g(t)&&(t&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!t&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),g(r)||this._localAudioTrack.setMute(r),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),Gt(this._localAudioConfig,e)})}stopLocalAudio(){return f(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),Se(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("stopLocalAudio"),delete this._getPCMAbortCtrl))})}startLocalVideo(){return f(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 Fe(this._room.videoManager),d={},l={};he(n==null?void 0:n.preferFullFrame)&&(a.preferFullFrame=n.preferFullFrame),n&&(n.cameraId?d.deviceId=n.cameraId:g(n.useFrontCamera)?g(n.videoTrack)||(d.customSource=n.videoTrack):d.facingMode=n.useFrontCamera?h.FACING_MODE_USER:h.FACING_MODE_ENVIRONMENT,n.qosPreference&&(d.contentHint=Ho(n.qosPreference)),g(n.profile)||(K(n.profile)?ht[n.profile]&&a.setProfile(ht[n.profile]):a.setProfile(n.profile)),g(n.fillMode)||(l.objectFit=n.fillMode),g(n.mirror)||(l.mirror=n.mirror),g(n.small)||(Eo()?K(n.small)?a.small=ht[n.small]:n.small===!0?a.small=ht["120p"]:a.small=n.small:this._log.warn("small stream is not supported"))),a.once("first-video-frame",m=>{this.emit(k.FIRST_VIDEO_FRAME,M(v({},m),{streamType:rr(m.streamType)}))}),a.on("5",m=>{this.emit(k.ERROR,new w({code:V.DEVICE_ERROR,extraCode:5308,messageParams:{error:m}}))}),a.on("2",m=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"active",device:m})}),a.on("4",m=>{let u;m.error&&(u=w.convertFrom(m.error)),this.emit(k.PUBLISH_STATE_CHANGED,M(v({},m),{error:u}))}),this._listenOutputTrackChanged(a),yield a.capture(d),g(o)||(yield a.setMute(o)),Be(a,a).add("player-state-changed",m=>{this.emit(k.VIDEO_PLAY_STATE_CHANGED,M(v({},m),{userId:"",streamType:"main"}))}),r&&this._room.isJoined&&this._room.publish(a).catch(()=>{}),this._localVideoTrack=a,this._localVideoConfig=M(v({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:l,track:a})})}updateLocalVideo(e){return f(this,null,function*(){if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:t,publish:r,mute:o,option:n}=e,a={};if(n)if(g(n.profile)||(K(n.profile)?ht[n.profile]&&this._localVideoTrack.setProfile(ht[n.profile]):this._localVideoTrack.setProfile(n.profile),(!n.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(n.cameraId))&&g(n.useFrontCamera)&&this._localVideoTrack.applyProfile()),n.cameraId?yield this._localVideoTrack.switchDevice(n.cameraId):g(n.useFrontCamera)?g(n.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(n.videoTrack)):yield this._localVideoTrack.switchDevice(n.useFrontCamera?h.FACING_MODE_USER:h.FACING_MODE_ENVIRONMENT),g(n.fillMode)||(a.objectFit=n.fillMode),g(n.mirror)||(a.mirror=n.mirror),n.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(Ho(n.qosPreference)),n.small){let d=!this._localVideoTrack.small;Eo()?(n.small===!0?this._localVideoTrack.small=ht["120p"]:K(n.small)?this._localVideoTrack.small=ht[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&&!g(r)&&(r&&!this._localVideoConfig.publish&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._localVideoConfig.publish&&!r&&this._room.unpublish(this._localVideoTrack).catch(()=>{})),g(o)||(yield this._localVideoTrack.setMute(o)),yield this._updateVideoPlayOption({view:t,playOption:a,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),Gt(this._localVideoConfig,e)})}stopLocalVideo(){return f(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),Se(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return f(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 rt(this._room.videoManager);n.on("4",u=>{let p;u.error&&(p=w.convertFrom(u.error)),this.emit(k.PUBLISH_STATE_CHANGED,M(v({},u),{error:p}))}),n.once("first-video-frame",u=>{this.emit(k.FIRST_VIDEO_FRAME,M(v({},u),{streamType:rr(u.streamType)}))}),this._listenOutputTrackChanged(n),e.streamType==="main"&&(n.mediaType=4);let a=null,d={},l={};o&&(g(o.profile)||(K(o.profile)?ln[o.profile]&&n.setProfile(ln[o.profile]):n.setProfile(o.profile)),o.systemAudio&&(d.systemAudio=!0,d.echoCancellation=o.echoCancellation,d.noiseSuppression=o.noiseSuppression,d.autoGainControl=o.autoGainControl),g(o.fillMode)||(l.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=Ho(o.qosPreference)));let m=yield n.capture(d);if(n.mediaTrack.addEventListener(h.ENDED,()=>{this._stopScreenShare(),this.emit(k.SCREEN_SHARE_STOPPED)}),m.getAudioTracks()[0]&&(a=new ri(this._room.audioManager),yield a.setInputMediaStreamTrack(m.getAudioTracks()[0]),this._speakerId&&a.setAudioOutput(this._speakerId)),Be(n,n).add("player-state-changed",u=>{this.emit(k.VIDEO_PLAY_STATE_CHANGED,M(v({},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=M(v({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:l,track:n})})}updateScreenShare(e){return f(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:t,publish:r,option:o}=e,n={};if(o&&(g(o.fillMode)||(n.objectFit=o.fillMode),o.qosPreference)){let a=Ho(o.qosPreference);this._localScreenTrack.setContentHint(a)}this._room.isJoined&&!g(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}),Gt(this._localScreenConfig,e)})}stopScreenShare(){return f(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return f(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 l={},m=o==="main"?d.remoteVideoTrack:d.remoteAuxiliaryTrack;this._listenOutputTrackChanged(m),n&&(g(n.fillMode)||(l.objectFit=n.fillMode),g(n.mirror)||(l.mirror=n.mirror),l.canvasRender=n.canvasRender,o==="main"&&!g(n.small)&&(!d.remoteVideoTrack.isSubscribing&&!d.remoteVideoTrack.isSubscribed&&d.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,m.user))),yield this._room.subscribe(m),yield this._enableVideoDecodeFallback(m,o),yield this._updateVideoPlayOption({view:t,playOption:l,track:m}),this._emitTrackEvent(m),this._remoteVideoConfigMap.set(a,{config:e}),n&&!g(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:m,view:t,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return f(this,null,function*(){var D,G;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 l={};n&&(g(n.fillMode)||(l.objectFit=n.fillMode),g(n.mirror)||(l.mirror=n.mirror));let m=null,u=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(u!=null&&u.muteState.hasVideo)&&(m=u.remoteVideoTrack),o==="sub"&&(u!=null&&u.muteState.hasAuxiliary)&&(m=u.remoteAuxiliaryTrack),!m)return;let{config:p}=d;o==="main"&&n&&!g(n.small)&&this._room.changeType(n.small,m.user),yield this._updateVideoPlayOption({view:t,playOption:l,track:m,prevConfig:p}),Gt(p,e);let _=g(n==null?void 0:n.receiveWhenViewVisible)?(D=p.option)==null?void 0:D.receiveWhenViewVisible:n.receiveWhenViewVisible,I=g(t)?p.view:t,R=g(n==null?void 0:n.viewRoot)?(G=p.option)==null?void 0:G.viewRoot:n.viewRoot;this._observeView({remoteTrack:m,view:I,receiveWhenViewVisible:_,viewRoot:R})})}stopRemoteVideo(e){return f(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return f(this,null,function*(){let r=[],o=this._room.remotePublishedUserMap.get(e.userId);if(o){let{muteState:a,remoteVideoTrack:d,remoteAuxiliaryTrack:l}=o;e.streamType==="main"&&(d.stop(),a.hasVideo&&r.push(d)),e.streamType==="sub"&&(l.stop(),a.hasAuxiliary&&r.push(l))}for(let a of r)t&&(yield this._room.unsubscribe(a),this._mediaTrackMap.delete(a.outMediaTrack));let n=this._remoteVideoConfigMap.get(`${e.userId}_${e.streamType}`);n&&n.observer&&n.observer.disconnect(),this._remoteVideoConfigMap.delete(`${e.userId}_${e.streamType}`)})}muteRemoteAudio(e,t){return f(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 f(this,null,function*(){return e.start(t)})}updatePlugin(e,t){return f(this,null,function*(){return e.update(t)})}stopPlugin(e,t){return f(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===H.EVENT.AUDIO_FRAME&&!this._getPCMAbortCtrl&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(o=>{this.emit(H.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(H.EVENT.AUDIO_FRAME,{data:o})}))})),this)}emit(e,...t){try{Em.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===H.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(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 f(this,null,function*(){(yield Yi()).forEach(r=>{r.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}),Le=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 f(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=Y(a)?a:100;o.volume=d,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(n),_e(Ie(n,"decode-failed"),xe(Ie(n,Q.INIT)),Ne(()=>{this.startPlugin(Jo.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:o,track:n})}catch(a){throw this._remoteAudioConfigMap.delete(t),a}this._emitTrackEvent(n)})}_stopRemoteAudio(e,t=!0){return f(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}`)})}_enableVideoDecodeFallback(e,t){let r=this._room.videoDecodeFallbackType;!r||!this._plugins.has("TRTCVideoDecoder")||(this._log.debug("remote video will fall back when decode failed"),_e(Ie(e,"decode-failed"),xe(Ie(e,Q.INIT)),yl(()=>{this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:r})}),xo(Ie(e,"decode-downgrade-state-changed")),Ne(o=>{this.emit(k.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,M(v({},o),{streamType:t,userId:e.userId}))},o=>{this._log.error("fallback",o)},()=>this._log.info("fallback complete"))))}_updateVideoPlayOption(n){return f(this,arguments,function*({view:e,playOption:t,track:r,prevConfig:o}){if(r.setMirror(t.mirror),g(e)&&o&&o.view&&!qr(t)){let a=Xr(o.view);a.length>0&&(yield r.play(a,t))}if(!g(e)){let a=Xr(e);a.length>0?yield r.play(a,t):r.stop()}})}_updateAudioPlayOption(o){return f(this,arguments,function*({playOption:e={},track:t,prevConfig:r}){if(!t.isPlayCalled)try{yield t.play(null,e)}catch(n){}g(e.muted)||t.setPlayerMute(e.muted),g(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:rr(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(g(t))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${rr(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(t===null||Te(t)&&t.length===0||!r){a==null||a.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let l=n.visibleViewMap||new Map,m=-1;(!a||a.root!==o)&&(a==null||a.disconnect(),l.clear(),a=new IntersectionObserver(p=>{p.forEach(_=>{l.set(_.target,_.isIntersecting)}),clearTimeout(m),m=window.setTimeout(()=>{[...l.values()].find(I=>I)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:o}));let u=new Set(Xr(t));l.forEach((p,_)=>{u.has(_)||(a.unobserve(_),l.delete(_))}),u.forEach(p=>{l.set(p,!0),a.observe(p)}),a.takeRecords().forEach(p=>{l.set(p.target,p.isIntersecting)}),n.visibleViewMap=l,n.observer=a}_exitRoom(){return f(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(),Rm(this),this._room.remotePublishedUserMap.forEach(e=>{Se(e.remoteAudioTrack),Se(e.remoteVideoTrack),Se(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return f(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),Se(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!Le||fs(Le))&&(this._initActiveSpeaker(),E.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return f(this,null,function*(){if(Le&&!fs(Le))this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:Le});else{let e=yield Yi();e[0]&&!fs(e[0])?(Le=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:M(v({seiPayloadType:243},t),{small:!!((o=this._localVideoTrack)!=null&&o.small)})}),N.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var t,r;(r=(t=this._room).sendCustomMessage)==null||r.call(t,e),N.addCount({key:500001,useUV:!0})}static setLogLevel(e,t){C.setLogLevel(e),g(t)||(t?C.enableUploadLog():C.disableUploadLog())}static isSupported(){return Xn()}static getCameraList(e=!0){return ut(e)}static getMicrophoneList(e=!0){return tt(e)}static getSpeakerList(e=!0){return Yi(e)}static setCurrentSpeaker(e){return f(this,null,function*(){if(pe&&(e===St.SPEAKER||e===St.HEADSET)){let r=yield H.getMicrophoneList(),o="";if(r.forEach(n=>{n.label===e&&(o=n.deviceId)}),!o)return;qo.forEach(n=>f(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:o}}))}));return}(yield Yi()).forEach(r=>{r.deviceId===e&&(qo.forEach(o=>{o._setCurrentSpeaker(e),o.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:r})}),Le=r)})})}static _addKVStat({type:e,key:t,value:r,base:o,useUV:n,version:a}){switch(a&&(gr.version=a),e){case"count":gr.addCount({key:t,useUV:n});break;case"enum":gr.addEnum({key:t,value:r,useUV:n});break;case"number":gr.addNumber({key:t,value:r,split:o});break}}};c(H,"_loggerManager",C),c(H,"EVENT",k),c(H,"ERROR_CODE",V),c(H,"TYPE",St),c(H,"frameWorkType",30),y([ue({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"}})})],H.prototype,"use",1),y([Ge(Me.TRTC.enterRoom),tr("room",([e],[t])=>(e.roomId||e.strRoomId)===(t.roomId||t.strRoomId)&&e.userId===t.userId&&e.sdkAppId===t.sdkAppId),J(e=>function(t){return this._log.setUserId(t.userId),this._log.setSdkAppId(t.sdkAppId),e.call(this,t)}),ue()],H.prototype,"enterRoom",1),y([ue()],H.prototype,"exitRoom",1),y([Ge(Me.TRTC.switchRole),Lr("room",{merge:(e,t)=>t}),ue()],H.prototype,"switchRole",1),y([ue()],H.prototype,"destroy",1),y([Ge(Me.TRTC.startLocalAudio),tr("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)}),ue()],H.prototype,"startLocalAudio",1),y([Ge(Me.TRTC.updateLocalAudio),Lr("audio",{debounce:{delay:200,getKey:()=>`${Om}-localAudio`,isNeedToDebounce:e=>{var t;return!g((t=e.option)==null?void 0:t.captureVolume)}}}),ue()],H.prototype,"updateLocalAudio",1),y([ir("audio"),ue()],H.prototype,"stopLocalAudio",1),y([Ge(Me.TRTC.startLocalVideo),tr("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)}),ue()],H.prototype,"startLocalVideo",1),y([Ge(Me.TRTC.updateLocalVideo),Lr("video"),ue()],H.prototype,"updateLocalVideo",1),y([ir("video"),ue()],H.prototype,"stopLocalVideo",1),y([Ge(Me.TRTC.startScreenShare),tr("screen",()=>!0),ue()],H.prototype,"startScreenShare",1),y([Ge(Me.TRTC.updateScreenShare),Lr("screen"),ue()],H.prototype,"updateScreenShare",1),y([ue()],H.prototype,"stopScreenShare",1),y([Ge(Me.TRTC.startRemoteVideo),tr(e=>`v${e.userId}${e.streamType}`,()=>!0),ue({getRemoteId:e=>`${e.userId}_${e.streamType}`})],H.prototype,"startRemoteVideo",1),y([Ge(Me.TRTC.updateRemoteVideo),Lr(e=>`v${e.userId}${e.streamType}`),ue({getRemoteId:e=>`${e.userId}_${e.streamType}`})],H.prototype,"updateRemoteVideo",1),y([Ge(Me.TRTC.stopRemoteVideo),J(e=>function(t){return f(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)})}),ue({getRemoteId:e=>`${e.userId}_${e.streamType}`})],H.prototype,"stopRemoteVideo",1),y([ir(e=>`v${e.userId}${e.streamType}`)],H.prototype,"_stopRemoteVideo",1),y([Ge(...Me.TRTC.muteRemoteAudio),ue({getRemoteId:e=>e})],H.prototype,"muteRemoteAudio",1),y([Pl(...Me.TRTC.setRemoteAudioVolume),ym(200,e=>e),ue({getRemoteId:e=>e})],H.prototype,"setRemoteAudioVolume",1),y([Ha("start"),je(e=>{var t;return(t=e.afterStart)==null?void 0:t.call(e)}),tr((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),ue({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>hd[e.getName()],ignoreLog:e=>e.getName()==="Debug"})],H.prototype,"startPlugin",1),y([Ha("update"),Lr((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),ue({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>md[e.getName()]})],H.prototype,"updatePlugin",1),y([Ha("stop"),ir((e,t)=>{if(e.disableRandomCall)return null;let r=e.getGroup(t),o=e.getAlias();return r==="*"?new RegExp(`${o}.*`):o+r}),ue({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>pd[e.getName()]})],H.prototype,"stopPlugin",1),y([Pl(...Me.TRTC.enableAudioVolumeEvaluation)],H.prototype,"enableAudioVolumeEvaluation",1),y([ue()],H.prototype,"getVideoSnapshot",1),y([ue()],H.prototype,"_setCurrentSpeaker",1),y([tr(e=>`a${e.userId}`,()=>!0)],H.prototype,"_startRemoteAudio",1),y([J(e=>function(t){return f(this,null,function*(){return t.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(r=>this._stopRemoteAudio(M(v({},t),{userId:r.userId})).catch(()=>{}))):e.call(this,t)})}),ir(e=>`a${e.userId}`)],H.prototype,"_stopRemoteAudio",1),y([ir("room")],H.prototype,"_exitRoom",1),y([ir("screen")],H.prototype,"_stopScreenShare",1),y([Ge(...Me.TRTC.sendSEIMessage),Nl({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],H.prototype,"sendSEIMessage",1),y([Ge(Me.TRTC.sendCustomMessage),Nl({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],H.prototype,"sendCustomMessage",1),y([Ge(Me.TRTC.create)],H,"_create",1);var Xl=H,jo=Xl;var Ql=class{constructor(){c(this,"_set",new Set);E.on(T.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 cT(){return f(this,null,function*(){let s,i;try{let u=yield tt();s=u&&u.length}catch(u){}try{let u=yield ut();i=u&&u.length}catch(u){}let e={microphone:s,camera:i},{isH264EncodeSupported:t,isVp8EncodeSupported:r,isH264DecodeSupported:o,isVp8DecodeSupported:n}=this.checkSystemResult.detail,a=zt.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},l={browser:a.browser,os:a.os,trtc:d,devices:e},m={isWebCodecSupported:a.isWebCodecSupported,isMediaSessionSupported:a.isMediaSessionSupported,isWebTransportSupported:a.isWebTransportSupported};ee.uploadEvent({log:`trtcstats-${JSON.stringify(l)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(l)}`),ee.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(m)}`,userId:this.userId})})}function Mm(){return J(s=>{let i=new Ql;return function(e,t,r){return f(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 b({code:S.INVALID_OPERATION,message:U({key:x.INVALID_JOIN})});if(this.checkDestroy(),i.isJoined({userId:this.userId,roomId:o,sdkAppId:this.sdkAppId,room:this}))throw new b({code:S.INVALID_OPERATION,message:U({key:x.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(T.JOIN_START,{room:this,roomId:o,params:e});let n=ot.getEnv();n||(n=di.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(un.OLD_CLOUD_LADDER)?n=di.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(un.WEBRTC)&&(n=di.WEBRTC))),ee.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:o}),zt.checkSystemRequirementsInternal().then(a=>{this.checkSystemResult=a,cT.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!ot.getEnv()&&(yield this.schedule(e,r));let a=yield s.call(this,e,t,r);return this.roomId=o,this._joinedTimestamp=ot.performanceNow(),E.emit(T.JOIN_SUCCESS,{room:this}),r===30&&!e.component&&ee.uploadEvent({log:`stat-conv-${Number(Ot)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw i.delete({room:this,roomId:o}),E.emit(T.JOIN_FAILED,{room:this,error:a}),a}})}})}var Lm=()=>J(s=>function(...i){return f(this,null,function*(){E.emit(T.LEAVE_START,{room:this}),yield s.call(this),E.emit(T.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function Pm(){return J(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var xm=Pe(Je());var Ee={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6"};var Ut={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},wm=[Ut.UPDATE_REMOTE_MUTE_STAT,Ut.UPLINK_NETWORK_STATS,Ut.USER_LIST_RES,Ut.MUTE_RESULT,Ut.SERVER_FIRST_PACKAGE_RECEIVED,Ut.RECEIVE_CUSTOM_MSG],B={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"},q={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 za=new Set;function Um(s){let i=[...za.values()].find(e=>e.room.userId===s&&!e.room.isJoined);return i||null}var vs=class extends xm.default{constructor(e){var r,o;super();c(this,"room");c(this,"url");c(this,"backupUrl");c(this,"race");c(this,"destroyed",!1);c(this,"_socketInUse");c(this,"_socket");c(this,"_backupSocket");c(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});c(this,"_currentState","DISCONNECTED");c(this,"_isReconnecting",!1);c(this,"_seq",0);c(this,"_log");c(this,"_lastMessageTime",-1);c(this,"_connnectStartTime",-1);c(this,"_stopConnectRetry");c(this,"bytesSent",0);c(this,"bytesReceived",0);c(this,"keepAlive",!1);c(this,"signalDomainWhenUnifiedProxy");c(this,"stopKeepAliveTimeout");c(this,"rtt",0);this.room=e.room,this.race=g(e.race)?!0:e.race,this.signalDomainWhenUnifiedProxy=e.signalDomainWhenUnifiedProxy,(((o=(r=this.room.scheduleResult)==null?void 0:r.config)==null?void 0:o.keepAliveClient)||0)-za.size>0&&this.room.enableSPC&&(this.keepAlive=!0,za.add(this)),this.url=e.url,this.backupUrl=e.backupUrl,this._seq=0,this._log=C.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 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 sdkAppId(){return this.room.sdkAppId}get userId(){return this.room.userId}get userSig(){return this.room.userSig}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12*1e3}connect(){return f(this,arguments,function*(e=10*1e3){if(this.isConnected)return Promise.resolve();this._log.info(`connect to [${this.url}, ${this.backupUrl}]${e?` timeout: ${e}`:""} keepAlive: ${Number(this.keepAlive)}`),this.emitConnectionStateChanged("CONNECTING"),this._connnectStartTime=L();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 Jr(t),this.unbindAndCloseSocket(this._socketInUse===this._socket?h.BACKUP:h.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?h.MAIN:h.BACKUP),d(new b({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===h.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(Ee.SETUP_FAILED,new b({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(h.MAIN),this.unbindAndCloseSocket(h.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(Ee.SETUP_FAILED,new b({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(Ut),d=Object.keys(Ut)[n.indexOf(r)],l=B[d]||r;switch(wm.includes(r)||(this._log.debug(`received ${r} msg: ${e.data}`),l&&this._log.info(`Received event: [ ${l} ]`)),r){case Ut.CHANNEL_SETUP_RESULT:{if(t.code===0)this._signalInfo.clientIp=o.clientIp,this._signalInfo.signalIp=o.signalInnerIp,o.svrTime&&Cu(o.svrTime),this._log.info(`ChannelSetup Success ${L()-this._connnectStartTime}`),N.addSuccessEvent({key:521701,cost:L()-this._connnectStartTime}),this._connnectStartTime=-1,this.emit(Ee.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let m=new b({code:S.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:U({key:x.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:t.code,errorMsg:t.message}})});this._log.error(`${t.code}, ${t.message}`),this.close(),N.addFailedEvent({key:521701,error:m}),this.emit(Ee.SETUP_FAILED,m)}break}case Ut.JOIN_ROOM_RESULT:{t.code===0&&(this._signalInfo.relayIp=o.relayOuterIp,this._signalInfo.relayInnerIp=o.relayInnerIp,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 f(this,null,function*(){try{if(!this.room.joinParams)return;xt(!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?h.MAIN:h.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return f(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:q.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:o,relayOuterIp:r,relayPort:n},responseCommand:B.CHANNEL_RECONNECT_RESULT});a.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),N.addSuccessEvent({key:521702,cost:L()-this._connnectStartTime}),this._connnectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(N.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:d=!1}){return new Promise((l,m)=>{let u=setTimeout(()=>{this.off(o,_);let R=new b({code:S.API_CALL_TIMEOUT,message:U({key:x.API_CALL_TIMEOUT,data:{commandDesc:n,command:e}})});a&&this._log.warn(R),m(R)},r),p=Date.now(),_=R=>{R.data.seq===I&&(clearTimeout(u),this.off(o,_),d&&(R.data.receiveTime=Date.now()),l(R))};this.on(o,_);let I=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(Ee.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),za.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(h.MAIN),this.unbindAndCloseSocket(h.BACKUP),this.emitConnectionStateChanged("DISCONNECTED")}destroy(){this.close(),this.destroyed=!0}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(B.JOIN_ROOM_RESULT,t)},e*1e3);let t=r=>{r.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(B.JOIN_ROOM_RESULT,t))};this.on(B.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){e!==this._currentState&&(this._log.info(`${this._currentState} -> ${e}`),this.emit(Ee.CONNECTION_STATE_CHANGED,{prevState:this._currentState,state:e}),this._currentState=e,e==="CONNECTED"?this.emit(Ee.CONNECTED):e==="DISCONNECTED"&&this.emit(Ee.DISCONNECTED))}};y([Ze({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())}})],vs.prototype,"connect",1);var Vm=Pe(Je());var zl=0,Yl=!1,Ya=new Set,lT=s=>zl>2&&!Yl&&Ya.size===0&&s,Kl=!1,Qe=class{constructor(i){c(this,"userId");c(this,"tinyId");c(this,"_sdpSemantics");c(this,"_isUplink");c(this,"_room");c(this,"_log");c(this,"_signalChannel");c(this,"_isErrorObserved",!1);c(this,"_waitForPeerConnectionConnectedPromise");c(this,"_waitForPeerConnectionConnectedPromiseReject",null);c(this,"_peerConnection",null);c(this,"_emitter",new Vm.default);c(this,"_currentState","DISCONNECTED");c(this,"_isReconnecting",!1);c(this,"_reconnectionCount",0);c(this,"_reconnectionTimer",-1);c(this,"_isFirstConnection",!0);c(this,"_prevTime",-1);c(this,"_localAddress");c(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=C.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=L())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,N.addSuccessEvent({key:521705,cost:Math.min(L()-this._prevTime,30*1e3)})):this._isReconnecting&&N.addSuccessEvent({key:521706,cost:L()-this._prevTime}),this._prevTime=-1}catch(i){throw this._isFirstConnection?(this._isFirstConnection=!1,N.addFailedEvent({key:521705,error:i})):this._isReconnecting&&this._reconnectionCount>=3&&N.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(),Ya.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 b({code:S.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return Ct;let i=null;if(this._isUplink){if(!zi()||this._peerConnection.getSenders().length===0)return Ct;i=this._peerConnection.getSenders()[0].transport}else{if(!Tr()||this._peerConnection.getReceivers().length===0)return Ct;i=this._peerConnection.getReceivers()[0].transport}return i?i.state:Ct}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===de.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),i.target.connectionState===de.FAILED||i.target.connectionState===de.CLOSED){let r=`connection ${i.target.connectionState}. ICE Transport state: ${e}, DTLS Transport state: ${t}`,o=new b({message:r,code:S.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",o)}(i.target.connectionState===de.CONNECTED||i.target.connectionState===de.COMPLETED)&&(this.logSelectedCandidate(),ee.logSuccessEvent({userId:this._room.userId,eventType:ze.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(i){return i===this._currentState?!1:(i==="CONNECTED"?(zl=0,Yl=!1,Kl=!0,Ya.add(this)):Ya.delete(this),E.emit(T.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 f(this,null,function*(){if(!this._peerConnection)return;let i=yield this._peerConnection.getStats();for(let[,e]of i)if(Qi(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 b({code:S.API_CALL_ABORTED,message:U({key:x.CONNECTION_ABORTED,data:"leave room"})})))},o=()=>{E.off(T.LEAVE_SUCCESS,r,this),this._emitter.off("connection-state-changed",t,this)},n=setTimeout(()=>{o();let a=new b({code:S.API_CALL_TIMEOUT,message:"connection timeout"});zl+=1,lT(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),Yl=!0,this._emitter.emit("firewall-restriction")),e(a)},Ws);E.on(T.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(Ee.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=li()){this._log.warn(`SDK has tried reconnect for ${this._reconnectionCount} times, but all failed, please check your network`),this.stopReconnection();let i=new b({code:this._isUplink?S.UPLINK_RECONNECTION_FAILED:S.DOWNLINK_RECONNECTION_FAILED,message:U({key:this._isUplink?x.UPLINK_RECONNECTION_FAILED:x.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(Ee.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)}};y([it(521712,!1)],Qe.prototype,"setOffer",1),y([it(521713,!1)],Qe.prototype,"setAnswer",1);var iu=Pe(tu());var ge=function(s){return iu.default.parse(s)},It=function(s){return iu.default.write(s)},qm=function(s){let i=ge(s);return i.media.forEach(e=>{e.type===h.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),It(i)};function jm(s){let i=ge(s);return i.media.forEach(e=>{var t,r;if(e.type===h.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 l=d.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(" ")}}),It(i)}function Ka(s){return Object.keys(s).filter(i=>s[i])}var Os=class Os extends Qe{constructor(e){super(M(v({},e),{isUplink:!1}));c(this,"_flag",0);c(this,"isRobot",!1);c(this,"role","anchor");c(this,"remoteAudioTrack");c(this,"remoteVideoTrack");c(this,"remoteAuxiliaryTrack");c(this,"ssrc",{audio:0,video:0,auxiliary:0});c(this,"_isSDPExchanging",!1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new Oi(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new si(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new Is(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 mi(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===h.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===Gs?h.MAIN:h.AUXILIARY;this._log.debug(`ontrack ${o} ${r.kind}`);let n=h.AUDIO;r.kind===h.VIDEO&&(n=o===h.MAIN?h.VIDEO:h.AUXILIARY);let a=this.remoteAudioTrack;n===h.VIDEO?a=this.remoteVideoTrack:n===h.AUXILIARY&&(a=this.remoteAuxiliaryTrack),a.setInputMediaStreamTrack(r)}addRRTRLine(e){let t=e.split(`\r
|
|
61
|
-
`),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
|
|
62
|
-
`)}addSPSDescription(e){let t=ge(e);return t.media.forEach(r=>{r.type===h.VIDEO&&r.fmtp.forEach(o=>{o.config+=";sps-pps-idr-in-keyframe=1"})}),It(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=ge(e);return r.media.forEach(o=>{o.ext&&(o.ext=o.ext.filter(n=>!t.includes(n.uri)))}),It(r)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return f(this,null,function*(){var r,o;try{if((((r=this._peerConnection)==null?void 0:r.connectionState)===de.NEW||((o=this._peerConnection)==null?void 0:o.connectionState)===de.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 b({code:S.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}unsubscribe(r){return f(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} [${Ka(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=q.UNSUBSCRIBE,n=B.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=q.SUBSCRIBE_CHANGE,n=B.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:o,data:r,responseCommand:n,timeout:1e4}).then(({data:a})=>{if(a.code!==0){let d=new b({code:a.code,message:U({key:x.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(d),d}})}connect(){return f(this,arguments,function*(e=this.subscribeState){try{yield this.exchangeSDP(e),yield this.waitForPeerConnectionConnected()}catch(t){throw this.closePeerConnection(!0),t}})}exchangeSDP(e){return f(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:q.SUBSCRIBE,commandDesc:"exchange sdp",data:o,responseCommand:B.SUBSCRIBE_RESULT,timeout:yc});if(!this._peerConnection){let a=new b({code:S.INVALID_OPERATION,message:U({key:x.CONNECTION_CLOSED})});throw this._log.warn(a),a}yield this.onSubscribeResult(n),this._isSDPExchanging=!1}catch(t){throw this._isSDPExchanging=!1,t}})}createOffer(){return f(this,null,function*(){let e={voiceActivityDetection:!1};_t()&&this._sdpSemantics===$i?(this._peerConnection.addTransceiver(h.AUDIO,{direction:z.RECVONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:z.RECVONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:z.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:r}=yield jn();r||(this._log.warn("remove h264 desc from sdp"),t.sdp=jm(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=qm(t.sdp),this._sdpSemantics===$i&&(t.sdp=this.removeSDESDescription(t.sdp))}yield this.setOffer(t)})}onSubscribeResult(e){return f(this,null,function*(){let{code:t,message:r=""}=e&&e.data||{},{type:o,sdp:n}=e&&e.data&&e.data.data||{};if(t===nr)throw new b({code:S.NOT_SUPPORTED_H264,message:U({key:x.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new b({code:t,message:U({key:x.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{ge(e).media.forEach(r=>{if(r.ssrcs)if(r.type===h.AUDIO){let o=r.ssrcs.find(n=>{var a;return(a=n.value)==null?void 0:a.includes(Gs)});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(Gs)}),n=r.ssrcs.find(a=>{var d;return(d=a.value)==null?void 0:d.includes(Sc)});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 f(this,null,function*(){if(!(we(Os.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=yt(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}};y([J(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new b({code:S.API_CALL_ABORTED,message:U({key:x.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],Os.prototype,"subscribe",1),y([it(521717,!1)],Os.prototype,"unsubscribe",1),y([je(Qe.prototype.afterConnect),da(Qe.prototype.beforeConnect)],Os.prototype,"connect",1);var ru=Os,su=ru;var Qm={voiceActivityDetection:!1},ks=class ks extends Qe{constructor(e){super(M(v({},e),{isUplink:!0}));c(this,"localMainAudioTrack",null);c(this,"localMainVideoTrack",null);c(this,"localAuxAudioTrack",null);c(this,"localAuxVideoTrack",null);c(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0});c(this,"_isPublishingAux",!1);c(this,"_publishingLocalAudioTrack");c(this,"_publishingLocalVideoTrack");c(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});c(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&&(Xt()?(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===h.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 f(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(),_t()?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 f(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,l=e==null?void 0:e.outMediaTrack;l&&a.addTrack(l),d&&a.addTrack(d);let m=this._peerConnection.getTransceivers();if(m.length===0)this._peerConnection.addTransceiver(l||h.AUDIO,{direction:z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?h.VIDEO:d||h.VIDEO,{direction:z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(r||h.VIDEO,{direction:z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?d||h.VIDEO:h.VIDEO,{direction:z.SENDONLY,streams:[a]}),yield this.connect();else{let u=[];if(l&&(m[0].sender.track||u.push(0),yield m[0].sender.replaceTrack(l),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:h.AUDIO})),d){let p=o?3:1;yield m[p].sender.replaceTrack(d),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:h.VIDEO,videoType:o?h.AUXILIARY:h.BIG}),u.push(p),r&&(yield m[2].sender.replaceTrack(r),yield this.setBandwidth({bandwidth:t.small.bitrate,type:h.VIDEO,videoType:h.SMALL}),u.push(2))}yield this.setTransceiverDirection(z.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 f(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 l=new MediaStream;l.addTrack(r),this._peerConnection.addTrack(r,l)}yield this.connect()})}enableSmall(e){return f(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 f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){if(!Xt()){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=M(v({},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=M(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}),d.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.setTransceiverDirection(z.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 f(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponse({command:q.PUBLISH_STATE_CHANGE,data:t,responseCommand:B.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:q.UNPUBLISH,commandDesc:"unpublish",responseCommand:B.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),Qt){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:q.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:B.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(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?h.AUXILIARY:h.MAIN} stream`),_t()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return f(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===h.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 f(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;Xt()&&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===h.VIDEO&&e instanceof Fe&&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===Hr||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=ge(e);for(let r=0;r<t.media.length;r++)if(Number(t.media[r].mid)===0&&t.media[r].type===h.VIDEO)return!0;return!1}removeSender(e){let t=null;Xt()&&(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 f(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?h.AUXILIARY:h.MAIN} stream`),_t()?yield this.removeTrackByTransceiver(e,t):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.outMediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===h.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 f(this,null,function*(){if(!ae)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,d=this._peerConnection.remoteDescription.sdp.split(`\r
|
|
63
|
-
`).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
|
|
64
|
-
`);o&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:d}))})}removeTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===h.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===h.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(r=>{r.track&&r.track.kind===h.VIDEO&&this.removeSender(r)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return f(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(_t()?r=e.kind===h.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?h.AUXILIARY:h.MAIN} stream`),e.kind===h.AUDIO?yield r.replaceTrack(e.outMediaTrack):e.kind===h.VIDEO&&(o?t[3]&&(yield t[3].replaceTrack(e.outMediaTrack)):yield r.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,t){return f(this,null,function*(){try{let r=yield this._peerConnection.createOffer(Qm);ae&&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===h.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:q.PUBLISH_CHANGE,data:n,responseCommand:B.UPDATE_OFFER_RESULT,timeout:Rc,commandDesc:"update offer"}),{code:d,message:l}=a.data;d!==0&&this.checkPublishResultCode(d,l),yield this.acceptAnswer(a.data.data),r.sdp&&this.updateSSRC(r.sdp)}catch(r){throw this._log.error(r),r}})}setBandwidth(n){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r,sdp:o}){if(!Io())return o?t===h.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e):void 0;let a,d=this._peerConnection.getSenders();if(_t()){let l=0;t===h.VIDEO&&(r===h.SMALL?l=2:r===h.AUXILIARY?l=3:l=1),a=d[l]}else a=d.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(m){if(this._log.info(`failed to set bandwidth by setting maxBitrate: ${m}`),o)return t===h.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e)}}return o})}updateVideoBandwidthRestriction(e,t,r){let o="AS";ae&&(o="TIAS",t=t*1e3);let n=0,a=-1;return r===h.SMALL?n=1:r===h.AUXILIARY&&(n=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,d=>(a+=1,a===n?`${d}b=${o}:${t}\r
|
|
65
|
-
`:d)),e}updateAudioBandwidthRestriction(e,t){let r="AS";return ae&&(r="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
|
|
66
|
-
c=IN $2\r
|
|
67
|
-
b=${r}:${t}\r
|
|
68
|
-
`),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 f(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return f(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 f(this,null,function*(){try{let e=yield this._peerConnection.createOffer(Qm);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:q.PUBLISH,responseCommand:B.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof rt||this.localAuxVideoTrack instanceof rt,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=ge(e);return o.media.forEach(n=>{(r==="all"||n.type===r)&&(n.direction=t)}),It(o)}acceptAnswer(e){return f(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),p=((o=this._publishingLocalAudioTrack)==null?void 0:o.profile.bitrate)||((n=this.localMainAudioTrack)==null?void 0:n.profile.bitrate);if(u){let _=this._isPublishingAux?h.AUXILIARY:h.BIG;d=yield this.setBandwidth({bandwidth:u,type:h.VIDEO,sdp:d,videoType:_})}p&&(d=yield this.setBandwidth({bandwidth:p,type:h.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:h.VIDEO,videoType:h.SMALL,sdp:d})}let m={type:e.type,sdp:d};yield this.setAnswer(m),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(q.UPDATE_MUTE_STAT,r)}getIsReconnecting(){return this._isReconnecting}reconnect(){return f(this,null,function*(){if(!(we(ks.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:q.UNPUBLISH,responseCommand:B.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=yt(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(T.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{ge(e).media.forEach((r,o)=>{if(r.type===h.AUDIO){let n=r.ssrcs&&r.ssrcs[0];n&&(this.ssrc.audio=Number(n.id))}else{if(this._sdpSemantics===Hr&&r.ssrcGroups){r.ssrcGroups.forEach((a,d)=>{let l=Number(a.ssrcs.split(" ")[0]);d===0?this.ssrc.video=l:d===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=h.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===h.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===h.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===h.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===h.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===nr?(this._log.error(Oe.NOT_SUPPORTED_H264ENCODE),new b({code:S.NOT_SUPPORTED_H264,message:U({key:x.NOT_SUPPORTED_H264ENCODE})})):new b({code:S.UNKNOWN,message:U({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:B.PUBLISH_RESULT,code:e,message:t}})})}};y([J(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new b({code:S.API_CALL_ABORTED,message:U({key:x.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],ks.prototype,"publish",1),y([it(521715,!1)],ks.prototype,"unpublish",1),y([je(Qe.prototype.afterConnect),da(Qe.prototype.beforeConnect)],ks.prototype,"connect",1);var ou=ks,Qo=ou;var zo=class{constructor(i,e){this.room=i;c(this,"_log");c(this,"_prevReportTime",0);c(this,"_prevReport",{});c(this,"_prevStats",null);c(this,"_prevEncoderImplementation","");c(this,"_prevAuxEncoderImpl","");c(this,"_prevQualityLimitationReason","");c(this,"_prevAuxQualityLimitationReason","");c(this,"_prevDecoderImplementationMap",new Map);c(this,"totalBytesSent",0);c(this,"totalBytesReceived",0);c(this,"_spcStats",null);this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(i){return f(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 m,u,p;let d,l;if(a.type==="outbound-rtp")if((a.mediaType||a.kind)===h.VIDEO){if(a.ssrc===r.video?(d=h.VIDEO,l=i.localMainVideoTrack):a.ssrc===r.small?d=h.SMALL:a.ssrc===r.auxiliary&&(l=i.localAuxVideoTrack,d=h.AUXILIARY),!d)return;if(e[d].bytesSent=a.bytesSent,e[d].packetsSent=a.packetsSent,e[d].framesEncoded=a.framesEncoded,g(a.keyFramesEncoded)||(e[d].keyFramesEncoded=a.keyFramesEncoded),g(a.nackCount)||(e[d].nackCount=a.nackCount),g(a.pliCount)||(e[d].pliCount=a.pliCount),g(a.retransmittedPacketsSent)||(e[d].retransmittedPacketsSent=a.retransmittedPacketsSent),g(a.totalEncodeTime)||(e[d].totalEncodeTime=a.totalEncodeTime),g(a.totalPacketSendDelay)||(e[d].totalPacketSendDelay=a.totalPacketSendDelay),!g(a.encoderImplementation)&&(d===h.VIDEO&&this._prevEncoderImplementation!==a.encoderImplementation||d===h.AUXILIARY&&this._prevAuxEncoderImpl!==a.encoderImplementation)){let I=2,R=this._prevEncoderImplementation;d===h.AUXILIARY&&(I=7,R=this._prevAuxEncoderImpl),E.emit("262",{userId:i.userId,streamType:I,prevImplementation:R,implementation:a.encoderImplementation,codec:i.videoCodec,isHWCodec:a.powerEfficientEncoder}),this[d===h.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=a.encoderImplementation,this._log.info(`${d===h.AUXILIARY?"aux ":""}encoderImplementation change to ${a.encoderImplementation}(${i.videoCodec}) HWEncoder: ${a.powerEfficientEncoder}`)}a.ssrc===r.video?!g(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:(m=i.localMainVideoTrack)==null?void 0:m.isQosClearFirst}),this._prevQualityLimitationReason=a.qualityLimitationReason):a.ssrc===r.auxiliary&&!g(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:(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"?Qi(a)&&(this.totalBytesSent=a.bytesSent,Y(a.currentRoundTripTime)&&(e.rtt=Math.floor(a.currentRoundTripTime*1e3))):a.type==="media-source"&&(a.kind===h.AUDIO?(e.audio.audioLevel=a.audioLevel||0,e.audio.totalAudioEnergy=a.totalAudioEnergy||0,a.echoReturnLoss,a.totalSamplesDuration&&(e.audio.totalSamplesDuration=a.totalSamplesDuration)):a.kind===h.VIDEO&&(a.trackIdentifier===i.getVideoTrackId(h.VIDEO)?e.video.fpsCapture=a.framesPerSecond:a.trackIdentifier===i.getVideoTrackId(h.AUXILIARY)?e.auxiliary.fpsCapture=a.framesPerSecond:e.small.fpsCapture=a.framesPerSecond));if(!g(a.audioLevel)&&((p=i.localMainAudioTrack)!=null&&p.mediaTrack)&&a.trackIdentifier===i.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=a.audioLevel||0),!g(a.frameWidth)){let _=h.SMALL;a.trackIdentifier===i.getVideoTrackId(h.VIDEO)||a.ssrc===r.video?_=h.VIDEO:(a.trackIdentifier===i.getVideoTrackId(h.AUXILIARY)||a.ssrc===r.auxiliary)&&(_=h.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===h.AUDIO?(i.localMainAudioTrack&&(i.localMainAudioTrack.stat=e[a]),i.localAuxAudioTrack&&(i.localAuxAudioTrack.stat=e[a])):a===h.VIDEO?i.localMainVideoTrack&&(i.localMainVideoTrack.stat=e[a]):a===h.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 f(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:l}=i;(this._spcStats||(yield t.getStats())).forEach(u=>{if(u.type==="inbound-rtp"){let p=(u.mediaType||u.kind)===h.AUDIO;if(p){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:_}=i;_.stat.packetsReceived=u.packetsReceived,_.stat.bytesReceived=u.bytesReceived,_.stat.packetsLost=u.packetsLost,e.audio.p2pDelay=_.stat.end2EndDelay,e.hasAudio=!0}else{if(ae&&u.bytesReceived===0)return;let _;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,_=i.remoteVideoTrack,d.hasSmall&&l.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}`),E.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,_=i.remoteAuxiliaryTrack,e.hasAuxiliary=!0),_&&(_.stat.packetsReceived=u.packetsReceived,_.stat.bytesReceived=u.bytesReceived,_.stat.packetsLost=u.packetsLost,_.stat.framesReceived=u.framesReceived,_.stat.framesDecoded=u.framesDecoded,u.jitterBufferDelay&&(_.stat.jitterBufferDelay=Math.floor(u.jitterBufferDelay/u.jitterBufferEmittedCount*1e3)))}u.jitterBufferDelay&&(p?(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"&&Qi(u)&&(this.totalBytesReceived=u.bytesReceived,Y(u.currentRoundTripTime)&&(e.rtt=Math.floor(u.currentRoundTripTime*1e3)));g(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)),!g(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),g((r=i.remoteVideoTrack.player.stat)==null?void 0:r.fps)||(e.video.fpsRender=i.remoteVideoTrack.player.stat.fps),g((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 f(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=L(),a=yield o.getStats(),d=L();d-n>2e3&&this._log.warn(`getStats cost ${d-n}ms`);let l=[],m=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source"]);a.forEach(u=>m.has(u.type)&&l.push(u)),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(ei(i))return e;let t=e-i;return t<0?0:t}prepareReport({stats:i,report:e,freezeMap:t}){var u;if(!ei(i.senderStats)){let p={uint32_audio_level:i.senderStats.audio.audioLevel*ft,uint32_audio_energy:(i.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent};i.senderStats.audio.micAudioLevel&&(p.uint32_mic_audio_level=i.senderStats.audio.micAudioLevel*ft),i.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=i.senderStats.audio.totalSamplesDuration);let _=[];if(i.senderStats.video.bytesSent){let R={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};_.push(R)}if(i.senderStats.small.bytesSent){let R={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};_.push(R)}if(i.senderStats.auxiliary.bytesSent){let R={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};_.push(R)}let I={uint32_bitrate:0,uint32_lost:0,uint32_rtt:i.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:p,msg_video_status:_,msg_network_status:I}}let{statInterval:r}=this;e.msg_down_stream_info=[],i.receiverStats.forEach(p=>{let _={msg_user_info:{str_identifier:p.userId,uint64_tinyid:p.tinyId},msg_network_status:{uint32_rtt:p.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(p.hasAudio){let I={uint32_audio_p2p_delay:p.audio.p2pDelay,uint32_audio_cache_ms:p.audio.totalJitter,uint32_audio_cache_ms_count:p.audio.totalJitterCount,uint32_audio_codec_bitrate:p.audio.bytesReceived,uint32_audio_total_bitrate:p.audio.bytesReceived,uint32_audio_level:p.audio.audioLevel*1e8,uint32_audio_energy:p.audio.totalAudioEnergy*1e6,uint32_audio_receive:p.audio.packetsReceived,uint32_audio_origin_lost:p.audio.packetsLost};_.msg_audio_status=I}if(p.hasVideo){let I=t.get(`${p.userId}_${Ic}`),R=I?I.duration:0,D={uint32_video_stream_type:p.isSmallSubscribed?3:2,uint32_video_receive_fps:p.video.framesReceived,uint32_video_width:p.video.frameWidth,uint32_video_height:p.video.frameHeight,uint32_video_codec_bitrate:p.video.bytesReceived,uint32_video_receive:p.video.packetsReceived,uint32_video_origin_lost:p.video.packetsLost,uint32_video_block_time:R,uint32_video_dec_fps:p.video.framesDecoded,uint32_video_codec_fps:p.video.fpsRender,uint32_video_cache_ms:p.video.totalJitter,uint32_video_cache_ms_count:p.video.totalJitterCount};_.msg_video_status.push(D)}if(p.hasAuxiliary){let I=t.get(`${p.userId}_${Ac}`),R=I?I.duration:0,D={uint32_video_stream_type:7,uint32_video_receive_fps:p.auxiliary.framesReceived,uint32_video_width:p.auxiliary.frameWidth,uint32_video_height:p.auxiliary.frameHeight,uint32_video_codec_bitrate:p.auxiliary.bytesReceived,uint32_video_receive:p.auxiliary.packetsReceived+p.auxiliary.packetsLost,uint32_video_origin_lost:p.auxiliary.packetsLost,uint32_video_block_time:R,uint32_video_dec_fps:p.auxiliary.framesDecoded,uint32_video_codec_fps:p.video.fpsRender,uint32_video_cache_ms:p.auxiliary.totalJitter,uint32_video_cache_ms_count:p.auxiliary.totalJitterCount};_.msg_video_status.push(D)}e.msg_down_stream_info.push(_)});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 p=o.msg_up_stream_info.msg_audio_status,_=e.msg_up_stream_info.msg_audio_status;if(p.uint32_audio_codec_bitrate===0)_.uint32_audio_codec_bitrate=0;else{let I=this.getDifferenceValue(p.uint32_audio_codec_bitrate,_.uint32_audio_codec_bitrate);_.uint32_audio_codec_bitrate=Math.round(I*8/r),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=_.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(p=>{let _=a.find(te=>te.uint32_video_stream_type===p.uint32_video_stream_type);if(!_||_.uint32_video_codec_bitrate===0){p.uint32_video_codec_bitrate=0,p.uint32_video_enc_fps=0,p.uint32_video_codec_fps=0;return}let I=0,R=0,D=0;_&&p.uint32_video_codec_bitrate>=_.uint32_video_codec_bitrate&&(I=_.uint32_video_codec_bitrate,R=_.uint32_video_enc_fps,D=_.uint32_video_codec_fps);let G=this.getDifferenceValue(I,p.uint32_video_codec_bitrate);p.uint32_video_codec_bitrate=Math.round(G*8/r),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=p.uint32_video_codec_bitrate,p.uint32_video_enc_fps=Math.round(this.getDifferenceValue(R,p.uint32_video_enc_fps)/r),p.uint32_video_codec_fps=Math.round(this.getDifferenceValue(D,p.uint32_video_codec_fps)/r),_.uint32_video_width===0&&_.uint32_video_height===0&&_.uint32_video_codec_fps===0&&(p.uint32_video_codec_fps=p.uint32_video_enc_fps),g(_.uint32_key_frame_count)||(p.uint32_key_frame_count=Math.round(this.getDifferenceValue(_.uint32_key_frame_count,p.uint32_key_frame_count))),g(_.uint32_nack_count)||(p.uint32_nack_count=Math.round(this.getDifferenceValue(_.uint32_nack_count,p.uint32_nack_count))),g(_.uint32_pli_count)||(p.uint32_pli_count=Math.round(this.getDifferenceValue(_.uint32_pli_count,p.uint32_pli_count))),g(_.uint32_video_arq_packets)||(p.uint32_video_arq_packets=Math.round(this.getDifferenceValue(_.uint32_video_arq_packets,p.uint32_video_arq_packets))),g(_.uint32_encode_cost)||(p.uint32_encode_cost=Math.round(this.getDifferenceValue(_.uint32_encode_cost,p.uint32_encode_cost)/r)),g(_.uint32_send_packet_cost)||(p.uint32_send_packet_cost=Math.round(this.getDifferenceValue(_.uint32_send_packet_cost,p.uint32_send_packet_cost)/r))});let l=o.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(p=>l.find(_=>_.msg_user_info.uint64_tinyid===p.msg_user_info.uint64_tinyid));let m=e.msg_down_stream_info;return m.forEach(p=>{let _=l.find(I=>I.msg_user_info.uint64_tinyid===p.msg_user_info.uint64_tinyid);if(!ei(p.msg_audio_status)&&!ei(_.msg_audio_status)){let I=p.msg_audio_status,R=_.msg_audio_status,D=this.getDifferenceValue(R.uint32_audio_cache_ms_count,I.uint32_audio_cache_ms_count);delete I.uint32_audio_cache_ms_count,I.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(R.uint32_audio_cache_ms,I.uint32_audio_cache_ms)/D)||0;let G=this.room.remotePublishedUserMap.get(p.msg_user_info.str_identifier);G&&(G.remoteAudioTrack.stat.jitterBufferDelay=I.uint32_audio_cache_ms),I.uint32_audio_origin_lost=this.getDifferenceValue(R.uint32_audio_origin_lost,I.uint32_audio_origin_lost),I.uint32_audio_receive=this.getDifferenceValue(R.uint32_audio_receive,I.uint32_audio_receive),I.uint32_audio_receive+=I.uint32_audio_origin_lost;let te=this.getDifferenceValue(R.uint32_audio_codec_bitrate,I.uint32_audio_codec_bitrate);I.uint32_audio_codec_bitrate=Math.round(te*8/r),I.uint32_audio_total_bitrate=Math.round(te*8/r)}else p.msg_audio_status={};if(p.msg_video_status&&_.msg_video_status){let I=_.msg_video_status;p.msg_video_status=p.msg_video_status.filter(D=>I.find(G=>G.uint32_video_stream_type===D.uint32_video_stream_type)),p.msg_video_status.forEach(D=>{let G=I.find(Op=>Op.uint32_video_stream_type===D.uint32_video_stream_type),te=G.uint32_video_receive,tn=G.uint32_video_origin_lost,yp=G.uint32_video_codec_bitrate,j=G.uint32_video_receive_fps,bp=G.uint32_video_dec_fps;D.uint32_video_origin_lost=this.getDifferenceValue(tn,D.uint32_video_origin_lost),D.uint32_video_receive=this.getDifferenceValue(te,D.uint32_video_receive)+D.uint32_video_origin_lost;let Np=this.getDifferenceValue(yp,D.uint32_video_codec_bitrate);D.uint32_video_codec_bitrate=Math.round(Np*8/r);let vp=this.getDifferenceValue(j,D.uint32_video_receive_fps);D.uint32_video_receive_fps=Math.round(vp/r),D.uint32_video_dec_fps=Math.round(this.getDifferenceValue(bp,D.uint32_video_dec_fps)/r);let Dp=this.getDifferenceValue(G.uint32_video_cache_ms_count,D.uint32_video_cache_ms_count);delete D.uint32_video_cache_ms_count,D.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(G.uint32_video_cache_ms,D.uint32_video_cache_ms)/Dp)||0})}}),n&&i.receiverStats.forEach(p=>{if(p.audio.concealedSamples&&p.audio.totalSamplesReceived){let _=n.receiverStats.find(I=>I.userId===p.userId);if(_&&_.audio.concealedSamples&&_.audio.totalSamplesReceived){let I=p.audio.concealedSamples-_.audio.concealedSamples,R=p.audio.totalSamplesReceived-_.audio.totalSamplesReceived,D=Math.floor(I/R*1e3*r);if(D>r*1e3/5){let G=m.find(te=>te.msg_user_info.str_identifier===p.userId);G&&(G.msg_audio_status.uint32_audio_block_time=D)}}}}),e}getStatsReport(r){return f(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 Km=Pe(Je());function zm(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),l=Math.round(t.requestStart-t.secureConnectionStart),m=Math.round(t.secureConnectionStart-t.connectStart),u=Math.round(t.responseStart-t.requestStart),p=Math.round(t.responseEnd-(t.responseStart||t.startTime));i=M(v({},i),{totalCost:r,local:o,redirect:n,httpCache:a,dns:d,tcp:m,tls:l,request:u,response:p});break}}catch(e){}return i}function Ym(s){return new Promise(i=>f(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=zm(r);o.totalCost===0&&(o.totalCost=Date.now()-t),i(o)}))}var ST=700,wr=class wr extends Km.default{constructor({signalChannel:e,room:t}){super();c(this,"_room");c(this,"_signalChannel");c(this,"_log");c(this,"uplinkRTT",0);c(this,"uplinkLoss",0);c(this,"downlinkRTT",0);c(this,"downlinkLoss",0);c(this,"pingResults",{});c(this,"_downlinkPrevStatMap",new Map);c(this,"_downlinkLossAndRTTMap",new Map);c(this,"_interval",-1);c(this,"_uplinkNetworkQuality",0);c(this,"_downlinkNetworkQuality",0);this._room=t,this._signalChannel=e,this._log=C.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(B.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(Ee.CONNECTION_STATE_CHANGED,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var d,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=(d=this._room)==null?void 0:d.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 f(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)===de.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:l,totalPacketsLost:m,totalPacketsReceived:u}=yield this.getStat(d);if(!this._downlinkPrevStatMap.has(d)){this._downlinkPrevStatMap.set(d,{totalPacketsLost:m,totalPacketsReceived:u});continue}let p=0,_=this._downlinkPrevStatMap.get(d),I=m-_.totalPacketsLost,R=u-_.totalPacketsReceived;I<=0||R<0?p=0:p=Math.round(I/(I+R)*100),this._downlinkPrevStatMap.set(d,{totalPacketsLost:m,totalPacketsReceived:u}),this._downlinkLossAndRTTMap.set(d,{rtt:l,loss:p,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 f(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!Tr())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"&&Y(d.currentRoundTripTime)&&(t.rtt=Math.round(d.currentRoundTripTime*1e3)),d.type==="inbound-rtp"&&(d.mediaType===h.AUDIO||d.mediaType===h.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===de.DISCONNECTED||e.connectionState===de.FAILED||e.connectionState===de.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=re.run("ric",()=>{var n;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];E.emit(T.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=M(v({},r),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit(wr.EVENT_NETWORK_QUALITY,r);let o=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&o-wr.lastPingTime>t.interval*1e3){wr.lastPingTime=Date.now();let a=t.domain.map(d=>Ym(d).then(l=>({domain:d,cost:l.totalCost})));Promise.all(a).then(d=>{this.pingResults.isPoorNetwork=d.some(l=>l.cost>ST),this.pingResults.timestamp=o,this.pingResults.data=d,d.forEach(l=>{N.addSuccessEvent({key:521718,cost:l.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&&(re.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})}})}};c(wr,"EVENT_NETWORK_QUALITY","0"),c(wr,"lastPingTime",0);var Ms=wr;function IT({fn:s,context:i}){return function(...e){try{let t=s.apply(i,e);return Gi(t)?t.catch(r=>C.error(`${s.name}() error observed ${r}`)):t}catch(t){C.error(`${s.name}() error observed ${t}`)}}}var Za=class{constructor(i){c(this,"_frameWorkType");c(this,"_component");c(this,"_language");c(this,"connectionType");c(this,"_room");c(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});c(this,"_keyPrefix");c(this,"_log");c(this,"_intervalId");c(this,"_firstPublishedUserList");c(this,"_networkQuality");c(this,"_basicInfo");c(this,"_pathJoinRoom");c(this,"_pathLeaveRoom");c(this,"_pathMainVideoMap");c(this,"_pathMainAudioMap");c(this,"_pathAuxiliaryMap");c(this,"_remoteStreamStatMap");c(this,"_localStreamStat");c(this,"_eventMap",new Map);c(this,"_captureCostSum",0);c(this,"_captureCostCount",0);c(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=C.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]=IT({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:Re,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,lo().then(i=>{this._basicInfo.string_os_version=Ei(),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(T.JOIN_START,this.handleJoinStart).addEvent(T.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(T.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(T.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(T.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(T.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(T.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(T.JOIN_FAILED,this.handleJoinFailed).addEvent(T.LEAVE_START,this.handleLeaveStart).addEvent(T.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(T.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(T.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(T.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(T.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(T.PUBLISH_START,this.handlePublishStart).addEvent(T.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(T.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(T.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(T.PLAY_TRACK_START,this.handlePlayStart).addEvent(T.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(T.PLAYER_STATE_CHANGED,({track:i,state:e,type:t})=>{!i.isRemote||!this.hitTest(i.room)||e==="PLAYING"&&(t===h.AUDIO?this.handleAudioPlaying(i):this.handleVideoPlaying(i))}).addEvent(T.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(T.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(T.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(T.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(T.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(),re.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&&(g(i.params.frameWorkType)||(this._frameWorkType=i.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),g(i.params.component)||(this._component=i.params.component,this._basicInfo.uint32_component=this._component),g(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: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=d,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 b?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:M(v({},AT),{msg_user_info:new Yo({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 Yo({userId:o,tinyId:n,role:a==="anchor"?20:21}),l=Date.now(),m=`${o}_${t}`,u=this._remoteStreamStatMap.get(m);u&&u.subscribeStartTime===0&&(u.subscribeStartTime=l),t==="main"?(e.muteState.hasVideo&&(r.video||r.smallVideo)&&!this._pathMainVideoMap.has(m)&&this._pathMainVideoMap.set(m,{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:l}),e.muteState.hasAudio&&r.audio&&!this._pathMainAudioMap.has(m)&&this._pathMainAudioMap.set(m,{statsToReport:{msg_user_info:d,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(m)&&this._pathAuxiliaryMap.set(m,{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,N.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,l,m,u;o&&(l=o,m=1),n&&(d=n,u=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(r,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:d,totalVideoDelay:l,audioDelayCount:u,videoDelayCount:m})}}))}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/ft*100)>0&&(this._localStreamStat.totalAudioLevel+=o/ft,this._localStreamStat.audioLevelCount++)}r.forEach(o=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:d}=o,l=n.str_identifier,m=this._room.remotePublishedUserMap.get(l);if(d.forEach(u=>{let p=u.uint32_video_stream_type===2,_=u.uint32_video_stream_type===7,I=`${l}_${p?"main":"auxiliary"}`,R=this._remoteStreamStatMap.get(I);if(R&&(p&&(m!=null&&m.remoteVideoTrack.isSubscribed)||_&&(m!=null&&m.remoteAuxiliaryTrack))){R.totalVideoFPS+=u.uint32_video_receive_fps,R.totalVideoBitrate+=u.uint32_video_codec_bitrate,R.videoCount++,R.statsToReport.uint32_video_width===0&&(R.statsToReport.uint32_video_width=u.uint32_video_width),R.statsToReport.uint32_video_height===0&&(R.statsToReport.uint32_video_height=u.uint32_video_height);let D=p?m.remoteVideoTrack:m.remoteAuxiliaryTrack;D.stat.jitterBufferDelay&&(R.videoJitterBufferDelay=D.stat.jitterBufferDelay),D.stat.framesReceived&&(R.statsToReport.uint32_video_consume_render_rate=Math.floor(D.stat.framesDecoded/D.stat.framesReceived*xs(10,6)))}}),!qr(a)){let u=`${l}_main`,p=this._remoteStreamStatMap.get(u);this._remoteStreamStatMap.has(u)&&p&&m!=null&&m.remoteAudioTrack.isSubscribed&&(p.totalAudioBitrate+=a.uint32_audio_codec_bitrate,p.audioCount++,m.remoteAudioTrack.stat.jitterBufferDelay&&(p.audioJitterBufferDelay=m.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/ft*100)>0&&(p.totalAudioLevel+=a.uint32_audio_level/ft,p.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 b?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&Fi)>=0}hasAudioFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Hi)>=0}hasAuxFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&or)>=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:m,count:u,audioDelayCount:p,videoDelayCount:_,totalAudioDelay:I,totalVideoDelay:R}=r;i.statsToReport.uint32_avg_down_loss=Math.floor(m/u),p&&I&&(i.statsToReport.uint32_audio_network_p2p_delay=Math.floor(I/p),i.audioJitterBufferDelay&&(i.statsToReport.uint32_p2p_delay=Math.floor(i.statsToReport.uint32_audio_network_p2p_delay+i.audioJitterBufferDelay))),_&&R&&(i.statsToReport.uint32_video_network_p2p_delay=Math.floor(R/_))}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,h.AUDIO),i.statsToReport.uint32_video_play_time=o.getDuration(e,h.VIDEO)),i.statsToReport.uint32_video_render_first&&(i.statsToReport.uint32_video_render_first=Math.min(i.statsToReport.uint32_video_render_first,xr));let{badCaseDetector:n}=this._room,{dataFreeze:a,count:d}=n.getDataFreezeDuration(e),{renderFreeze:l}=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(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>xr&&(i.statsToReport.uint64_play_first_frame_time=i.statsToReport.uint64_start_enter_time+xr)}),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>xr&&(i.statsToReport.uint64_render_first_frame_time=i.statsToReport.uint64_start_enter_time+xr)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>xr&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+xr)}getReportData(){this._basicInfo.uint32_networkType=dr();let i={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new Yo({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:jr(this._signalInfo.relayIp),uint32_client_ip:jr(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*xs(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:jr(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return Ys(i),i}report(){return f(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 f(this,null,function*(){if(i.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=yield Lc(i),r=t instanceof ArrayBuffer,o=`${hi(e,Bi.KEY_POINT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(o,t));let a=[this.uploadKVStat(N),this.uploadKVStat(gr)];n||a.push(fi({url:o,body:t,priority:"low"})),yield Promise.all(a)})}setConnectionType(i){this.connectionType=i,this._basicInfo.uint32_connection_type=i}uploadKVStat(i){return f(this,null,function*(){let e=i.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=M(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 Lc(e),r=`${hi(+this._room.sdkAppId,Bi.KV_STAT)}&gzip=${+(t instanceof ArrayBuffer)}`,o=!1;navigator.sendBeacon&&(o=navigator.sendBeacon(r,t)),o||fi({url:r,body:t})})}};y([Ze({settings:{timeout:500,retries:3}})],Za.prototype,"upload",1);var xr=5e3,AT={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},Yo=class{constructor(i){c(this,"str_identifier");c(this,"str_tinyid");c(this,"uint32_role");this.str_identifier=String(i.userId),this.str_tinyid=String(i.tinyId||0),this.uint32_role=i.role}},Zm=Za;var nu=class{constructor(){c(this,"_startTime");c(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=L())}stop(){this._endTime===0&&(this._endTime=L())}getDuration(){return this._endTime===0?L()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},ec=nu;var au=class{constructor(i){c(this,"_room",null);c(this,"_durationMap");c(this,"_eventMap",new Map);this._room=i.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(T.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(T.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(T.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`,h.AUDIO),e.hasVideo&&!t.hasVideo&&this.stopDurationItem(`${r}_main`,h.VIDEO),e.hasAuxiliary&&!t.hasAuxiliary&&this.stopDurationItem(`${r}_auxiliary`,h.VIDEO);let o=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(r);o&&(!e.hasAudio&&t.hasAudio&&o.remoteAudioTrack.isSubscribed&&this.addDuractionItem(r,h.AUDIO,"main"),!e.hasVideo&&t.hasVideo&&o.remoteVideoTrack.isSubscribed&&this.addDuractionItem(r,h.VIDEO,"main"),!e.hasAuxiliary&&t.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(r,h.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 ec,n=this._durationMap.get(r);n?this.isRecording(n[e])||n[e].push(o):this._durationMap.set(r,{userId:i,type:t,audio:e===h.AUDIO?[o]:[],video:e===h.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=au;var cu=class{constructor(i){c(this,"_room");c(this,"_renderFreezeMap",new Map);c(this,"_isVideoPlayingEventFiredMap",new Map);c(this,"_dataFreezeMap",new Map);c(this,"_monitorFreezeData",new Map);c(this,"_eventMap",new Map);this._room=i.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(T.LEAVE_SUCCESS,({room:i})=>{this.hitTest(i)&&this.stop()}).set(T.PLAY_TRACK_START,this.onPlayTrackStart).set(T.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(T.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(T.PLAYER_STATE_CHANGED,({track:i,state:e,reason:t,type:r})=>{if(!(!i.isRemote||!i.room||!this.hitTest(i.room)||r!==h.VIDEO)){if(e==="PLAYING"){let o=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.set(o,!0)}t===h.MUTE?this.onVideoTrackMuted(i):t===h.UNMUTE&&this.onVideoTrackUnmuted(i)}}).set(T.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 ec;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>pn?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 f(this,arguments,function*({userId:i,fps:e,type:t}){let o=`${i}_${t}`,n=this._renderFreezeMap.get(o);if(e<=2){let a=L();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=L();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!==h.VIDEO||!i.isAvailable)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()<pn&&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=L(),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()}},tp=cu;var rp=Pe(Je(),1);var CT=[1,0,0,0,1,1,0,1],tc=class extends Xe{constructor(i,e){if(super(i,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"mirror",logger:e}),i instanceof ke)try{this.setTexBuffer(CT)}catch(t){i.destroy(new b({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 du=class{constructor(i,e){this.node=i;this.layout=e;c(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}},ic=class extends Xe{constructor(e,t){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:t});c(this,"inputs",[])}addInput(e,t){if(this.inputs[t.zIndex])throw new Error("input already exists");let r=new du(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 ke&&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(),l=(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:l,name:a},v({parent:this.inputs.filter(m=>m).map(m=>m.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 ke))try{(r=this.context.ctx)==null||r.deleteBuffer(e.positionBuffer)}catch(o){}})}};var RT=`#version 300 es
|
|
100
|
+
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(i=>{ig[`${i}()`]={tips:`Call trtc.${i}`,color:"blue",class:"blue",textColor:"#fff"}});var ox=Object.keys(ig);var YI=0,Zd,Zs=class Zs{constructor(t){this.core=t;u(this,"_core");u(this,"log");u(this,"dumpLocalVideoMap",{});u(this,"dumpRemoteVideoMap",{});u(this,"dialog");this._core=t,this.log=t.log.createChild({id:`${this.getAlias()}${++YI}`}),this.log.info("created")}getName(){return Zs.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(t){switch(t){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return y(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 y(this,null,function*(){var t;try{if(Zd)yield Zd;else{let e=Date.now(),r=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((t=window.sessionStorage)==null?void 0:t.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/trtc@${rt}/assets/debug-dialog.js`;Zd=this.loadScript(r),yield Zd,this.log.info(`download debug dialog script cost: ${Date.now()-e}ms`)}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 t;(t=this.dialog)==null||t.closeDialog(),this.dialog=null}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):tp,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):rp,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:t,mediaType:e}){return tp({frame:t,onDump:()=>{if(!e)return;let r=e===2?"sub":"main",o=this.dumpLocalVideoMap[r];o&&(o.data.push(t.data),o.duration>0&&Date.now()-o.startTimestamp>o.duration*1e3&&o.onDumpEnd())}})}decodeVideo({frame:t,track:e}){return rp({frame:t,onDump:()=>{if(!e)return;let r=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];r&&(r.data.push(t.data),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}loadScript(t){return new Promise((e,r)=>{this.log.info(`loading debug dialog from ${t}`);let o=document.createElement("script");o.type="text/javascript",o.onload=e,o.onerror=r,o.crossOrigin="anonymous",o.src=t,document.head.append?document.head.append(o):document.getElementsByTagName("head")[0].appendChild(o)})}};u(Zs,"Name","Debug"),u(Zs,"autoStart",!0),X([Bi({settings:{timeout:3e3,retries:3},onError(t,e,r){var o;(o=t==null?void 0:t.message)!=null&&o.includes("timeout")?e():r(t)}})],Zs.prototype,"loadScript",1);var Kd=Zs;var og=i=>{switch(i){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},eu=class{constructor(t,e,r){u(this,"trackDoneOB");u(this,"startOB");u(this,"stopOB");u(this,"inputFrameCount",0);u(this,"decodedFrameCount",0);u(this,"type","auto");u(this,"config");u(this,"decoder");u(this,"_decodeSink");let{kvStatManager:o,trtc:s}=t;this.config=r.config,this.trackDoneOB=Ne(e,ne.INIT),this.stopOB=Ct(this.trackDoneOB),this.startOB=Ct(),r.type==="auto"?this.type="webCodecs":this.type=r.type;let n=Ct(),d=p=>{let m=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),ve(m,Qe(this.stopOB),Ve(()=>{},E=>{e.log.error(E),o.addFailedEvent({key:og(this.type),error:E}),p>4?this.startOB.error(E):this.startOB.next(p+1)})),ve(m,yr(1),Mm(Ta))};ve(this.startOB,_a(0),ji(d),Qe(this.stopOB),Ve(()=>{e.player.setOutput(),n.next("STARTED")},p=>{n.next("FAILED")},()=>{o.addSuccessEvent({key:og(this.type)}),o.addSuccessEvent({key:504702})}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.startOB.next(0)}close(t){this.stopOB.next(t)}pipe(t){return di()(e=>y(this,null,function*(){this._decodeSink=e,e.defer(()=>{var o;(o=this.decoder)==null||o.close()});let{type:r}=this;try{switch(r){case"webCodecs":this.decoder=new AudioDecoder({error:o=>{t.log.error(o),e.error(4)},output:o=>{this.decodedFrameCount++,e.next(o),t.player.write(o)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(o){t.log.error(o),e.error(r==="webCodecs"?2:6)}}))}decodeFrame(t){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:t.data,timestamp:t.timestamp,type:"key"}))}},ZI={type:"object"},Ma=class Ma{constructor(t){this.core=t;u(this,"log");u(this,"contextMap",new Map);u(this,"decodeProcessorMap",new WeakMap);this.log=t.log.createChild({id:`${this.getAlias()}`})}getAlias(){return Ma.Name}getGroup(t){return t.track.userId+t.track.streamType}getName(){return Ma.Name}getValidateRule(t){return ZI}start(t){let{track:e}=t;this.decodeProcessorMap.set(e,this.decode(t)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:r,track:o})=>this.decodeProcessorMap.has(o)?this.decodeProcessorMap.get(o)({frame:r,track:o}):r,type:3})}decode(t){return({frame:e,track:r})=>{if(r!==t.track)return e;if(this.contextMap.has(r))return this.contextMap.get(r).decodeFrame(e);let o=new eu(this.core,r,t);return ve(o.trackDoneOB,yr(1),Ve(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:r})})),this.contextMap.set(r,o),o.decodeFrame(e)}}stop({track:t}){let e=this.contextMap.get(t);e&&(e.close("stop"),this.contextMap.delete(t),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(t){let e=this.contextMap.get(t.track);if(e){if(t.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(t.track,new eu(this.core,t.track,t))}}};u(Ma,"Name","TRTCAudioDecoder");var Oa=Ma;var sg=0,Pa=new Set,bt=null;Mu(tg);ws.checkStorage();Ml();var KI={RtcError:ae,ErrorCode:ue,ErrorCodeDictionary:br},fe=class fe extends ng.EventEmitter{constructor(e,r){super();u(this,"_room");u(this,"_eventListened",new Set);u(this,"_localVideoTrack",null);u(this,"_localAudioTrack",null);u(this,"_localScreenTrack",null);u(this,"_localScreenAudioTrack",null);u(this,"_localVideoConfig",null);u(this,"_localScreenConfig",null);u(this,"_localAudioConfig",null);u(this,"_remoteVideoConfigMap",new Map);u(this,"_remoteAudioConfigMap",new Map);u(this,"_remoteAudioVolumeMap",new Map);u(this,"_remoteAudioMuteMap",new Map);u(this,"_mediaTrackMap",new WeakMap);u(this,"_log",B.createLogger({id:`t${++sg}`}));u(this,"_plugins",new Map);u(this,"_networkQuality",null);u(this,"_speakerId");u(this,"_getPCMAbortCtrl");this._room=new e(Z({logger:this._log,frameWorkType:fe.frameWorkType},r)),this._room.videoDecodeFallbackType=r.videoDecodeFallback,this._log.info(`create() ${JSON.stringify(r,(o,s)=>o==="plugins"?s.map(n=>n.Name):s)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(o){return this._room.audioManager.dump(o)}}}),r.plugins&&r.plugins.forEach(o=>{this._use(o,r.assetsPath)}),this._use(zd,r.assetsPath),this._use(Qd,r.assetsPath),this._use(Oa,r.assetsPath||nc),this._use(Kd),r.enableSEI&&sa&&this._use(Yd),this._room.on("audio-volume",o=>{!o.find(s=>s.userId==="")&&this._localAudioTrack&&o.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100)}),r.volumeType===1&&o.forEach(s=>{var d;let n=s.userId===""?this._localAudioTrack:(d=this.room.remotePublishedUserMap.get(s.userId))==null?void 0:d.remoteAudioTrack;n&&(s.volume=n.dbVolume)}),this.emit(se.AUDIO_VOLUME,{result:o.sort((s,n)=>n.volume-s.volume)})}),this._room.videoManager.on("error",o=>{this._log.error(new ae({code:ue.OPERATION_FAILED,extraCode:5504,message:o.message,originError:o}))}),this._listenEvents(),this._initActiveSpeaker(),Zf(this,"trtc")}static create(e){}static _create(e,r){$f();let o=new fe(e,r||{});return Pa.add(o),o}get room(){return this._room}_listenEvents(){Pt(this,this._room).add("peer-join",e=>{let{userId:r}=e;this.emit(se.REMOTE_USER_ENTER,{userId:r})}).add("peer-leave",e=>{this.emit(se.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(se.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(se.ERROR,ae.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(se.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let r=Ee(Z({},e),{uplinkRTT:Math.min(e.uplinkRTT,Rn),downlinkRTT:Math.min(e.downlinkRTT,Rn)});this.emit(se.NETWORK_QUALITY,r)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{Pt(o,o).add("player-state-changed",s=>{let n=Ee(Z({},s),{userId:e.userId});o.kind===D.VIDEO&&(n.streamType=Yi(o.streamType)),this.emit(o.kind===D.AUDIO?se.AUDIO_PLAY_STATE_CHANGED:se.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",s=>{s.getCode()===te.PLAY_NOT_ALLOWED&&this.emit(se.AUTOPLAY_FAILED,{userId:o.userId,resume:()=>o.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{ut(o)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:r})=>{let{userId:o}=r,s=e.audioAvailable,n=e.videoAvailable,{audioAvailable:d,videoAvailable:p}=r;d||this._remoteAudioConfigMap.delete(o),p||this._remoteVideoConfigMap.delete(`${o}_main`),r.hasAuxiliary||this._remoteVideoConfigMap.delete(`${o}_sub`),n!==p&&(p?this._onVideoAvailable({userId:o,streamType:"main"}):this._onVideoUnavailable({userId:o,streamType:"main"}),this.emit(p?se.REMOTE_VIDEO_AVAILABLE:se.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"main"})),s!==d&&(d?this._onAudioAvailable({userId:o}):this._onAudioUnavailable({userId:o,muteState:r}),this.emit(d?se.REMOTE_AUDIO_AVAILABLE:se.REMOTE_AUDIO_UNAVAILABLE,{userId:o})),e.hasAuxiliary!==r.hasAuxiliary&&(r.hasAuxiliary?this._onVideoAvailable({userId:o,streamType:"sub"}):this._onVideoUnavailable({userId:o,streamType:"sub"}),this.emit(r.hasAuxiliary?se.REMOTE_VIDEO_AVAILABLE:se.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"sub"}))}).add("sei-message",e=>{this.emit(se.SEI_MESSAGE,Ee(Z({},e),{streamType:Yi(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(se.ERROR,new ae({code:ue.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var s,n,d,p,m,E,_;let r={2:"big",3:"small",7:"sub"},o={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((s=e.msg_down_stream_info[0])==null?void 0:s.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((d=this._networkQuality)==null?void 0:d.downlinkRTT)||0,Rn),upLoss:((p=this._networkQuality)==null?void 0:p.uplinkLoss)||0,downLoss:((m=this._networkQuality)==null?void 0:m.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((E=e.msg_up_stream_info.msg_audio_status)==null?void 0:E.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((_=e.msg_up_stream_info.msg_audio_status)==null?void 0:_.uint32_audio_level)||0)/ri},video:e.msg_up_stream_info.msg_video_status.filter(b=>r[b.uint32_video_stream_type]).map(b=>({bitrate:(b.uint32_video_codec_bitrate||0)/1e3,width:b.uint32_video_width,height:b.uint32_video_height,frameRate:b.uint32_video_enc_fps,videoType:r[b.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(b=>({userId:b.msg_user_info.str_identifier,audio:{bitrate:(b.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(b.msg_audio_status.uint32_audio_level||0)/ri},video:b.msg_video_status.map(C=>({bitrate:(C.uint32_video_codec_bitrate||0)/1e3,width:C.uint32_video_width,height:C.uint32_video_height,frameRate:C.uint32_video_dec_fps,videoType:r[C.uint32_video_stream_type]}))}))};this.emit(se.STATISTICS,o)}).add("custom-message",e=>{this.emit(se.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(se.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(se.FIRST_VIDEO_FRAME,Ee(Z({},e),{streamType:Yi(e.streamType)}))}),Pt(this,Et).add("audioInputAdded",e=>{this.emit(se.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(se.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(se.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(se.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>y(this,null,function*(){if(this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),bt&&bt.deviceId===bn){let r=(yield $i()).find(o=>o.deviceId===bn);r&&bt.groupId!==r.groupId&&(bt=r,this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}})).add("audioOutputRemoved",e=>y(this,null,function*(){this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let r=(yield $i())[0];if(!r||!bt||bt.groupId===r.groupId)return;let o=bt.deviceId===e.deviceId,s=bt.deviceId===bn&&bt.deviceId===r.deviceId;(o||s)&&(bt=r,this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}))}use(e){let r,o;"plugin"in e?(r=e.plugin,o=e.assetsPath):r=e,this._use(r,o||nc)}_use(e,r){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let s=new e(Yf.call(this,{TRTC:fe,room:this._room,errorModule:KI,assetsPath:r}));this._plugins.set(e.Name,s),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return y(this,null,function*(){var p,m;let{scene:r="rtc",enableAutoPlayDialog:o=!0,autoReceiveAudio:s=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!we(e.proxy)&&e.proxy.turnServer&&((m=(p=this._room).setTurnServer)==null||m.call(p,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=o,this._room.autoReceiveAudio=s,this._room.autoReceiveVideo=n,dt(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let d={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};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(d,r,fe.frameWorkType),this._checkTrackToPublish(),Ym.start()})}exitRoom(){return y(this,null,function*(){return yield this._exitRoom()})}switchRole(e,r){return y(this,null,function*(){r!=null&&r.privateMapKey&&(this._room.privateMapKey=r.privateMapKey),r!=null&&r.latencyLevel&&(this._room.latencyLevel=r.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){ut(this),this.removeAllListeners(),this._room.destroy(),Pa.delete(this),Pa.size===0&&Ym.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var r;return(r=e.destroy)==null?void 0:r.call(e)}),this._plugins.clear(),H.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return y(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:r=!0,mute:o,option:s}=e,n=new ci(this._room.audioManager),d={},p={muted:!0};s&&($(s.microphoneId)?$(s.audioTrack)||(d.customSource=s.audioTrack):d.deviceId=s.microphoneId,s&&je(s.captureVolume)&&n.setCaptureVolume(s.captureVolume),$(s.profile)||(we(s.profile)?cc[s.profile]&&n.setProfile(cc[s.profile]):n.setProfile(s.profile)),je(s.earMonitorVolume)&&(p.muted=!(s.earMonitorVolume>0),p.volume=s.earMonitorVolume),$(s.echoCancellation)||(n.profile.echoCancellation=s.echoCancellation),$(s.noiseSuppression)||(n.profile.noiseSuppression=s.noiseSuppression),$(s.autoGainControl)||(n.profile.autoGainControl=s.autoGainControl)),n.on("5",m=>{this.emit(se.ERROR,new ae({code:ue.DEVICE_ERROR,extraCode:5309,messageParams:{error:m}}))}),n.on("2",m=>{this.emit(se.DEVICE_CHANGED,{type:"microphone",action:"active",device:m})}),n.on("4",m=>{let E;m.error&&(E=ae.convertFrom(m.error)),this.emit(se.PUBLISH_STATE_CHANGED,Ee(Z({},m),{error:E}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(d),$(o)||n.setMute(o),Pt(n,n).add("player-state-changed",m=>{this.emit(se.AUDIO_PLAY_STATE_CHANGED,Ee(Z({},m),{userId:""}))}),this.listeners(se.AUDIO_FRAME).length>0&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(m=>{this.emit(fe.EVENT.AUDIO_FRAME,{data:m})})),this._getPCMAbortCtrl&&n.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(m=>{this.emit(fe.EVENT.AUDIO_FRAME,{data:m})}))}),r&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=Ee(Z({},e),{publish:r}),yield this._updateAudioPlayOption({playOption:p,track:n})})}updateLocalAudio(e){return y(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:r,mute:o,option:s}=e,n={};s&&(s.microphoneId?yield this._localAudioTrack.switchDevice(s.microphoneId):$(s.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(s.audioTrack)),$(s.captureVolume)||this._localAudioTrack.setCaptureVolume(s.captureVolume),$(s.earMonitorVolume)||(n.muted=!(s.earMonitorVolume>0),n.volume=s.earMonitorVolume),yield this._localAudioTrack.update3A(s)),this._room.isJoined&&!$(r)&&(r&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!r&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),$(o)||this._localAudioTrack.setMute(o),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),kr(this._localAudioConfig,e)})}stopLocalAudio(){return y(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),ut(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("stopLocalAudio"),delete this._getPCMAbortCtrl))})}startLocalVideo(){return y(this,arguments,function*(e={publish:!0,view:null}){if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:r,publish:o=!0,mute:s,option:n}=e,d=new Sr(this._room.videoManager),p={},m={};n&&(n.cameraId?p.deviceId=n.cameraId:$(n.useFrontCamera)?$(n.videoTrack)||(p.customSource=n.videoTrack):p.facingMode=n.useFrontCamera?D.FACING_MODE_USER:D.FACING_MODE_ENVIRONMENT,n.qosPreference&&(p.contentHint=Na(n.qosPreference)),$(n.profile)||(we(n.profile)?Or[n.profile]&&d.setProfile(Or[n.profile]):d.setProfile(n.profile)),$(n.fillMode)||(m.objectFit=n.fillMode),$(n.mirror)||(m.mirror=n.mirror),$(n.small)||(ra()?we(n.small)?d.small=Or[n.small]:n.small===!0?d.small=Or["120p"]:d.small=n.small:this._log.warn("small stream is not supported"))),d.once("first-video-frame",E=>{this.emit(se.FIRST_VIDEO_FRAME,Ee(Z({},E),{streamType:Yi(E.streamType)}))}),d.on("5",E=>{this.emit(se.ERROR,new ae({code:ue.DEVICE_ERROR,extraCode:5308,messageParams:{error:E}}))}),d.on("2",E=>{this.emit(se.DEVICE_CHANGED,{type:"camera",action:"active",device:E})}),d.on("4",E=>{let _;E.error&&(_=ae.convertFrom(E.error)),this.emit(se.PUBLISH_STATE_CHANGED,Ee(Z({},E),{error:_}))}),this._listenOutputTrackChanged(d),yield d.capture(p),$(s)||(yield d.setMute(s)),Pt(d,d).add("player-state-changed",E=>{this.emit(se.VIDEO_PLAY_STATE_CHANGED,Ee(Z({},E),{userId:"",streamType:"main"}))}),o&&this._room.isJoined&&this._room.publish(d).catch(()=>{}),this._localVideoTrack=d,this._localVideoConfig=Ee(Z({},e),{view:r,publish:o}),yield this._updateVideoPlayOption({view:r,playOption:m,track:d})})}updateLocalVideo(e){return y(this,null,function*(){if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:r,publish:o,mute:s,option:n}=e,d={};if(n)if($(n.profile)||(we(n.profile)?Or[n.profile]&&this._localVideoTrack.setProfile(Or[n.profile]):this._localVideoTrack.setProfile(n.profile),(!n.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(n.cameraId))&&$(n.useFrontCamera)&&this._localVideoTrack.applyProfile()),n.cameraId?yield this._localVideoTrack.switchDevice(n.cameraId):$(n.useFrontCamera)?$(n.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(n.videoTrack)):yield this._localVideoTrack.switchDevice(n.useFrontCamera?D.FACING_MODE_USER:D.FACING_MODE_ENVIRONMENT),$(n.fillMode)||(d.objectFit=n.fillMode),$(n.mirror)||(d.mirror=n.mirror),n.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(Na(n.qosPreference)),n.small){let p=!this._localVideoTrack.small;ra()?(n.small===!0?this._localVideoTrack.small=Or["120p"]:we(n.small)?this._localVideoTrack.small=Or[n.small]:this._localVideoTrack.small=n.small,this._room.videoManager.update(),p&&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&&!$(o)&&(o&&!this._localVideoConfig.publish&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._localVideoConfig.publish&&!o&&this._room.unpublish(this._localVideoTrack).catch(()=>{})),$(s)||(yield this._localVideoTrack.setMute(s)),yield this._updateVideoPlayOption({view:r,playOption:d,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),kr(this._localVideoConfig,e)})}stopLocalVideo(){return y(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),ut(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return y(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:r=null,publish:o=!0,option:s}=e,n=new Hi(this._room.videoManager);n.on("4",_=>{let b;_.error&&(b=ae.convertFrom(_.error)),this.emit(se.PUBLISH_STATE_CHANGED,Ee(Z({},_),{error:b}))}),n.once("first-video-frame",_=>{this.emit(se.FIRST_VIDEO_FRAME,Ee(Z({},_),{streamType:Yi(_.streamType)}))}),this._listenOutputTrackChanged(n),e.streamType==="main"&&(n.mediaType=4);let d=null,p={},m={};s&&($(s.profile)||(we(s.profile)?dc[s.profile]&&n.setProfile(dc[s.profile]):n.setProfile(s.profile)),s.systemAudio&&(p.systemAudio=!0,p.echoCancellation=s.echoCancellation,p.noiseSuppression=s.noiseSuppression,p.autoGainControl=s.autoGainControl),$(s.fillMode)||(m.objectFit=s.fillMode),s.videoTrack&&(p.videoTrack=s.videoTrack),s.audioTrack&&(p.audioTrack=s.audioTrack),s.captureElement&&(p.captureElement=s.captureElement),s.preferDisplaySurface&&(p.preferDisplaySurface=s.preferDisplaySurface),s.qosPreference&&(p.contentHint=Na(s.qosPreference)));let E=yield n.capture(p);if(n.mediaTrack.addEventListener(D.ENDED,()=>{this._stopScreenShare(),this.emit(se.SCREEN_SHARE_STOPPED)}),E.getAudioTracks()[0]&&(d=new Lo(this._room.audioManager),yield d.setInputMediaStreamTrack(E.getAudioTracks()[0]),this._speakerId&&d.setAudioOutput(this._speakerId)),Pt(n,n).add("player-state-changed",_=>{this.emit(se.VIDEO_PLAY_STATE_CHANGED,Ee(Z({},_),{userId:"",streamType:"sub"}))}),o&&this._room.isJoined){let _=[n];d&&_.push(d),this._room.publish(..._).catch(()=>{})}this._localScreenTrack=n,this._localScreenAudioTrack=d,this._localScreenConfig=Ee(Z({},e),{view:r,publish:o}),yield this._updateVideoPlayOption({view:r,playOption:m,track:n})})}updateScreenShare(e){return y(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:r,publish:o,option:s}=e,n={};if(s&&($(s.fillMode)||(n.objectFit=s.fillMode),s.qosPreference)){let d=Na(s.qosPreference);this._localScreenTrack.setContentHint(d)}this._room.isJoined&&!$(o)&&(o&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!o&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),yield this._updateVideoPlayOption({view:r,playOption:n,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),kr(this._localScreenConfig,e)})}stopScreenShare(){return y(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return y(this,null,function*(){let{view:r,userId:o,streamType:s,option:n}=e,d=`${o}_${s}`;if(this._remoteVideoConfigMap.has(d)){this._log.warn(`remote video has already started. userId:${o}, streamType:${s}`);return}let p=this._room.remotePublishedUserMap.get(o);if(!p)return;let m={},E=s==="main"?p.remoteVideoTrack:p.remoteAuxiliaryTrack;this._listenOutputTrackChanged(E),n&&($(n.fillMode)||(m.objectFit=n.fillMode),$(n.mirror)||(m.mirror=n.mirror),m.canvasRender=n.canvasRender,s==="main"&&!$(n.small)&&(!p.remoteVideoTrack.isSubscribing&&!p.remoteVideoTrack.isSubscribed&&p.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,E.user))),yield this._room.subscribe(E),yield this._enableVideoDecodeFallback(E,s),yield this._updateVideoPlayOption({view:r,playOption:m,track:E}),this._emitTrackEvent(E),this._remoteVideoConfigMap.set(d,{config:e}),n&&!$(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:E,view:r,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return y(this,null,function*(){var P,J;let{view:r,userId:o,streamType:s,option:n}=e,d=`${o}_${s}`,p=this._remoteVideoConfigMap.get(d);if(!p||!this._room.remotePublishedUserMap.has(o))return;let m={};n&&($(n.fillMode)||(m.objectFit=n.fillMode),$(n.mirror)||(m.mirror=n.mirror));let E=null,_=this._room.remotePublishedUserMap.get(o);if(s==="main"&&(_!=null&&_.muteState.hasVideo)&&(E=_.remoteVideoTrack),s==="sub"&&(_!=null&&_.muteState.hasAuxiliary)&&(E=_.remoteAuxiliaryTrack),!E)return;let{config:b}=p;s==="main"&&n&&!$(n.small)&&this._room.changeType(n.small,E.user),yield this._updateVideoPlayOption({view:r,playOption:m,track:E,prevConfig:b}),kr(b,e);let C=$(n==null?void 0:n.receiveWhenViewVisible)?(P=b.option)==null?void 0:P.receiveWhenViewVisible:n.receiveWhenViewVisible,k=$(r)?b.view:r,x=$(n==null?void 0:n.viewRoot)?(J=b.option)==null?void 0:J.viewRoot:n.viewRoot;this._observeView({remoteTrack:E,view:k,receiveWhenViewVisible:C,viewRoot:x})})}stopRemoteVideo(e){return y(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,r=!0){return y(this,null,function*(){let o=[],s=this._room.remotePublishedUserMap.get(e.userId);if(s){let{muteState:d,remoteVideoTrack:p,remoteAuxiliaryTrack:m}=s;e.streamType==="main"&&(p.stop(),d.hasVideo&&o.push(p)),e.streamType==="sub"&&(m.stop(),d.hasAuxiliary&&o.push(m))}for(let d of o)r&&(yield this._room.unsubscribe(d),this._mediaTrackMap.delete(d.outMediaTrack));let n=this._remoteVideoConfigMap.get(`${e.userId}_${e.streamType}`);n&&n.observer&&n.observer.disconnect(),this._remoteVideoConfigMap.delete(`${e.userId}_${e.streamType}`)})}muteRemoteAudio(e,r){return y(this,null,function*(){this._remoteAudioMuteMap.set(e,r);try{if(e==="*")if(r)yield this._stopRemoteAudio({userId:e});else{let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)s.muteState.hasAudio&&!this._remoteAudioConfigMap.has(s.userId)&&(yield this._startRemoteAudio({userId:s.userId}))}else r?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(o){throw this._remoteAudioMuteMap.delete(e),o}})}setRemoteAudioVolume(e,r){if(e==="*"){let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)this._remoteAudioVolumeMap.set(s.userId,r),s.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:s.remoteAudioTrack})}else if(e){let o=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,r),o&&o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:o.remoteAudioTrack})}}startPlugin(e,r){return y(this,null,function*(){return e.start(r)})}updatePlugin(e,r){return y(this,null,function*(){return e.update(r)})}stopPlugin(e,r){return y(this,null,function*(){return e.stop(r)})}enableAudioVolumeEvaluation(e=2e3,r=!1){this._room.enableAudioVolumeEvaluation(e,r)}on(e,r,o){return this.listeners(e).includes(r)?this:(this._log.debug("on",e),super.on(e,r,o),this._eventListened.add(e),e===fe.EVENT.AUDIO_FRAME&&!this._getPCMAbortCtrl&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(s=>{this.emit(fe.EVENT.AUDIO_FRAME,{data:s})}),this._localAudioTrack&&this._localAudioTrack.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(s=>{this.emit(fe.EVENT.AUDIO_FRAME,{data:s})}))})),this)}emit(e,...r){try{zf.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(r)}`)}catch(o){}return super.emit(e,...r)}off(e,r,o){var s,n;return this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners(),(s=this._getPCMAbortCtrl)==null||s.abort("off"),delete this._getPCMAbortCtrl):(super.off(e,r,o),e===fe.EVENT.AUDIO_FRAME&&((n=this._getPCMAbortCtrl)==null||n.abort("off"),delete this._getPCMAbortCtrl)),this}getAudioTrack(e={userId:"",streamType:"main"}){let r,o=null,s="main",n=!1;if(we(e)?r=e:(r=e.userId,n=e.processed===!0,e.streamType&&(s=e.streamType)),r){let d=this._room.remotePublishedUserMap.get(r);d&&(o=d.remoteAudioTrack)}else o=s==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return o?n&&o.outMediaTrack&&o.outMediaTrack!==o.mediaTrack?o.outMediaTrack.clone():o.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:r="",streamType:o="main",processed:s=!1}=e,n=null;if(r==="")o==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),o==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let d=this._room.remotePublishedUserMap.get(r);d&&(n=o==="main"?d.remoteVideoTrack:d.remoteAuxiliaryTrack)}return n?s&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:r,streamType:o="main"}=e;if(r){let s=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(s!=null&&s.muteState.hasVideo))return s.remoteVideoTrack.getVideoFrame();if(o==="sub"&&(s!=null&&s.muteState.hasAuxiliary))return s.remoteAuxiliaryTrack.getVideoFrame()}else{if(o==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(o==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var r,o;this._speakerId=e,(r=this._localAudioTrack)==null||r.setAudioOutput(e),(o=this._localScreenAudioTrack)==null||o.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(s=>s.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return y(this,null,function*(){(yield $i()).forEach(o=>{o.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}),bt=o)}),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 y(this,null,function*(){let{userId:r}=e;if(this._remoteAudioConfigMap.has(r)){this._log.warn(`remote audio has already started. userId:${r}`);return}let o=this._room.remotePublishedUserMap.get(r);if(!o)return;let s={},n=o.remoteAudioTrack;this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let d=this._remoteAudioVolumeMap.get(r),p=je(d)?d:100;s.volume=p,this._remoteAudioConfigMap.set(r,e),yield this._room.subscribe(n),ve(Ne(n,"decode-failed"),Qe(Ne(n,ne.INIT)),Ve(()=>{this.startPlugin(Oa.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:s,track:n})}catch(d){throw this._remoteAudioConfigMap.delete(r),d}this._emitTrackEvent(n)})}_stopRemoteAudio(e,r=!0){return y(this,null,function*(){let o=this._room.remotePublishedUserMap.get(e.userId);o&&(o.remoteAudioTrack.stop(),o.muteState.hasAudio&&r&&(yield this._room.unsubscribe(o.remoteAudioTrack)),this._mediaTrackMap.delete(o.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`)})}_enableVideoDecodeFallback(e,r){let o=this._room.videoDecodeFallbackType;!o||!this._plugins.has("VideoDecoderPlugin")||(this._log.debug("remote video will fall back when decode failed"),ve(Ne(e,"decode-failed"),Qe(Ne(e,ne.INIT)),Ia(()=>{this.startPlugin("VideoDecoderPlugin",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:o})}),Ho(Ne(e,"decode-downgrade-state-changed")),Ve(s=>{this.emit(se.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,Ee(Z({},s),{streamType:r,userId:e.userId}))},s=>{this._log.error("fallback",s)},()=>this._log.info("fallback complete"))))}_updateVideoPlayOption(n){return y(this,arguments,function*({view:e,playOption:r,track:o,prevConfig:s}){if(o.setMirror(r.mirror),$(e)&&s&&s.view&&!hs(r)){let d=gs(s.view);d.length>0&&(yield o.play(d,r))}if(!$(e)){let d=gs(e);d.length>0?yield o.play(d,r):o.stop()}})}_updateAudioPlayOption(s){return y(this,arguments,function*({playOption:e={},track:r,prevConfig:o}){if(!r.isPlayCalled)try{yield r.play(null,e)}catch(n){}$(e.muted)||r.setPlayerMute(e.muted),$(e.volume)||r.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,r=!0){let o=e.isRemote?e.userId:"";e.outMediaTrack&&(r&&this._mediaTrackMap.get(e.outMediaTrack)===o||(this._mediaTrackMap.set(e.outMediaTrack,o),this.emit(se.TRACK,{userId:o,streamType:Yi(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var r,o,s;let e=[];if((r=this._localAudioConfig)!=null&&r.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(o=this._localVideoConfig)!=null&&o.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(s=this._localScreenConfig)!=null&&s.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:r,receiveWhenViewVisible:o=!1,viewRoot:s}){if($(r))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${Yi(e.streamType)}`);if(!n)return;let d=n.observer||void 0;if(r===null||st(r)&&r.length===0||!o){d==null||d.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let m=n.visibleViewMap||new Map,E=-1;(!d||d.root!==s)&&(d==null||d.disconnect(),m.clear(),d=new IntersectionObserver(b=>{b.forEach(C=>{m.set(C.target,C.isIntersecting)}),clearTimeout(E),E=window.setTimeout(()=>{[...m.values()].find(k=>k)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:s}));let _=new Set(gs(r));m.forEach((b,C)=>{_.has(C)||(d.unobserve(C),m.delete(C))}),_.forEach(b=>{m.set(b,!0),d.observe(b)}),d.takeRecords().forEach(b=>{m.set(b.target,b.isIntersecting)}),n.visibleViewMap=m,n.observer=d}_exitRoom(){return y(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 r=e.includes("main")?"main":"sub",o=e.split(`_${r}`)[0];o&&this._stopRemoteVideo({userId:o,streamType:r}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),Kf(this),this._room.remotePublishedUserMap.forEach(e=>{ut(e.remoteAudioTrack),ut(e.remoteVideoTrack),ut(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return y(this,null,function*(){var e;if(this._localScreenTrack){if(this._room.isJoined){let r=[this._localScreenTrack];this._localScreenAudioTrack&&r.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...r).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),ut(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!bt||Bs(bt))&&(this._initActiveSpeaker(),H.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return y(this,null,function*(){if(bt&&!Bs(bt))this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:bt});else{let e=yield $i();e[0]&&!Bs(e[0])?(bt=e[0],this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):H.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let r=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(r===!1||this._room.autoReceiveAudio&&!r)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:r}){if(!this._room.autoReceiveVideo)return;let o=this._room.remotePublishedUserMap.get(e);if(o){let s=r==="main"?o.remoteVideoTrack:o.remoteAuxiliaryTrack,n=[s];this._room.autoReceiveAudio&&o.remoteAudioTrack.isAvailable&&n.push(o.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(s)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:r}){r.hasAudio&&r.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:r}){this._stopRemoteVideo({userId:e,streamType:r},!1).catch(()=>{})}sendSEIMessage(e,r){var s;let o=this._plugins.get("SEI");o&&(o.update({buffer:e,options:Ee(Z({seiPayloadType:243},r),{small:!!((s=this._localVideoTrack)!=null&&s.small)})}),Y.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var r,o;(o=(r=this._room).sendCustomMessage)==null||o.call(r,e),Y.addCount({key:500001,useUV:!0})}static setLogLevel(e,r){B.setLogLevel(e),$(r)||(r?B.enableUploadLog():B.disableUploadLog())}static isSupported(){return Kc()}static getCameraList(e=!0){return Kt(e)}static getMicrophoneList(e=!0){return Jt(e)}static getSpeakerList(e=!0){return $i(e)}static setCurrentSpeaker(e){return y(this,null,function*(){if(gt&&(e===sr.SPEAKER||e===sr.HEADSET)){let o=yield fe.getMicrophoneList(),s="";if(o.forEach(n=>{n.label===e&&(s=n.deviceId)}),!s)return;Pa.forEach(n=>y(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:s}}))}));return}(yield $i()).forEach(o=>{o.deviceId===e&&(Pa.forEach(s=>{s._setCurrentSpeaker(e),s.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:o})}),bt=o)})})}static _addKVStat({type:e,key:r,value:o,base:s,useUV:n,version:d}){switch(d&&(No.version=d),e){case"count":No.addCount({key:r,useUV:n});break;case"enum":No.addEnum({key:r,value:o,useUV:n});break;case"number":No.addNumber({key:r,value:o,split:s});break}}};u(fe,"_loggerManager",B),u(fe,"EVENT",se),u(fe,"ERROR_CODE",ue),u(fe,"TYPE",sr),u(fe,"frameWorkType",30),X([Ye({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"}})})],fe.prototype,"use",1),X([Ut(At.TRTC.enterRoom),Xi("room",([e],[r])=>(e.roomId||e.strRoomId)===(r.roomId||r.strRoomId)&&e.userId===r.userId&&e.sdkAppId===r.sdkAppId),Me(e=>function(r){return this._log.setUserId(r.userId),this._log.setSdkAppId(r.sdkAppId),e.call(this,r)}),Ye()],fe.prototype,"enterRoom",1),X([Ye()],fe.prototype,"exitRoom",1),X([Ut(At.TRTC.switchRole),qo("room",{merge:(e,r)=>r}),Ye()],fe.prototype,"switchRole",1),X([Ye()],fe.prototype,"destroy",1),X([Ut(At.TRTC.startLocalAudio),Xi("audio",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.microphoneId)===((s=r==null?void 0:r.option)==null?void 0:s.microphoneId)}),Ye()],fe.prototype,"startLocalAudio",1),X([Ut(At.TRTC.updateLocalAudio),qo("audio",{debounce:{delay:200,getKey:()=>`${sg}-localAudio`,isNeedToDebounce:e=>{var r;return!$((r=e.option)==null?void 0:r.captureVolume)}}}),Ye()],fe.prototype,"updateLocalAudio",1),X([Qi("audio"),Ye()],fe.prototype,"stopLocalAudio",1),X([Ut(At.TRTC.startLocalVideo),Xi("video",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.cameraId)===((s=r==null?void 0:r.option)==null?void 0:s.cameraId)}),Ye()],fe.prototype,"startLocalVideo",1),X([Ut(At.TRTC.updateLocalVideo),qo("video"),Ye()],fe.prototype,"updateLocalVideo",1),X([Qi("video"),Ye()],fe.prototype,"stopLocalVideo",1),X([Ut(At.TRTC.startScreenShare),Xi("screen",()=>!0),Ye()],fe.prototype,"startScreenShare",1),X([Ut(At.TRTC.updateScreenShare),qo("screen"),Ye()],fe.prototype,"updateScreenShare",1),X([Ye()],fe.prototype,"stopScreenShare",1),X([Ut(At.TRTC.startRemoteVideo),Xi(e=>`v${e.userId}${e.streamType}`,()=>!0),Ye({getRemoteId:e=>`${e.userId}_${e.streamType}`})],fe.prototype,"startRemoteVideo",1),X([Ut(At.TRTC.updateRemoteVideo),qo(e=>`v${e.userId}${e.streamType}`),Ye({getRemoteId:e=>`${e.userId}_${e.streamType}`})],fe.prototype,"updateRemoteVideo",1),X([Ut(At.TRTC.stopRemoteVideo),Me(e=>function(r){return y(this,null,function*(){if(r.userId==="*"){let o=[];return this._room.remotePublishedUserMap.forEach(s=>{this._remoteVideoConfigMap.has(`${s.userId}_main`)&&o.push(this.stopRemoteVideo({streamType:"main",userId:s.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${s.userId}_sub`)&&o.push(this.stopRemoteVideo({streamType:"sub",userId:s.userId}).catch(()=>{}))}),Promise.all(o)}return e.call(this,r)})}),Ye({getRemoteId:e=>`${e.userId}_${e.streamType}`})],fe.prototype,"stopRemoteVideo",1),X([Qi(e=>`v${e.userId}${e.streamType}`)],fe.prototype,"_stopRemoteVideo",1),X([Ut(...At.TRTC.muteRemoteAudio),Ye({getRemoteId:e=>e})],fe.prototype,"muteRemoteAudio",1),X([Jm(...At.TRTC.setRemoteAudioVolume),eg(200,e=>e),Ye({getRemoteId:e=>e})],fe.prototype,"setRemoteAudioVolume",1),X([qd("start"),Fi(e=>{var r;return(r=e.afterStart)==null?void 0:r.call(e)}),Xi((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),Ye({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>yl[e.getName()],ignoreLog:e=>e.getName()==="Debug"})],fe.prototype,"startPlugin",1),X([qd("update"),qo((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),Ye({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Al[e.getName()]})],fe.prototype,"updatePlugin",1),X([qd("stop"),Qi((e,r)=>{if(e.disableRandomCall)return null;let o=e.getGroup(r),s=e.getAlias();return o==="*"?new RegExp(`${s}.*`):s+o}),Ye({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>bl[e.getName()]})],fe.prototype,"stopPlugin",1),X([Jm(...At.TRTC.enableAudioVolumeEvaluation)],fe.prototype,"enableAudioVolumeEvaluation",1),X([Ye()],fe.prototype,"getVideoSnapshot",1),X([Ye()],fe.prototype,"_setCurrentSpeaker",1),X([Xi(e=>`a${e.userId}`,()=>!0)],fe.prototype,"_startRemoteAudio",1),X([Me(e=>function(r){return y(this,null,function*(){return r.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(o=>this._stopRemoteAudio(Ee(Z({},r),{userId:o.userId})).catch(()=>{}))):e.call(this,r)})}),Qi(e=>`a${e.userId}`)],fe.prototype,"_stopRemoteAudio",1),X([Qi("room")],fe.prototype,"_exitRoom",1),X([Qi("screen")],fe.prototype,"_stopScreenShare",1),X([Ut(...At.TRTC.sendSEIMessage),$m({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],fe.prototype,"sendSEIMessage",1),X([Ut(At.TRTC.sendCustomMessage),$m({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],fe.prototype,"sendCustomMessage",1),X([Ut(At.TRTC.create)],fe,"_create",1);var ip=fe,Ks=ip;var tu=class{constructor(t,e){u(this,"_flag");u(this,"terminalType");u(this,"userId");u(this,"tinyId");u(this,"role");u(this,"remoteAudioTrack");u(this,"remoteVideoTrack");u(this,"remoteAuxiliaryTrack");this.userId=e.userId||"",this.tinyId=e.tinyId||"",this.role=e.role||"audience",this.terminalType=e.terminalType,this.remoteAudioTrack=new Uo(t,this),this.remoteVideoTrack=new qi(t,this),this.remoteAuxiliaryTrack=new xd(t,this),this.flag=e.flag||0}get subscribeState(){let t={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?t.smallVideo=!0:t.video=!0),this.remoteAudioTrack.isSubscribed&&(t.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(t.auxiliary=!0),t}get muteState(){return Mn(this.flag,this.userId)}get flag(){return this._flag}set flag(t){if(t===this._flag)return;let e,r=this.muteState;this._flag=t;let o=this.muteState;for(e in o)r[e]!=o[e]&&console.log(this.userId,e,r[e],"->",o[e]);this.remoteAudioTrack.onFlagChanged(),this.remoteVideoTrack.onFlagChanged(),this.remoteAuxiliaryTrack.onFlagChanged()}};var op=class{constructor(){u(this,"_set",new Set);H.on(L.LEAVE_SUCCESS,this.delete,this)}add({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,e||t.roomId,t.sdkAppId,t.useStringRoomId);this._set.add(r)}delete({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,t.roomId||e,t.sdkAppId,t.useStringRoomId);this._set.delete(r)}getKey(t,e,r,o){return`${r}_${e}_${t}_${o}`}isJoined({userId:t,roomId:e,sdkAppId:r,room:o}){return o.scene==="rtc"?!1:this._set.has(this.getKey(t,e,r,o.useStringRoomId))}};function eS(){return y(this,null,function*(){let i,t;try{let _=yield Jt();i=_&&_.length}catch(_){}try{let _=yield Kt();t=_&&_.length}catch(_){}let e={microphone:i,camera:t},{isH264EncodeSupported:r,isVp8EncodeSupported:o,isH264DecodeSupported:s,isVp8DecodeSupported:n}=this.checkSystemResult.detail,d=Vi.basis(),p={webRTC:d.isWebRTCSupported,getUserMedia:d.isGetUserMediaSupported,webSocket:d.isWebSocketsSupported,screenShare:d.isScreenShareSupported,webAudio:d.isWebAudioSupported,h264Encode:r,h264Decode:s,vp8Encode:o,vp8Decode:n},m={browser:d.browser,os:d.os,trtc:p,devices:e},E={isWebCodecSupported:d.isWebCodecSupported,isMediaSessionSupported:d.isMediaSessionSupported,isWebTransportSupported:d.isWebTransportSupported};$e.uploadEvent({log:`trtcstats-${JSON.stringify(m)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(m)}`),$e.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(E)}`,userId:this.userId})})}function ag(){return Me(i=>{let t=new op;return function(e,r,o){return y(this,null,function*(){let s=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=r,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new he({code:te.INVALID_OPERATION,message:at({key:nt.INVALID_JOIN})});if(this.checkDestroy(),t.isJoined({userId:this.userId,roomId:s,sdkAppId:this.sdkAppId,room:this}))throw new he({code:te.INVALID_OPERATION,message:at({key:nt.REPEAT_JOIN,data:this.userId})});t.add({room:this,roomId:s}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${s} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),H.emit(L.JOIN_START,{room:this,roomId:s,params:e});let n=Lr.getEnv();n||(n=Jr.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(uc.OLD_CLOUD_LADDER)?n=Jr.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(uc.WEBRTC)&&(n=Jr.WEBRTC))),$e.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:s}),Vi.checkSystemRequirementsInternal().then(d=>{this.checkSystemResult=d,eS.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Lr.getEnv()&&(yield this.schedule(e,o));let d=yield i.call(this,e,r,o);return this.roomId=s,this._joinedTimestamp=Lr.performanceNow(),H.emit(L.JOIN_SUCCESS,{room:this}),o===30&&!e.component&&$e.uploadEvent({log:`stat-conv-${Number(Tr)}-${location.hostname}`,userId:this.userId}),d}catch(d){throw t.delete({room:this,roomId:s}),H.emit(L.JOIN_FAILED,{room:this,error:d}),d}})}})}var cg=()=>Me(i=>function(...t){return y(this,null,function*(){H.emit(L.LEAVE_START,{room:this}),yield i.call(this,...t),H.emit(L.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function dg(){return Me(i=>function(...t){return y(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(t=t.filter(r=>r.outMediaTrack&&r.state==="capture"),!t.length))return;H.emit("61",{room:this});let e=i.apply(this,t);return t.forEach(r=>r.publish(this,e)),e})})}function ug(){return Me(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>r.unpublish()),e})}function lg(){return Me(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>!r.isSubscribed&&r.subscribe(e)),e})}function tS({fn:i,context:t}){return function(...e){try{let r=i.apply(t,e);return Mi(r)?r.catch(o=>B.error(`${i.name}() error observed ${o}`)):r}catch(r){B.error(`${i.name}() error observed ${r}`)}}}var ru=class{constructor(t){u(this,"_frameWorkType");u(this,"_component");u(this,"_language");u(this,"connectionType");u(this,"_room");u(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});u(this,"_keyPrefix");u(this,"_log");u(this,"_intervalId");u(this,"_firstPublishedUserList");u(this,"_networkQuality");u(this,"_basicInfo");u(this,"_pathJoinRoom");u(this,"_pathLeaveRoom");u(this,"_pathMainVideoMap");u(this,"_pathMainAudioMap");u(this,"_pathAuxiliaryMap");u(this,"_remoteStreamStatMap");u(this,"_localStreamStat");u(this,"_eventMap",new Map);u(this,"_captureCostSum",0);u(this,"_captureCostCount",0);u(this,"isDestroyed",!1);this._frameWorkType=t.frameWorkType||30,this._component=t.component||0,this.connectionType=t.connectionType||1,this._language=t.language||0,this._room=t.room,this._keyPrefix="key_point",this._log=B.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&ze(this[e])&&(this[e]=tS({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,qn().then(t=>{this._basicInfo.string_os_version=So(),t?this._basicInfo.string_device_name=t.mobile?t.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(t,e){return this._eventMap.set(t,e),H.on(t,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(L.JOIN_START,this.handleJoinStart).addEvent(L.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(L.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(L.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(L.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(L.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(L.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(L.JOIN_FAILED,this.handleJoinFailed).addEvent(L.LEAVE_START,this.handleLeaveStart).addEvent(L.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(L.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(L.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(L.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(L.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(L.PUBLISH_START,this.handlePublishStart).addEvent(L.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(L.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(L.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(L.PLAY_TRACK_START,this.handlePlayStart).addEvent(L.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(L.PLAYER_STATE_CHANGED,({track:t,state:e,type:r})=>{!t.isRemote||!this.hitTest(t.room)||e==="PLAYING"&&(r===D.AUDIO?this.handleAudioPlaying(t):this.handleVideoPlaying(t))}).addEvent(L.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(L.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(L.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(L.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let o=e.hasAudio||e.hasVideo||e.hasSmall,s=e.hasAuxiliary,n=r.hasAudio||r.hasVideo||r.hasSmall,d=r.hasAuxiliary;!o&&n&&this.handleRemoteStreamAdded(r.userId,"main"),!s&&d&&this.handleRemoteStreamAdded(r.userId,"auxiliary")}).addEvent(L.SINGLE_CONNECTION_STAT,({room:t,stat:e})=>{this.hitTest(t)&&(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((t,e)=>H.off(e,t)),this._eventMap.clear()}destroy(){this.uninstallEvents(),St.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(t){this.hitTest(t.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),t.params&&($(t.params.frameWorkType)||(this._frameWorkType=t.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),$(t.params.component)||(this._component=t.params.component,this._basicInfo.uint32_component=this._component),$(t.params.language)||(this._language=t.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:t,detailCost:e}){if(this.hitTest(t)&&e){let{totalCost:r,local:o,dns:s,tcp:n,tls:d,request:p,response:m}=e;this._pathJoinRoom.int32_schedule_cost=r,this._pathJoinRoom.int32_schedule_local=o,this._pathJoinRoom.int32_schedule_dns=s,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=d,this._pathJoinRoom.int32_schedule_request=p,this._pathJoinRoom.int32_schedule_response=m}}handleSignalConnectionStart({room:t}){this.hitTest(t)&&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:t,error:e}){this.hitTest(t)&&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 he?Number(e.getExtraCode()||e.getCode()):te.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(t){this.hitTest(t.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(t){this.hitTest(t.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=t.code,t.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=t.room.getSignalInfo())}handleJoinFailed({room:t,error:e}){this.hitTest(t)&&(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(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=t.publishedUserList||[])}handleSendFirstVideoFrame({room:t}){this.hitTest(t)&&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(t){this.hitTest(t.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(t){this.hitTest(t.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(t){this.hitTest(t.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(t,e){var o;let r=`${t}_${e}`;if(!this._remoteStreamStatMap.has(r)){let s={userId:t,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:Ee(Z({},rS),{msg_user_info:new xa({userId:t,tinyId:(o=this._room.remotePublishedUserMap.get(t))==null?void 0:o.tinyId,role:20})})};s.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(r,s)}}handleSubscribeStart({room:t,remotePublishedUser:e,streamType:r,subscribeState:o}){if(!this.hitTest(t))return;let{userId:s,tinyId:n,role:d}=e,p=new xa({userId:s,tinyId:n,role:d==="anchor"?20:21}),m=Date.now(),E=`${s}_${r}`,_=this._remoteStreamStatMap.get(E);_&&_.subscribeStartTime===0&&(_.subscribeStartTime=m),r==="main"?(e.muteState.hasVideo&&(o.video||o.smallVideo)&&!this._pathMainVideoMap.has(E)&&this._pathMainVideoMap.set(E,{statsToReport:{msg_user_info:p,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:s,sendSubscribeCMDTime:m}),e.muteState.hasAudio&&o.audio&&!this._pathMainAudioMap.has(E)&&this._pathMainAudioMap.set(E,{statsToReport:{msg_user_info:p,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:s,sendSubscribeCMDTime:m})):e.muteState.hasAuxiliary&&o.auxiliary&&!this._pathAuxiliaryMap.has(E)&&this._pathAuxiliaryMap.set(E,{sendSubscribeCMDTime:m})}handleSubscribed({room:t,remotePublishedUser:e,streamType:r}){if(this.hitTest(t)){let o=`${e.userId}_${r}`,s=this._remoteStreamStatMap.get(o);s&&s.subscribedTime===0&&(s.subscribedTime=Date.now())}}handlePlayStart({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._remoteStreamStatMap.get(e);(r==null?void 0:r.playStreamTime)===0&&(r.playStreamTime=Date.now())}handleVideoLoadedData({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._pathMainVideoMap.get(e);r&&r.statsToReport.uint64_combine_first_frame_time===0&&(r.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(t){let e=`${t.userId}_${t.streamType}`,r=Date.now(),o=this._pathMainVideoMap.get(e),s=this._remoteStreamStatMap.get(e);if(s){let{statsToReport:n}=s;if(!n.uint32_video_render_first&&t.streamType==="main"?this.hasVideoFlag(t.userId):this.hasAuxFlag(t.userId)){let d=r-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=d,Y.addNumber({key:516820,value:d})}}(o==null?void 0:o.statsToReport.uint64_render_first_frame_time)===0&&(o.statsToReport.uint64_render_first_frame_time=r)}handleAudioPlaying(t){let e=`${t.userId}_${t.streamType}`,r=this._pathMainAudioMap.get(e);r&&r.statsToReport.uint64_play_first_frame_time===0&&(r.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(t){this.hitTest(t.room)&&(this._networkQuality.totalUplinkLoss+=t.uplink.loss,this._networkQuality.totalUplinkRTT+=t.uplink.rtt,this._networkQuality.count++,t.downlinks.forEach(({rtt:e,loss:r,userId:o,videoDelay:s,audioDelay:n})=>{let d=this._networkQuality.totalDownlinkRTTAndLossMap.get(o);if(d)d.totalRTT+=e,d.totalLoss+=r,s&&(d.totalVideoDelay=(d.totalVideoDelay||0)+s,d.videoDelayCount=(d.videoDelayCount||0)+1),n&&(d.totalAudioDelay=(d.totalAudioDelay||0)+n,d.audioDelayCount=(d.audioDelayCount||0)+1),d.count++;else{let p,m,E,_;s&&(m=s,E=1),n&&(p=n,_=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(o,{totalRTT:e,totalLoss:r,count:1,totalAudioDelay:p,totalVideoDelay:m,audioDelayCount:_,videoDelayCount:E})}}))}handleHeartbeatStats(t){if(this.hitTest(t.room)){let{msg_device_info:e,msg_up_stream_info:r,msg_down_stream_info:o}=t.report;if(r.msg_video_status[0]){let{uint32_video_codec_bitrate:s,uint32_video_enc_fps:n,uint32_video_width:d,uint32_video_height:p}=r.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=s,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=d,this._localStreamStat.totalVideoHeight+=p,this._localStreamStat.videoCount++}if(r.msg_audio_status){let{uint32_audio_level:s}=r.msg_audio_status;Math.floor(s/ri*100)>0&&(this._localStreamStat.totalAudioLevel+=s/ri,this._localStreamStat.audioLevelCount++)}o.forEach(s=>{let{msg_user_info:n,msg_audio_status:d,msg_video_status:p}=s,m=n.str_identifier,E=this._room.remotePublishedUserMap.get(m);if(p.forEach(_=>{let b=_.uint32_video_stream_type===2,C=_.uint32_video_stream_type===7,k=`${m}_${b?"main":"auxiliary"}`,x=this._remoteStreamStatMap.get(k);if(x&&(b&&(E!=null&&E.remoteVideoTrack.isSubscribed)||C&&(E!=null&&E.remoteAuxiliaryTrack))){x.totalVideoFPS+=_.uint32_video_receive_fps,x.totalVideoBitrate+=_.uint32_video_codec_bitrate,x.videoCount++,x.statsToReport.uint32_video_width===0&&(x.statsToReport.uint32_video_width=_.uint32_video_width),x.statsToReport.uint32_video_height===0&&(x.statsToReport.uint32_video_height=_.uint32_video_height);let P=b?E.remoteVideoTrack:E.remoteAuxiliaryTrack;P.stat.jitterBufferDelay&&(x.videoJitterBufferDelay=P.stat.jitterBufferDelay),P.stat.framesReceived&&(x.statsToReport.uint32_video_consume_render_rate=Math.floor(P.stat.framesDecoded/P.stat.framesReceived*_n(10,6)))}}),!hs(d)){let _=`${m}_main`,b=this._remoteStreamStatMap.get(_);this._remoteStreamStatMap.has(_)&&b&&E!=null&&E.remoteAudioTrack.isSubscribed&&(b.totalAudioBitrate+=d.uint32_audio_codec_bitrate,b.audioCount++,E.remoteAudioTrack.stat.jitterBufferDelay&&(b.audioJitterBufferDelay=E.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(d.uint32_audio_level/ri*100)>0&&(b.totalAudioLevel+=d.uint32_audio_level/ri,b.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:t}){this.hitTest(t)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:t}){t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:t}){t.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()),t.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:t,error:e}){let o={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof he?e.getExtraCode()||e.getCode():te.UNKNOWN);t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=o,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=o,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&us)>=0}hasAudioFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&ls)>=0}hasAuxFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&An)>=0}hitTest(t){return t===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 t=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=t<<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((t,e)=>{let{userId:r}=t,o=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(o){let{totalLoss:E,count:_,audioDelayCount:b,videoDelayCount:C,totalAudioDelay:k,totalVideoDelay:x}=o;t.statsToReport.uint32_avg_down_loss=Math.floor(E/_),b&&k&&(t.statsToReport.uint32_audio_network_p2p_delay=Math.floor(k/b),t.audioJitterBufferDelay&&(t.statsToReport.uint32_p2p_delay=Math.floor(t.statsToReport.uint32_audio_network_p2p_delay+t.audioJitterBufferDelay))),C&&x&&(t.statsToReport.uint32_video_network_p2p_delay=Math.floor(x/C))}t.videoCount>0&&(t.statsToReport.uint32_video_avg_fps=Math.floor(t.totalVideoFPS/t.videoCount),t.statsToReport.uint32_video_avg_bitrate=Math.floor(t.totalVideoBitrate/t.videoCount)),t.audioCount>0&&(t.statsToReport.uint32_audio_recv_bitrate=t.statsToReport.uint32_audio_bitrate=Math.floor(t.totalAudioBitrate/t.audioCount)),t.audioLevelCount>0&&(t.statsToReport.uint32_audio_play_db=Math.floor(t.totalAudioLevel/t.audioLevelCount*100));let{callDurationCalculator:s}=this._room;s&&(t.statsToReport.uint32_audio_play_time=s.getDuration(e,D.AUDIO),t.statsToReport.uint32_video_play_time=s.getDuration(e,D.VIDEO)),t.statsToReport.uint32_video_render_first&&(t.statsToReport.uint32_video_render_first=Math.min(t.statsToReport.uint32_video_render_first,zo));let{badCaseDetector:n}=this._room,{dataFreeze:d,count:p}=n.getDataFreezeDuration(e),{renderFreeze:m}=n.getRenderFreezeDuration(e);t.statsToReport.uint32_video_block_count=p,t.statsToReport.uint32_video_block_time=Math.min(d,t.statsToReport.uint32_video_play_time),t.statsToReport.uint32_video_external_block_time=Math.min(m,t.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&t.statsToReport.uint32_video_avg_fps===0?t.statsToReport.uint32_video_black_screen_subjective=1:t.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((t,e)=>{if(!this.hasAudioFlag(t.userId)){this._pathMainAudioMap.delete(e);return}t.statsToReport.uint64_play_first_frame_time-t.statsToReport.uint64_start_enter_time>zo&&(t.statsToReport.uint64_play_first_frame_time=t.statsToReport.uint64_start_enter_time+zo)}),this._pathMainVideoMap.forEach((t,e)=>{if(!this.hasVideoFlag(t.userId)){this._pathMainVideoMap.delete(e);return}t.statsToReport.uint64_render_first_frame_time-t.statsToReport.uint64_start_enter_time>zo&&(t.statsToReport.uint64_render_first_frame_time=t.statsToReport.uint64_start_enter_time+zo)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>zo&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+zo)}getReportData(){this._basicInfo.uint32_networkType=fc();let t={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new xa({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:fs(this._signalInfo.relayIp),uint32_client_ip:fs(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*_n(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:fs(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return On(t),t}report(){return y(this,null,function*(){try{this.prepareReport();let t=this.getReportData();yield this.upload(t),this.initData()}catch(t){this._log.warn(t)}finally{this.isDestroyed&&(this._room=null)}})}upload(t){return y(this,null,function*(){if(t.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),r=yield Hu(t),o=r instanceof ArrayBuffer,s=`${Qr(e,wi.KEY_POINT)}&gzip=${+o}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,r));let d=[this.uploadKVStat(Y),this.uploadKVStat(No)];n||d.push(Yr({url:s,body:r,priority:"low"})),yield Promise.all(d)})}setConnectionType(t){this.connectionType=t,this._basicInfo.uint32_connection_type=t}uploadKVStat(t){return y(this,null,function*(){let e=t.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=Ee(Z({},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 r=yield Hu(e),o=`${Qr(+this._room.sdkAppId,wi.KV_STAT)}&gzip=${+(r instanceof ArrayBuffer)}`,s=!1;navigator.sendBeacon&&(s=navigator.sendBeacon(o,r)),s||Yr({url:o,body:r})})}};X([Bi({settings:{timeout:500,retries:3}})],ru.prototype,"upload",1);var zo=5e3,rS={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},xa=class{constructor(t){u(this,"str_identifier");u(this,"str_tinyid");u(this,"uint32_role");this.str_identifier=String(t.userId),this.str_tinyid=String(t.tinyId||0),this.uint32_role=t.role}},mg=ru;var sp=class{constructor(){u(this,"_startTime");u(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=_e())}stop(){this._endTime===0&&(this._endTime=_e())}getDuration(){return this._endTime===0?_e()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},iu=sp;var np=class{constructor(t){u(this,"_room",null);u(this,"_durationMap");u(this,"_eventMap",new Map);this._room=t.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(L.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(L.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(L.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{var n;let{userId:o}=r;if(!this.hitTest(t))return;e.hasAudio&&!r.hasAudio&&this.stopDurationItem(`${o}_main`,D.AUDIO),e.hasVideo&&!r.hasVideo&&this.stopDurationItem(`${o}_main`,D.VIDEO),e.hasAuxiliary&&!r.hasAuxiliary&&this.stopDurationItem(`${o}_auxiliary`,D.VIDEO);let s=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(o);s&&(!e.hasAudio&&r.hasAudio&&s.remoteAudioTrack.isSubscribed&&this.addDuractionItem(o,D.AUDIO,"main"),!e.hasVideo&&r.hasVideo&&s.remoteVideoTrack.isSubscribed&&this.addDuractionItem(o,D.VIDEO,"main"),!e.hasAuxiliary&&r.hasAuxiliary&&s.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(o,D.VIDEO,"auxiliary"))}),this._eventMap.forEach((t,e)=>H.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>H.off(e,t,this)),this._eventMap.clear()}handleSubscribed({track:t}){if(!this.hitTest(t.room))return;let{userId:e,streamType:r,kind:o}=t;t.isSubscribed?this.addDuractionItem(e,o,r):this.stopDurationItem(`${e}_${r}`,o)}handleUnsubscribed({track:t}){this.hitTest(t.room)&&this.stopDurationItem(`${t.userId}_${t.streamType}`,t.kind)}isRecording(t){return t.findIndex(e=>e.endTime===0)>=0}addDuractionItem(t,e,r){let o=`${t}_${r}`,s=new iu,n=this._durationMap.get(o);n?this.isRecording(n[e])||n[e].push(s):this._durationMap.set(o,{userId:t,type:r,audio:e===D.AUDIO?[s]:[],video:e===D.AUDIO?[]:[s]})}stopDurationItem(t,e){if(this._durationMap.has(t)){let o=this._durationMap.get(t)[e].find(s=>s.endTime===0);o&&o.stop()}}hitTest(t){return this._room===t}getDuration(t,e){return this._durationMap.has(t)?this._durationMap.get(t)[e].reduce((o,s)=>o+s.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},pg=np;var ap=class{constructor(t){u(this,"_room");u(this,"_renderFreezeMap",new Map);u(this,"_isVideoPlayingEventFiredMap",new Map);u(this,"_dataFreezeMap",new Map);u(this,"_monitorFreezeData",new Map);u(this,"_eventMap",new Map);this._room=t.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(L.LEAVE_SUCCESS,({room:t})=>{this.hitTest(t)&&this.stop()}).set(L.PLAY_TRACK_START,this.onPlayTrackStart).set(L.UNSUBSCRIBE_SUCCESS,({room:t,streamType:e,remotePublishedUser:r})=>{if(!this.hitTest(t))return;let{userId:o}=r,s=`${o}_${e}`;this.stopDataFreeze({key:s,userId:o,type:e})}).set(L.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let{userId:o}=r;if(e.hasVideo&&!r.hasVideo){let s="main",n=`${r.userId}_${s}`;this.stopDataFreeze({key:n,userId:o,type:s})}if(e.hasAuxiliary&&!r.hasAuxiliary){let s="auxiliary",n=`${r.userId}_${s}`;this.stopDataFreeze({key:n,userId:o,type:s})}}).set(L.PLAYER_STATE_CHANGED,({track:t,state:e,reason:r,type:o})=>{if(!(!t.isRemote||!t.room||!this.hitTest(t.room)||o!==D.VIDEO)){if(e==="PLAYING"){let s=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.set(s,!0)}r===D.MUTE?this.onVideoTrackMuted(t):r===D.UNMUTE&&this.onVideoTrackUnmuted(t)}}).set(L.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((t,e)=>H.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>H.off(e,t,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`,s=this._dataFreezeMap.get(o),n=new iu;s?s.durationItemList.push(n):this._dataFreezeMap.set(o,{userId:e,type:r,durationItemList:[n],isFreezing(){let d=this.durationItemList[this.durationItemList.length-1];return d&&d.endTime===0}})}onVideoTrackUnmuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`;this.stopDataFreeze({key:o,userId:e,type:r})}onHearBeatReport({room:t,report:e}){this.hitTest(t)&&e.msg_down_stream_info.forEach(r=>{let o=this._room.remotePublishedUserMap.get(r.msg_user_info.str_identifier);if(!o)return;let{userId:s,muteState:n}=o;r.msg_video_status.forEach(d=>{d.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&o.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:d.uint32_video_dec_fps,type:"main"}),d.uint32_video_stream_type===7&&n.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:d.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:t,userId:e,type:r}){let o=this._dataFreezeMap.get(t);if(!o||!o.isFreezing())return;let s=o.durationItemList[o.durationItemList.length-1];s.stop();let n=s.getDuration();n>pc?this._monitorFreezeData.set(t,{userId:e,type:r,duration:n}):o.durationItemList.pop()}getTotalDuration(t){return t.reduce((e,r)=>{let o=r.getDuration();return e+Math.min(o,5e3)},0)}handleRenderFreeze(o){return y(this,arguments,function*({userId:t,fps:e,type:r}){let s=`${t}_${r}`,n=this._renderFreezeMap.get(s);if(e<=2){let d=_e();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:d,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(s,{userId:t,type:r,isFreeze:!0,freezeTimeline:[{startTime:d,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let d=n.freezeTimeline.pop();if(d){d.endTime=_e();let p=d.endTime-d.startTime;n.freezeTimeline.push(d),n.renderFreezeTotal+=Math.min(5e3,p)}}})}onPlayTrackStart({track:t}){if(!t.isRemote||!this.hitTest(t.room)||t.kind!==D.VIDEO||!t.isRemotePublished)return;let e=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(t){let e={dataFreeze:0,count:0},r=this._dataFreezeMap.get(t);if(r){if(r.isFreezing()){let o=r.durationItemList[r.durationItemList.length-1];o.stop(),o.getDuration()<pc&&r.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(r.durationItemList),e.count=r.durationItemList.length}return e}getRenderFreezeDuration(t){let e=this._renderFreezeMap.get(t),r=0,o=0;if(e)if(!e.isFreeze)r=e.renderFreezeTotal;else{let s=_e(),n=e.freezeTimeline[e.freezeTimeline.length-1],d=s-n.startTime;r=e.renderFreezeTotal+Math.min(d,5e3),o=e.freezeTimeline.length}return{renderFreeze:r,count:o}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(t){return this._isVideoPlayingEventFiredMap.has(t)?!this._isVideoPlayingEventFiredMap.get(t):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(t){return t===this._room}destroy(){this.uninstallEvents()}},hg=ap;var gg=Di(Ui(),1);var iS=[1,0,0,0,1,1,0,1],ou=class extends Ft{constructor(t,e){if(super(t,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"mirror",logger:e}),t instanceof yt)try{this.setTexBuffer(iS)}catch(r){t.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${r.message||r}`}))}}draw2d(t,e,r,o,s){if(this.ctx2d){this.ctx2d.save(),this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0);let n=super.draw2d(t,e,r,o,s);return this.ctx2d.restore(),n}return!1}render(t){var e;return(e=this.input)!=null&&e.requestFrame(t)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}};var cp=class{constructor(t,e){this.node=t;this.layout=e;u(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}},su=class extends Ft{constructor(e,r){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:r});u(this,"inputs",[])}addInput(e,r){if(this.inputs[r.zIndex])throw new Error("input already exists");let o=new cp(e,r);this.inputs[r.zIndex]=o}resize(e,r){let o=this.inputs.reduce((s,n)=>n?Object.assign(s,{width:Math.max(s.width,n.right),height:Math.max(s.height,n.bottom)}):s,{width:0,height:0});super.resize(o.width,o.height),this.context instanceof yt&&this.inputs.forEach(s=>{if(s){let n=this.layout2texCoords(s);s.positionBuffer?this.changeBufferData(s.positionBuffer,n):s.positionBuffer=this.createBuffer(n)}})}connect(e,...r){return super.connect(e,...r),this.resize(0,0),e}removeInput(e){this.inputs[this.inputs.findIndex(r=>(r==null?void 0:r.node)===e)]=void 0}render(e){let r=this.context.ctx;if(r.clearColor(0,0,0,0),!this.inputs.reduce((s,n)=>(!n||!n.node.requestFrame(e))&&s,!0)&&r){this.useProgram(),r.enable(r.BLEND),r.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let s=0;s<this.inputs.length;s++){let n=this.inputs[s];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(!this.inputs.reduce((o,s)=>(!s||!s.node.requestFrame(e))&&o,!0)&&this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height);for(let o=0;o<this.inputs.length;o++){let s=this.inputs[o];s&&this.draw2d(s.node.image,s.x,s.y,s.width,s.height)}return!0}return!1}getInfo(){let{totalFrames:e,x:r,y:o,width:s,height:n,name:d}=this,p=Date.now(),m=(e-this.lastInfo.totalFrames)/((p-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:p,fps:m,name:d},Z({parent:this.inputs.filter(E=>E).map(E=>E.node.getInfo())},this.lastInfo)}close(){super.close(),this.inputs.forEach(e=>{var r,o;if(e&&((r=e.node)==null||r.disconnect(),e.positionBuffer&&this.context instanceof yt))try{(o=this.context.ctx)==null||o.deleteBuffer(e.positionBuffer)}catch(s){}})}};var oS=`#version 300 es
|
|
69
101
|
in vec2 a_position;
|
|
70
102
|
in vec2 a_texCoord;
|
|
71
103
|
out vec2 v_texCoord;
|
|
72
104
|
void main() {
|
|
73
105
|
gl_Position = vec4(a_position.x, a_position.y, 0, 1);
|
|
74
106
|
v_texCoord = a_texCoord;
|
|
75
|
-
}`,
|
|
107
|
+
}`,sS=`#version 300 es
|
|
76
108
|
precision highp float;
|
|
77
109
|
uniform sampler2D u_texture;
|
|
78
110
|
uniform sampler2D mask;
|
|
@@ -81,7 +113,7 @@ in vec2 v_texCoord;
|
|
|
81
113
|
out vec4 outColor;
|
|
82
114
|
void main() {
|
|
83
115
|
outColor = vec4(texture(u_texture, v_texCoord).rgb, texture(mask, v_texCoord).a);
|
|
84
|
-
}`,
|
|
116
|
+
}`,nu=class extends li{constructor(e,r){super(e,r.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,logger:e.log});u(this,"_bgTexture");u(this,"_waterMarkTexture");u(this,"_lastMaskTexture");u(this,"_lastMaskFbo");u(this,"_textureValid",!1);u(this,"_selfieTextureValid",!1);u(this,"_selfieSegmentation");u(this,"wasm");u(this,"_prePrograme");u(this,"_segmentationMask");u(this,"_weixin",!1);r.selfieSegmentation&&(this._selfieSegmentation=r.selfieSegmentation,this._selfieSegmentation.onResults=this.onPredict.bind(this));try{this.init(r)}catch(o){e.log.error(o),e.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${o.message||o}`}))}}init(e){let r=e.Wasm,o=this.context.ctx;if(this.wasm=new r.AllIn1(o),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:s,y:n,width:d,height:p}=e.waterMark;this.wasm.setWaterMark(s,n,d,p)}if(e.beautyParams){let{beauty:s,brightness:n,ruddy:d}=e.beautyParams;this.wasm.setBeauty(s,n,d,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),o.uniform1i(o.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(o.uniform1i(o.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(o.uniform1i(o.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image)),o.uniform1i(o.getUniformLocation(this.program,"lastMask"),4),this._weixin){let s=this.context.createShader(o.FRAGMENT_SHADER,sS),n=this.context.createShader(o.VERTEX_SHADER,oS);this._prePrograme=this.context.createProgram(n,s),o.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),o.uniform1i(o.getUniformLocation(this._prePrograme,"mask"),1)}}onPredict(e){var o;let r=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(),r.activeTexture(r.TEXTURE1),(o=this._selfieSegmentation)==null||o.bindTexture2d(e),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this._bgTexture||null),r.activeTexture(r.TEXTURE3),r.bindTexture(r.TEXTURE_2D,this._waterMarkTexture||null),this.useBufferFrame(),r.drawArrays(r.TRIANGLE_STRIP,0,4),this._segmentationMask=e,this.totalFrames++}render(e){var p,m,E,_;let r=this.context.ctx,{image:o}=this;this.tryVideoFrameCallback(o);let{videoWidth:s,videoHeight:n}=o;if(s===0||n===0)return!1;o.width=s,o.height=n;let d=!1;if(this.totalFrames)this._weixin?this.useTexture():(p=this._selfieSegmentation)==null||p.bindTexture(),d=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;d=this._textureValid,this._textureValid=!0}return this.width!==s||this.height!==n||!d?(this.resize(s,n),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,o)):r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,o),this._weixin&&(r.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask&&(r.activeTexture(r.TEXTURE1),(m=this._selfieSegmentation)==null||m.bindTexture2d(this._segmentationMask),r.bindFramebuffer(r.FRAMEBUFFER,this._lastMaskFbo||null)),r.drawArrays(r.TRIANGLE_STRIP,0,4),(E=this._selfieSegmentation)==null||E.bindTexture(),this._segmentationMask?r.copyTexSubImage2D(r.TEXTURE_2D,0,0,0,0,0,s,n):r.copyTexImage2D(r.TEXTURE_2D,0,r.RGBA,0,0,s,n,0)),(_=this._selfieSegmentation)==null||_.send(s,n),this.totalFrames||(r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this._bgTexture||null),r.activeTexture(r.TEXTURE3),r.bindTexture(r.TEXTURE_2D,this._waterMarkTexture||null),r.drawArrays(r.TRIANGLE_STRIP,0,4)),!1}close(){var r;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),(r=this.wasm)==null||r.close()}};var au=class extends Ft{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
|
|
85
117
|
precision highp float;
|
|
86
118
|
uniform sampler2D ySampler;
|
|
87
119
|
uniform sampler2D uSampler;
|
|
@@ -106,13 +138,4 @@ void main() {
|
|
|
106
138
|
void main() {
|
|
107
139
|
gl_Position = vertexPos;
|
|
108
140
|
textureCoord = texturePos;
|
|
109
|
-
}`});c(this,"yTextureRef");c(this,"uTextureRef");c(this,"vTextureRef");c(this,"Y");c(this,"U");c(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 lu=[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")},oc=class{constructor(i){c(this,"trackDoneOB");c(this,"startOB");c(this,"stopOB");c(this,"decoder");c(this,"videoContext");c(this,"gop",0);c(this,"gop_helper",0);c(this,"waitFirstKeyFrame",!0);c(this,"startTimestamp",0);c(this,"startTime",0);c(this,"startPerformanceTime",0);c(this,"inputFrameCount",0);c(this,"decodedFrameCount",0);c(this,"downgradeLevel",0);c(this,"config");c(this,"videoElement");c(this,"type","wasm");c(this,"renderer","2d");c(this,"wasmOption");c(this,"createDecoder");c(this,"_decodeSink");c(this,"isReported",!1);let{track:e,createDecoder:t}=i;if(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=Ie(e,Q.INIT),this.stopOB=st(this.trackDoneOB),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),this.startOB=st();let r=st(),o;_e(r,Il((a,d)=>(a!==d&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:o,prevState:a,state:d}),d),"INITIALIZED"),xe(this.stopOB),Ne());let n=a=>{let d=this.pipe(e);return r.next("STARTING"),e.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`),_e(d,xe(this.stopOB),Ne(()=>{e.stat.framesDecoded++},l=>{if(e.log.error(l),N.addFailedEvent({key:ip(this.type,this.renderer),error:l}),a>4)this.startOB.error(l);else{switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.startOB.next(a+1)}})),_e(d,Li(1),Uo(vr))};_e(this.startOB,Nr(0),Zi(n),xe(this.stopOB),Ne(()=>{e.player.handlePlaying("canvas"),r.next("STARTED")},a=>{o=a,r.next("FAILED")},()=>{N.addSuccessEvent({key:ip(this.type,this.renderer)}),N.addSuccessEvent({key:514704})}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.startOB.next(0)}close(i){this.stopOB.next(i)}changeRenderer(i){this.renderer=i,this.renderer==="videoFrame"&&!Td()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(i){var r;if(this.inputFrameCount++,((r=this.decoder)==null?void 0:r.state)!=="configured")return i;let e=i.type==="key",{timestamp:t}=i;if(e?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder&&this.decoder.state==="configured"){if(this.waitFirstKeyFrame)if(e)this.waitFirstKeyFrame=!1,this.startTimestamp=t,this.startTime=Date.now(),this.startPerformanceTime=L();else return;let o=(t-this.startTimestamp)/90,a=Date.now()-this.startTime-o,d=a<500?0:a/1e3>>0;switch(e&&(d>0?this.downgradeLevel++:this.downgradeLevel>3&&this.downgradeLevel--),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.decoder.decode(i);return}return i}pipe(i){return Mi()(e=>f(this,null,function*(){this._decodeSink=e,e.defer(()=>{var o,n;(o=this.decoder)==null||o.close(),(n=this.videoContext)==null||n.destroy(),delete this._decodeSink});let{renderer:t,type:r}=this;try{switch(r){case"wasm":this.decoder=this.createDecoder(r,this.wasmOption);break;case"webCodecs":for(let o=0;o<=lu.length;o++){let{supported:n}=yield VideoDecoder.isConfigSupported(this.config);if(n)break;if(o===lu.length){e.error(3);return}lu[o](this.config)}this.decoder=this.createDecoder(r);break;case"mse":throw new Error("not supported yet")}if(this.decoder.on("videoFrame",o=>{this.decodedFrameCount++,e.next(o)}),this.decoder.on("error",o=>{i.log.error(o),e.error(r==="webCodecs"?4:8)}),yield this.decoder.initialize(this.videoElement),this.decoder.configure(this.config),r==="wasm"&&t==="webgl"){this.videoContext=new ke({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create(),this.videoContext.on(ke.UNAVAILABLE,n=>{i.log.error(n),e.error(7)});let o=new sc(this.videoContext);this.decoder.on("videoCodecInfo",n=>o.resize(n.width,n.height)),this.decoder.on("videoFrame",n=>{[o.Y,o.U,o.V]=n,this.downgradeLevel===1?this.decodedFrameCount%2===0&&o.render(this.decodedFrameCount):o.render(this.decodedFrameCount)}),i.source=o,i.player.setCanvas(this.videoContext._canvas,2)}else if(t==="videoFrame"){i.player.setCanvas();let o=new MediaStreamTrackGenerator({kind:"video"}),n=o.writable.getWriter();i.setInputMediaStreamTrack(o),this.decoder.on("videoFrame",a=>{n.write(a)}),o.onmute=()=>{e.error(r==="webCodecs"?5:9)},e.defer(()=>o.onmute=null)}else{this.videoContext=new He({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create({alpha:!1});let o=this.videoContext.createVideoImageSource();this.decoder.on("videoFrame",a=>{o.image=a,o.update()});let n=new Or(this.videoContext,{name:"remotePlayer",logger:i.log});o.connect(n),i.source=o,i.player.setCanvas(this.videoContext._canvas,2)}}catch(o){i.log.error(o),e.error(r==="webCodecs"?2:6)}}))}};var Ko=class extends rp.EventEmitter{constructor(e){super();this.room=e;c(this,"videoContext");c(this,"_glVideoContext");c(this,"_2dVideoContext");c(this,"destination");c(this,"smallVideoContext");c(this,"smallDestination");c(this,"smallTrackSource");c(this,"smallImageSource");c(this,"_isMirror",!1);c(this,"cameraTrack");c(this,"cameraNode");c(this,"mirrorNode");c(this,"mixNode");c(this,"screenTrack");c(this,"screenNode");c(this,"selfModel",!1);c(this,"blurRadius",3);c(this,"arTrack");c(this,"Wasm");c(this,"waterMarkNode");c(this,"_waterMarkOption");c(this,"watermarkImageList",[]);c(this,"_beautyParams");c(this,"isUsingArTrack",!1);c(this,"_isMixScreen",!1);c(this,"_virtualBackground");c(this,"_virtualBackgroundAbortCallback");c(this,"virtualBackgroundInstance");c(this,"_bgAssetPath");c(this,"log",C.createLogger({id:"vm"}));c(this,"_checkId",0);c(this,"_use2d",!1);c(this,"_autoSwitchRenderMode",!0);c(this,"_selfieSegmentation");c(this,"encodePipeline",[]);c(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new He({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 He({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new ke({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("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=re.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(),re.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Wi||this._isMixScreen||this._isMirror||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",t){let r=e==="videoCtxGl"?512700:512701;t?N.addFailedEvent({key:r,error:t}):N.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 ke({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()}_setMainOutput(e){var t;try{let r=this.cameraTrack,{small:o,settings:n,player:a}=r;o?(this.smallVideoContext.available||(this.smallVideoContext.create({alpha:!1}),this.smallDestination=new Ma(this.smallVideoContext,o,this.log)),this.smallVideoContext.frameRate=o.frameRate,this.smallDestination.resolution=o,e?(this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=e:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(e),this.smallImageSource.connect(this.smallDestination))):(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource?this.smallTrackSource.replaceTrack(this.initialTrack):(this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource"),this.smallTrackSource.width=n.width,this.smallTrackSource.height=n.height,this.smallTrackSource.connect(this.smallDestination)))):this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource),Wi&&a.setCanvas(e);let d=e&&((t=this.destination)==null?void 0:t.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),d=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${d?d.label:"no output track"}`),r.setOutputMediaStreamTrack(d)}catch(r){this.log.error("set main output failed",r)}}update(){return f(this,null,function*(){var r,o;if(!this.cameraTrack||!this.cameraTrack.mediaTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:e,profile:t}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams?(this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),at===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof Pi?(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 Pi?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(e.width,e.height)):(this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new ka(this.videoContext,{name:"mainDestination",logger:this.log}),this.cameraNode=new rc(this.videoContext,{input:this.cameraTrack.mediaTrack,width:e.width,height:e.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=t.frameRate,this._use2d){let n=this.cameraNode;n.disconnect(),this._isMirror&&(this.mirrorNode||(this.mirrorNode=new tc(this.videoContext,this.log)),n=n.connect(this.mirrorNode),n.disconnect(),this.log.info("start mirror")),this.mixNode&&this.mixNode.close(),delete this.mixNode,(this._isMixScreen||this._hasWaterMark)&&(this.mixNode=new ic(this.videoContext,this.log),n.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),(r=this.waterMarkNode)==null||r.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&!this.screenNode&&(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource")),(o=this.screenNode)==null||o.connect(this.mixNode,{zIndex:0}),n=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)),n.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 rt)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof Fe)return this.log.info("change video input",(r=e.mediaTrack)==null?void 0:r.label),this.setCameraTrack(e);if(e instanceof si){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 rt?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Fe?(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof si&&e.source&&e.source.context.destroy()}setCameraTrack(e){return f(this,null,function*(){this.cameraTrack=e,this.update()})}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 f(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 b({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:d,width:l,height:m})=>{o.drawImage(n,a,d,l,m)}),Qr(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 f(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return f(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return f(this,null,function*(){var u,p;let t;try{t=yield Qr((e==null?void 0:e.imageElement)||e.imageUrl)}catch(_){throw new b({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:d="watermark",zIndex:l=2}=e;this.watermarkImageList.some(_=>_.type===d)?(this.watermarkImageList=this.watermarkImageList.filter(_=>_.type!==d),this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:l,type:d,imageUrl:e.imageUrl}),t=yield this.getWatermarkImage((u=this.cameraTrack)==null?void 0:u.settings.width,(p=this.cameraTrack)==null?void 0:p.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:d,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(_,I)=>_==="imageUrl"?void 0:I))})}deleteWatermark(e="watermark"){return f(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 f(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 f(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 Qr(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 b({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 f(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 oc(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}};y([la(function(e){this.log.error("update failed",e)})],Ko.prototype,"update",1);var bT=0;var nc=class extends Q{constructor(e){super("room");c(this,"seq",++bT);c(this,"sdkAppId");c(this,"userId");c(this,"userSig");c(this,"privateMapKey");c(this,"latencyLevel");c(this,"tinyId");c(this,"scene");c(this,"roomId");c(this,"useStringRoomId");c(this,"role","anchor");c(this,"joinParams",null);c(this,"localTracks",new Set);c(this,"enableAutoPlayDialog",!0);c(this,"autoReceiveAudio",!0);c(this,"autoReceiveVideo",!0);c(this,"proxy_ws");c(this,"proxy_wt");c(this,"proxy_unified");c(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}});c(this,"keyPointManager");c(this,"audioManager");c(this,"videoManager");c(this,"callDurationCalculator");c(this,"badCaseDetector");c(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});c(this,"videoDecodeFallbackType");c(this,"_isUsingCachedSchedule",!1);c(this,"_log",C.createLogger({id:`r${this.seq}`}));c(this,"_joinedTimestamp",0);c(this,"_sdkType");c(this,"heartbeatReport");c(this,"quality");c(this,"enableSEI");c(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,he(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),he(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),he(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new Zm({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new ep({room:this}),this.badCaseDetector=new tp({room:this}),this.audioManager=new fa(this),this.videoManager=new Ko(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 f(this,null,function*(){return this.publish(e)})}removeTrack(e){return f(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return f(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(Ye(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?(Ua([a,a]),sr(`https://${a}`)):(o&&sr(o),n&&Ua(n))}E.once(T.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:wt.main,sched_back_domain:wt.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return f(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(t=>{e[t.userId]=t.remoteAudioTrack.stat}),e})}getTransportStats(){return f(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 f(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 b({code:S.INVALID_OPERATION,message:U({key:x.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(Oe.INVALID_DESTROY),new b({code:S.INVALID_OPERATION,message:U({key:x.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(T.ROOM_DESTROY,{room:this})}schedule(e,t){return f(this,null,function*(){var o,n,a;let r=L();try{let{isCached:d,result:l,detailCost:m}=yield Ml({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:Re,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} ${mt(l,{keysToExclude:["username","credential"]})}`),d&&E.once(T.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=v(v({},this.scheduleResult),l),Y((o=l.config)==null?void 0:o.retryCount)&&Cc(l.config.retryCount),K((n=l.config)==null?void 0:n.loggerDomain)&&sr(l.config.loggerDomain),this.videoDecodeFallbackType=((a=l.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,E.emit(T.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:m}),N.addSuccessEvent({key:521700,cost:L()-r,split:50})}catch(d){throw N.addFailedEvent({key:521700,error:d}),d}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}};var fp=Pe(Je());var uu=Pe(tu());var sp=s=>{let i=ge(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&&!g(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 op(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 NT(){return f(this,null,function*(){let s=new RTCPeerConnection;s.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_RECVONLY});let i=yield s.createOffer();if(!i.sdp)return[];let e=ge(i.sdp),t=op(e.media[0]);return s.close(),t})}var np=(s,i)=>f(void 0,null,function*(){var d;let e=ge(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};(d=r.rtcpFb)==null||d.forEach(({payload:l,type:m,subtype:u})=>{if(l===n.payload){let p={id:m,params:[]};u&&p.params.push(u),n.rtcpfb.push(p)}}),t.audio.codecs.push(n);let a=["h264","vp8"];return i&&a.shift(),t.video.codecs=[...op(o)].filter(l=>a.includes(l.codec.toLocaleLowerCase())),t.video.decoders=(yield NT()).filter(l=>["h264","vp8"].includes(l.codec.toLocaleLowerCase())),t}),ap=({serverAbility:s,clientAbility:i,offerSDP:e,enableCustomMessage:t})=>{let r=ge(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:h.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:h.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(hu({mid:a,serverAbility:s,clientAbility:i,parsedOffer:r}))}),t&&o.media.push(r.media.find(a=>a.mid==="dc")),It(o)},hu=({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:h.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:h.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=>{Ur(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];Ur(o,a)}return o},Ur=(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 vT(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 DT(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 OT(s){s.type===h.VIDEO&&s.fmtp&&s.fmtp.forEach(i=>{i.config.includes("apt")||(i.config+=";sps-pps-idr-in-keyframe=1")})}function kT(s){s.type===h.AUDIO&&s.fmtp&&s.fmtp.forEach(i=>{i.config+=";sprop-stereo=1;stereo=1"})}var cp=(s,i,e)=>{let t=uu.default.parse(s);return t.media.forEach((r,o)=>{var n;if((r.type===h.AUDIO||r.type===h.VIDEO)&&(DT(r),OT(r),kT(r),vT(r),r.type===h.VIDEO)){if(o<4)r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],i.video.codecs.forEach(a=>Ur(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=>Ur(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")}),uu.default.write(t)};var dp=Pe(Je());var ac=class extends dp.EventEmitter{constructor(e){super();this.room=e;c(this,"mainFpsHealth",1);c(this,"mainBitrateHealth",1);c(this,"badMainBitrateHealthCount",0);c(this,"lastEmitBadHealthTime",0);c(this,"log");!pe&&pt&&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)}};c(ac,"EVENT_BAD_HEALTH","bad_health");var lp=ac;function up({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 hp(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 mp(s){let i=[Di],e=[$l,Fl,Hl,Bl,up,hp],t=()=>{let l=[],m=[],u=[];self.onmessage=p=>{p.data.type==="sei"&&(p.data.isMain?(l.push(p.data.data),p.data.small&&u.push(p.data.data)):m.push(p.data.data))},self.onrtctransform=p=>{let{options:_}=p.transformer,I=_.isReceiver?hp(_.userId,_.streamType,_.isAudio):up({isAudio:_.isAudio,seiMessageList:_.isMain?_.small?u:l:m,isMain:_.isMain});p.transformer.readable.pipeThrough(I).pipeTo(p.transformer.writable)}},r=`const videoEncodePipeline=[${s.videoEncodePipeline.toString()}];
|
|
110
|
-
const videoDecodePipeline=[${s.videoDecodePipeline.toString()}];
|
|
111
|
-
const audioEncodePipeline = [${s.audioEncodePipeline.toString()}];
|
|
112
|
-
const audioDecodePipeline = [${s.audioDecodePipeline.toString()}];`,o=`(()=>{${i.map(l=>`const ${l.name}=(()=>${l.toString()})()`).join(`
|
|
113
|
-
`)}
|
|
114
|
-
${e.map(l=>l.toString()).join(`
|
|
115
|
-
`)};(${t})();${r}})()`,n=new Blob([o],{type:"text/javascript"}),a=URL.createObjectURL(n),d=new Worker(a);return URL.revokeObjectURL(a),d}var ni=(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))(ni||{}),_p=0,gp=!1,MT=new Set,LT=s=>_p>2&&!gp&&MT.size===0&&s,PT=1,Vt=class extends fp.default{constructor({signalChannel:e,room:t,enableCustomMessage:r}){super();c(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});c(this,"currentState","DISCONNECTED");c(this,"_room");c(this,"_signalChannel");c(this,"_peerConnection",null);c(this,"_datachannel",null);c(this,"_enableCustomMessage");c(this,"_log");c(this,"_downlinkMIDMap",new Map);c(this,"_downlinkMIDUserIDMap",new Map);c(this,"_reconnectionTimer",-1);c(this,"reconnectionCount",0);c(this,"clientAbility");c(this,"_serverAbility",null);c(this,"addDownlinkQueue",new Set);c(this,"removeDownlinkQueue",new Set);c(this,"_parsedAnswer",null);c(this,"_updateSDPPromise",null);c(this,"_waitForPCConnectedPromise");c(this,"clearConnectTimeout");c(this,"_isSDPLogged",!1);c(this,"enableInsertableStreams",!1);c(this,"insertableStreamsAbortMap",new Map);c(this,"receiverRemoteTrackMap",new WeakMap);c(this,"scriptTransformWorker");c(this,"_isRelayTried",!1);c(this,"_rttOverCount",0);this._room=t,this._enableCustomMessage=r,this._signalChannel=e,this._log=C.createLogger({id:`spc${PT++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(yi?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?sp(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(){Qn&&(this.scriptTransformWorker=mp({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}initialize(){return f(this,null,function*(){var t;let e;try{return this._peerConnection=new RTCPeerConnection({encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"}),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let r=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${r}`),r==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():r==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),N.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):r==="failed"&&N.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var o;let r=((o=this._peerConnection)==null?void 0:o.signalingState)||"";this._log[r==="closed"?"debug":"info"](`signaling state: ${r}`)},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=r=>this.emit("track",r),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=r=>{let o=new pu(r.data);this.emit("data_channel_msg",{data:o})},this._datachannel.onerror=r=>{this._log.warn("datachannel error",r)}),this._peerConnection.addTransceiver(h.AUDIO,{direction:h.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_SENDONLY}),e=yield this._peerConnection.createOffer(),this.clientAbility=yield np(e.sdp,((t=this._room.scheduleResult.config)==null?void 0:t.remove264FromSDP)||!1),yield this.setOffer(e),this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:r}=this;r&&(this._log.debug(`dtls state: ${r.state}`),r.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():r.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),N.addSuccessEvent({key:521707}),this.clientAbility}catch(r){throw N.addFailedEvent({key:521707,error:r}),this._log.error(`initialize failed ${r}
|
|
116
|
-
offer: ${e==null?void 0:e.sdp}`),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 f(this,null,function*(){var r,o;try{if(this.currentState==="CONNECTED")return;let n=L(),a={type:"answer",sdp:ap({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableCustomMessage})};this._serverAbility=e,yield this.setAnswer(a),yield this.waitForPeerConnectionConnected();let d=((r=this._room.scheduleResult.config)==null?void 0:r.priority)||((o=this._room.joinParams)==null?void 0:o.priority)||new URLSearchParams(location.search).get("priority");d&&this.setPriority(d),t||N.addSuccessEvent({key:521703,cost:L()-n})}catch(n){let a=n instanceof b&&n.code===S.API_CALL_ABORTED;throw a||this._log.error(`connect failed: ${n}`,e),this.reset(),!a&&!this.isReconnecting&&(N.addFailedEvent({key:521703,error:n}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),n}})}reconnect(){return f(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(Ee.CONNECTED,this.reconnect,this);return}try{this.reconnectionCount++,this._log.warn(`reconnect() trying [${this.reconnectionCount}]`),this.reset();let e=yield this.initialize(),t=yield this._signalChannel.sendWaitForResponse({command:q.REBUILD_PEER_CONNECTION,responseCommand:B.REBUILD_PEER_CONNECTION_RES,data:{ability:e},enableLog:!1});if(t.data.code!==0)throw new b({code:t.data.code,message:t.data.message});yield this.connect(t.data.data.ability,!0),N.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),E.emit(T.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting)return;if(e!=null&&e.message.includes("timeout")){let t=yt(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield pi(t,r=>{this._reconnectionTimer=r}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error(`reconnect() failed ${e==null?void 0:e.code} ${e}`),N.addFailedEvent({key:521704,error:e}),this.reconnectionCount>=li()&&this._log.warn(`SDK has tried reconnect for ${li()} times, but all failed, please check your network`),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}})}getPeerConnection(){return this._peerConnection}startReconnection(){return f(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(Ee.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===de.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===de.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===de.FAILED||e.target.connectionState===de.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===de.CONNECTED||e.target.connectionState===de.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),E.emit(T.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 Ct;let e=null;return!zi()||this._peerConnection.getSenders().length===0?Ct:(e=this._peerConnection.getSenders()[0].transport,!Tr()||this._peerConnection.getReceivers().length===0?Ct:e?e.state:Ct)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(ni.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:e}),this.currentState=e))}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let e=yield this._peerConnection.getStats();for(let[t,r]of e)if(Qi(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&&_n(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 b({code:S.API_CALL_ABORTED,message:U({key:x.CONNECTION_ABORTED,data:"leave room"})})))},n=()=>{E.off(T.LEAVE_SUCCESS,o,this),this.off(ni.CONNECTION_STATE_CHANGED,r,this)},a=setTimeout(()=>{n();let d=new b({code:S.API_CALL_TIMEOUT,message:"connection timeout"});_p+=1,LT(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),gp=!0,this.emit(ni.FIREWALL_RESTRICTION)),t(d)},Ws);this.clearConnectTimeout=()=>{n(),clearTimeout(a),delete this.clearConnectTimeout},E.on(T.LEAVE_SUCCESS,o,this),this.on(ni.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 f(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(p=>p.direction==="inactive").slice(0,3).map(p=>(p.direction=h.TRANSCEIVER_DIRECTION_RECVONLY,Number(p.mid)));this._parsedAnswer||(this._parsedAnswer=ge(this._peerConnection.remoteDescription.sdp));let n=this._parsedAnswer.media.filter(p=>{var _;return(_=p.ssrcs)==null?void 0:_.find(I=>{var R;return(R=I.value)==null?void 0:R.includes(r)})}),a,d,l;if(n.length===3)a=n[0],d=n[1],l=n[2];else if(o.length===3)a=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[0])),d=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[1])),l=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[2]));else if(o.length===0){this._peerConnection.addTransceiver(h.AUDIO,{direction:h.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_RECVONLY}),a=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let p=hu({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:ge(this._peerConnection.localDescription.sdp),isDownlink:!0});d=JSON.parse(JSON.stringify(p)),l=JSON.parse(JSON.stringify(p)),a.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(a),d.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(d),l.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(l)}a.direction=h.TRANSCEIVER_DIRECTION_SENDONLY;let m=`${r}-${e.audio}`;a.ssrcs=[{id:e.audio,attribute:"cname",value:`${m}`},{id:e.audio,attribute:"msid",value:`${m}-${h.MAIN} ${m}-audio`}],d.direction=h.TRANSCEIVER_DIRECTION_SENDONLY,d.ssrcs=[{id:e.video,attribute:"cname",value:`${m}`},{id:e.video,attribute:"msid",value:`${m}-${h.MAIN} ${m}-bigvideo`},{id:e.videoRtx,attribute:"cname",value:`${m}`},{id:e.videoRtx,attribute:"msid",value:`${m}-${h.MAIN} ${m}-bigvideo`}],d.ssrcGroups=[{semantics:"FID",ssrcs:`${e.video} ${e.videoRtx}`}],l.direction=h.TRANSCEIVER_DIRECTION_SENDONLY;let u=`${m}-aux`;l.ssrcs=[{id:e.auxiliary,attribute:"cname",value:u},{id:e.auxiliary,attribute:"msid",value:`${u} ${m}-aux${h.VIDEO}`},{id:e.auxiliaryRtx,attribute:"cname",value:`${u} ${m}-aux${h.VIDEO}`},{id:e.auxiliaryRtx,attribute:"msid",value:`${u} ${m}-aux${h.VIDEO}`}],l.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(p=>p.mid).join(" ")),this._downlinkMIDMap.set(t,[a.mid,d.mid,l.mid]),this._downlinkMIDUserIDMap.set(a.mid,t),this._downlinkMIDUserIDMap.set(d.mid,t),this._downlinkMIDUserIDMap.set(l.mid,t)}removeDownlink(e){return f(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=ge(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 f(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:r,smallVideo:o,auxVideo:n}=e;try{if(Io()){let a=this._peerConnection.getSenders().slice(0,4);for(let l=0;l<a.length;l++){let m=a[l],u;l===0&&t?u=t:l===1&&r?u=r:l===2&&o?u=o:l===3&&n&&(u=n),u&&(yield this.setSenderMaxBitrate(m,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=ge(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=ge(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=ge(this._peerConnection.remoteDescription.sdp));let a=ae?"TIAS":"AS";e&&(n.media[0].bandwidth=[{type:a,limit:ae?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:a,limit:ae?e*1e3:e}]),t&&(n.media[1].bandwidth=[{type:a,limit:ae?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:a,limit:ae?t*1e3:t}]),r&&(n.media[2].bandwidth=[{type:a,limit:ae?r*1e3:r}],this._parsedAnswer.media[2].bandwidth=[{type:a,limit:ae?r*1e3:r}]),o&&(n.media[3].bandwidth=[{type:a,limit:ae?o*1e3:o}],this._parsedAnswer.media[3].bandwidth=[{type:a,limit:ae?o*1e3:o}]);let d={type:"offer",sdp:It(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(g(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)}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=It(this._parsedAnswer);return this._updateSDPPromise=new Promise((r,o)=>f(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)}
|
|
117
|
-
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)}
|
|
118
|
-
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:m,direction:u,stopped:p})=>({mid:l,currentDirection:m,direction:u,stopped:p})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,o(d)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return f(this,null,function*(){if(!ae||!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 ge(e).media.map(r=>r.direction)}setOffer(e){this._log.info("setting offer");let t=cp(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 f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let t=!1;this._parsedAnswer.media.forEach(r=>{var o;if(r.type===h.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=[],Ur(r,n),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}useHWEncoder(e=!0,t){return f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let r=!1,o=[];g(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===h.VIDEO){let d;e&&this.is42001fSupported?d=this.clientAbility.video.codecs.find(l=>l.fmtp.includes("42001f")):e||(d=this._serverAbility.video.codecs.find(l=>l.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=[],Ur(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}close(){this._log.info("close pc"),this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>Wt(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 m;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}=((m=this._room.scheduleResult.config)==null?void 0:m.useTurnTcpInfo)||{};if(!n||!a||!r||!o)return;let d=Math.floor(o/r),l=(this._isRelayTried||d>n)&&o>a;if(!l){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: ${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 f(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`),N.addSuccessEvent({key:o,cost:Date.now()-n})}catch(n){this._log.warn(`switchRelay ${r} failed`,n),N.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)}};y([ma("reconnect")],Vt.prototype,"startReconnection",1),y([vi(e=>e.userId)],Vt.prototype,"addDownlink",1),y([vi(e=>e)],Vt.prototype,"removeDownlink",1),y([ti(!0)],Vt.prototype,"updateSDP",1),y([it(521712,!1)],Vt.prototype,"setOffer",1),y([it(521713,!1)],Vt.prototype,"setAnswer",1);var mu=class{constructor(i){c(this,"tag");c(this,"len");c(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}},pu=class{constructor(i){c(this,"tinyId");c(this,"data");let e=new DataView(i),t=0,r=[];for(;t<e.byteLength;){let o=e.getUint16(t+2),n=new mu(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)})}},pp=new Set;function Vr(){let s=Math.floor(Math.random()*4294967296);return pp.has(s)?Vr():(pp.add(s),s)}var Tp=Pe(Je());var Br=class extends Tp.default{constructor(e){super();c(this,"userId");c(this,"tinyId");c(this,"_sdpSemantics");c(this,"_isUplink");c(this,"_room");c(this,"_log");c(this,"_currentState","DISCONNECTED");c(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=C.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(T.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 Zo=class extends Br{constructor(e){super(M(v({},e),{isUplink:!0}));c(this,"localMainAudioTrack",null);c(this,"localMainVideoTrack",null);c(this,"localAuxAudioTrack",null);c(this,"localAuxVideoTrack",null);c(this,"_isPublishingAux",!1);c(this,"_publishingLocalAudioTrack");c(this,"_publishingLocalVideoTrack");c(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});c(this,"_flag",0);c(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]} ${Ei()} ${mr()}`),N.addCount({key:521e3});else{this._checkPublishStateTimeoutId=re.run("timeout",()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}re.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&&(Xt()?(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===h.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&Hi),bigVideo:!!(this.flag&Fi),smallVideo:!!(this.flag&$s),auxVideo:!!(this.flag&or)}}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,r;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"),(r=this.singlePC)==null||r.switchVideoEncoder("vp8")))}publish(o){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){var l,m,u,p,_,I,R;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 b({code:S.NOT_SUPPORTED_H264,message:U({key:x.NOT_SUPPORTED_H264ENCODE})});pe&&hr()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn("fallback video to 480p"),t.setProfile(ht["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:q.SPC_PUBLISH,responseCommand:B.SPC_PUBLISH_RESULT,data:M(v({},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;let{scaleResolutionDownBy:D}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[r?3:1],D,t.streamType)}e&&(this[r?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((l=this.localMainAudioTrack)==null?void 0:l.profile.bitrate)||((m=this.localAuxAudioTrack)==null?void 0:m.profile.bitrate),bigVideo:(u=this.localMainVideoTrack)==null?void 0:u.profile.bitrate,smallVideo:(_=(p=this.localMainVideoTrack)==null?void 0:p.small)==null?void 0:_.bitrate,auxVideo:(I=this.localAuxVideoTrack)==null?void 0:I.profile.bitrate}),this.sendMediaSettings(),this.installTrackMuteEvents(e,t),(this._room.preferHW||(R=this._room.scheduleResult.config)!=null&&R.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(!_t())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(),l=[],m=[],u=(_,I,R)=>{var G,te;let D=d[I].sender.replaceTrack(R);m.push(I),(G=this.singlePC)!=null&&G.enableInsertableStreams&&D.then(()=>this.createEncodedStreams(d[I].sender,_)),(te=this.singlePC)!=null&&te.scriptTransformWorker&&this.initSenderTransfrom(d[I].sender,_),l.push(D)};a&&u(e.mediaType,0,a),n&&u(t.mediaType,o?3:1,n),r&&u(8,2,r);let p=this.singlePC.setTransceiverDirection(z.SENDONLY,m);return l.push(p),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,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:(l,m)=>{var p;let u=this.getTrackByMediaType(t);m.enqueue((p=this.singlePC)!=null&&p.isUsingH264&&u?u.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 f(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 f(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=M(v({},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=M(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}),d.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.singlePC.setTransceiverDirection(z.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 f(this,null,function*(){let t={state:this.publishingState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponseWithRetry({command:q.PUBLISH_STATE_CHANGE,data:t,responseCommand:B.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:q.UNPUBLISH,commandDesc:"unpublish",responseCommand:B.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),Qt){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(),{scaleResolutionDownBy:d}=o;this._mediaSettings.videoWidth=a.width/d||0,this._mediaSettings.videoHeight=a.height/d||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(),{scaleResolutionDownBy:d}=n;this._mediaSettings.auxVideoWidth=a.width/d||0,this._mediaSettings.auxVideoHeight=a.height/d||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:q.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:B.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(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?h.AUXILIARY:h.MAIN} stream`),Xt()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return f(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===h.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 f(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?h.AUXILIARY:h.MAIN} stream`),Xt()&&(yield this.removeTrackByTransceiver(e,t))})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===h.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 f(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?h.AUXILIARY:h.MAIN} stream`),r.kind===h.AUDIO&&t[0]&&(yield t[0].replaceTrack(r)),r.kind===h.VIDEO&&(!o&&t[1]&&(yield t[1].replaceTrack(r)),o&&t[3]&&(yield t[3].replaceTrack(r))),!0})}setBandwidth(o){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r}){if(this.singlePC){let n={};t===h.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:q.UPDATE_MUTE_STAT,responseCommand:B.MUTE_RESULT,data:this.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&E.emit(T.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(e=h.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===h.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===h.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===h.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===h.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===nr?(this._log.error(Oe.NOT_SUPPORTED_H264ENCODE),new b({code:S.NOT_SUPPORTED_H264,message:U({key:x.NOT_SUPPORTED_H264ENCODE})})):new b({code:S.UNKNOWN,message:U({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:B.PUBLISH_RESULT,code:e,message:t}})})}onSinglePCReconnected(){return f(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}))})}};y([je(function({localVideoTrack:e}){e==null||e.once("6",this.onVideoEncodeFailed,this)})],Zo.prototype,"publish",1),y([je(function({localVideoTrack:e}){e==null||e.off("6",this.onVideoEncodeFailed,this)})],Zo.prototype,"unpublish",1);var fu=Zo;function Ep(s){return Object.keys(s).filter(i=>s[i])}var Ls=class extends Br{constructor(e){super(M(v({},e),{isUplink:!1}));c(this,"_flag",0);c(this,"isRobot",!1);c(this,"role","anchor");c(this,"remoteAudioTrack");c(this,"remoteVideoTrack");c(this,"remoteAuxiliaryTrack");c(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0});c(this,"jitterBufferTimeoutId",-1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=new Oi(this._room,this),this.remoteVideoTrack=new si(this._room,this),this.remoteAuxiliaryTrack=new Is(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 mi(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===h.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 m,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=h.AUDIO;r.kind===h.VIDEO&&(d=a===h.MAIN?h.VIDEO:h.AUXILIARY);let l=this.remoteAudioTrack;d===h.VIDEO?l=this.remoteVideoTrack:d===h.AUXILIARY&&(l=this.remoteAuxiliaryTrack),(m=this.singlePC)==null||m.receiverRemoteTrackMap.set(o,l),(u=this.singlePC)!=null&&u.scriptTransformWorker&&this.initReceiverTransform(o,a,r.kind===h.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 d,l;let a=(d=this.singlePC)==null?void 0:d.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 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 f(this,null,function*(){try{if(this._log.info(`subscribe ${t} ${Ep(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 b({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"),pt&&Dt<92)return;this.singlePC.startReconnection()}}unsubscribe(r){return f(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(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} [${Ep(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=q.UNSUBSCRIBE,n=B.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=q.SUBSCRIBE_CHANGE,n=B.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 b({code:a.code,message:U({key:x.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(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary)&&(this._log.warn(`resubscribe ${JSON.stringify(this.subscribeState)}`),this.doSubscribe(this.subscribeState))}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return f(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:Vr(),bigVideoSsrc:Vr(),bigVideoRtxSsrc:Vr(),auxVideoSsrc:Vr(),auxVideoRtxSsrc:Vr()},{audioSsrc:o,bigVideoSsrc:n,bigVideoRtxSsrc:a,auxVideoSsrc:d,auxVideoRtxSsrc:l}=r;this.ssrc={audio:o,video:n,videoRtx:a,auxiliary:d,auxiliaryRtx:l},this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc});try{let m=yield this._signalChannel.sendWaitForResponseWithRetry({command:q.SPC_SUBSCRIBE,responseCommand:B.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(m.data.code!==0)throw new b({code:m.data.code,message:m.data.message})}catch(m){throw yield this.removeDownlink(),m}return}this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc})}finally{let r=this._room.scheduleResult.config;zn&&(r!=null&&r.jitterDelay||r!=null&&r.jitterDelayAux)&&this.setJitterBufferDelay({mainDelay:r.jitterDelay,auxDelay:r.jitterDelayAux})}}})}removeDownlink(){return f(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(!zn||!this.singlePC||!this._peerConnection||_i(e)&&_i(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let r=this.singlePC.getReceiversByUserId(this.userId);return Y(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),Y(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,_i(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||_i(e)&&a.track===this.remoteAudioTrack.outMediaTrack;if(d&&_i(t)||!d&&_i(e))return;let l=d?t||0:e,m=(a.jitterBufferTarget||0)+100;m>l||(a.jitterBufferTarget=m,this._log.debug(`set ${d?"aux ":""}${(u=a==null?void 0:a.track)==null?void 0:u.kind} jitterBuffer delay ${m} -> ${l}`))}),!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}};y([ti(),J(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this.off("closed",n),o(new b({code:S.API_CALL_ABORTED,message:U({key:x.CONNECTION_ABORTED,data:a})}))};this.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this.off("closed",n)})})})],Ls.prototype,"subscribe",1),y([ti()],Ls.prototype,"unsubscribe",1),y([vi(()=>"jitter")],Ls.prototype,"setJitterBufferDelay",1);var Sp=Ls;function Ip(){return J(s=>function(...i){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(i=i.filter(t=>t.outMediaTrack&&t.state==="capture"),!i.length))return;E.emit("61",{room:this});let e=s.apply(this,i);return i.forEach(t=>t.publish(this,e)),e})})}function Ap(){return J(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>t.unpublish()),e})}var Cp=Pe(Je());function wT(){return Math.floor(Math.random()*16383)}var dc=class dc extends Cp.EventEmitter{constructor(e,t){super();this.room=e;this.signalChannel=t;c(this,"log");c(this,"cmdIdSeqMap",new Map);c(this,"messageMap",new Map);this.log=C.createLogger({id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(B.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)||wT(),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(q.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)>dc.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),pi(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((l,m)=>l.message.seq-m.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)}};c(dc,"SEQ_INTERVAL",300);var cc=dc;var{isString:Rp,isUndefined:Ps,getNetworkType:xT,isEmpty:en}=ot,Bt=class extends nc{constructor(e){super(e);c(this,"_businessInfo");c(this,"userManager");c(this,"_version");c(this,"_heartbeat",-1);c(this,"_lastHeartBeatTime",-1);c(this,"_stats");c(this,"_joinTimeout",-1);c(this,"_firstPublishedList",null);c(this,"_joinReject",null);c(this,"_isRelayChanged",!1);c(this,"sdpSemantics");c(this,"signalChannel",null);c(this,"uplinkConnection",null);c(this,"singlePC",null);c(this,"enableSPC",ls);c(this,"_changeBigSmallRecords",new Map);c(this,"networkQuality");c(this,"_iceTransportPolicy");c(this,"forceRelay",!1);c(this,"_turnServers",[]);c(this,"_syncUserListInterval",-1);c(this,"_smallStreamConfig",{bitrate:100,frameRate:15,height:120,width:160});c(this,"enableSEI",!1);c(this,"_enableAudioVolumeEvaluation",!1);c(this,"_audioVolumeIntervalId",0);c(this,"_enableMultiAuxStream",!1);c(this,"_pureAudioPushMode",!1);c(this,"_customMessageManager");c(this,"preferHW",!1);c(this,"healthDetector");c(this,"_updateAudioLevelTaskId",-1);this._stats=new zo(this,this._log),this.userManager=new La(this.userId,this._log),this._version=Re,this.sdpSemantics=Hr,Ps(e.sdpSemantics)?zt.isUnifiedPlanDefault()&&(this.sdpSemantics=$i):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${xT()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=Ps(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&ls,!Ps(e.enableSPC)&&ls&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this._initBusinessInfo(e),this.healthDetector=new lp(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 f(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=Eu(n,[]);E.emit(T.REMOTE_PUBLISH_STATE_CHANGED,v({room:this},o)),this.emit("remote-publish-state-changed",v({},o))}),this.joinParams=e,new Promise((o,n)=>f(this,null,function*(){var a,d;this._joinReject=n;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(m){if(m instanceof b&&m.code===S.SPC_INITIALIZED_FAILED)(a=this.signalChannel)==null||a.destroy(),yield this.initialize();else return n(m)}let l=L();yield this.doJoin(e,(d=this.singlePC)==null?void 0:d.clientAbility),N.addSuccessEvent({key:521708,cost:L()-l}),o(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(l){N.addFailedEvent({key:521708,error:l}),n(l)}this._joinReject=null}))})}initSinglePC(){return f(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new Vt({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 b({code:S.SPC_INITIALIZED_FAILED,message:e==null?void 0:e.message})}}})}doJoin(e,t){return new Promise((r,o)=>f(this,null,function*(){var d,l,m;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(Ee.SETUP_FAILED,u=>{this.clearJoinTimeout(),E.emit(T.JOIN_SIGNAL_CONNECTION_END,{room:this,error:u}),o(u)}),he((l=(d=this.scheduleResult)==null?void 0:d.config)==null?void 0:l.singlePC)&&ls&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2);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:Xc(),netType:dr(),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;(m=this.scheduleResult.config)!=null&&m.enterRoomTimeout&&this.scheduleResult.config.enterRoomTimeout>=1&&(a=this.scheduleResult.config.enterRoomTimeout*1e3),this._joinTimeout=window.setTimeout(()=>{o(new b({code:S.JOIN_ROOM_FAILED,message:U({key:x.JOIN_ROOM_TIMEOUT})}))},a),E.emit(T.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?q.SPC_JOIN_ROOM:q.JOIN_ROOM,n),this.signalChannel.once(B.JOIN_ROOM_RESULT,u=>{this.clearJoinTimeout();let{code:p,message:_,data:I,tinyId:R}=u.data;E.emit(T.JOIN_RECEIVED_CMD_RES,{room:this,code:p}),p===0?(this._log.info("Join room success, start heartbeat"),R&&(this.tinyId=R),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=I.publishers,this.singlePC&&this.singlePC.connect(M(v({},I.ability),{useVp8:I.ability.useVp8||!!e.useVp8})).catch(()=>{}),r()):(this._log.error(`Join room failed result: ${p} error: ${_}`),o(new b({code:S.JOIN_ROOM_FAILED,extraCode:p,message:U({key:x.JOIN_ROOM_FAILED,data:{error:_,code:p}})})))})}))}reJoin(e=!0){return f(this,null,function*(){if(!this.isJoined){this._log.warn("reJoin abort");return}try{this._log.warn(`reJoin pending: ${this.joinParams.roomId}`);let t,r=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,r.push(this.initSinglePC().then(o=>(t=o,o)))),this.signalChannel&&(this.signalChannel.race=e,this.signalChannel.close(),r.push(this.signalChannel.connect())),yield Promise.all(r),yield this.doJoin(M(v({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),t),this._log.warn("reJoin success"),ee.logSuccessEvent({userId:this.userId,eventType:ze.REJOIN}),this.singlePC){let o=n=>{var a;n.state==="CONNECTED"&&((a=this.singlePC)==null||a.off(ni.CONNECTION_STATE_CHANGED,o),this.uplinkConnection instanceof fu&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(d=>{d.installEvents(),d.onSinglePCReconnected()}))};this.singlePC.on(ni.CONNECTION_STATE_CHANGED,o),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof Qo&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(t){this._log.warn(`reJoin fail ${t}`),this.reset(),ee.logFailedEvent({userId:this.userId,eventType:ze.REJOIN,error:t}),this.emit("error",new b({code:S.JOIN_ROOM_FAILED,message:U({key:x.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return f(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),r=this.signalChannel||Um(this.userId),o=!!(r&&r.isConnected&&r.keepAlive),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):(this.signalChannel=new vs({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:e,backupUrl:t,race:this.enableSPC&&!this.proxy_ws,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?n:void 0}),this._customMessageManager=new cc(this,this.signalChannel),this._customMessageManager.on("message",a=>{this.emit("custom-message",a)})),this.networkQuality||(this.networkQuality=new Ms({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(Ms.EVENT_NETWORK_QUALITY,a=>{var d;this.emit("network-quality",a),(d=this.singlePC)==null||d.detectTCPAndUDP(a)})),Be(this,this.signalChannel).add(Ee.CONNECTION_STATE_CHANGED,a=>{E.emit(T.SIGNAL_CONNECTION_STATE_CHANGED,v({room:this},a)),this.emit("signal-connection-state-changed",a)}).add(Ee.RECONNECT_FAILED,a=>{this.reset(),this.emit("error",a)}).add(B.PEER_JOIN,a=>{let{srcTinyId:d,userId:l,role:m}=a.data.data;this.userManager.addUser({userId:l,tinyId:d,role:m})}).add(B.PEER_LEAVE,a=>{let{userId:d,reason:l=0}=a.data.data;this.userManager.deleteUser(d,l)}).add(B.UPDATE_REMOTE_MUTE_STAT,a=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(a.data)}).add(B.CLIENT_BANNED,a=>{let d=a.data.data,{reason:l}=d;if(ee.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(Ee.SETUP_SUCCESS,a=>{this.tinyId=a.signalInfo.tinyId,E.emit(T.JOIN_SIGNAL_CONNECTION_END,{room:this})}),E.emit(T.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),o&&E.emit(T.JOIN_SIGNAL_CONNECTION_END,{room:this}),o})}setSignalChannel(e){this.signalChannel=e,e||Se(this)}leave(){return f(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),E.emit(T.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(q.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=re.run("ric",this.doHeartbeat.bind(this),{delay:2e3}))}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),re.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return f(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?cm(this.userId):[],o=M(v({str_sdk_version:Bs,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:dr()},t.msg_device_info)});if(this.heartbeatReport=o,E.emit(T.HEARTBEAT_REPORT,{room:this,report:o}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(q.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",M(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!==Ec).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(T.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 Qo&&(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?Sp:su)({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",M(v({},r),{userId:e.userId}))}),e.on("firewall-restriction",()=>{this.emit("firewall-restriction")})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=re.run("ric",this.syncUserList.bind(this)))}stopSyncUserListInterval(){re.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:q.GET_USER_LIST,responseCommand:B.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:l})=>({userId:a,tinyId:d,role:l}));throw U({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:B.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||!Kl)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)===de.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(r=>{if(r instanceof Qe&&!r.getIsReconnecting()){let o=r.getPeerConnection();o&&o.connectionState===de.CLOSED&&(this._log.warn(`[${r.getUserId()}] pc is closed but not reconnect`),r.startReconnection())}})}fallbackToMPC(){return f(this,null,function*(){var e;if(this._log.warn("fallback to multi pc"),ee.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(e=this.singlePC)==null||e.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin(!1)),this.uplinkConnection){let t=this.uplinkConnection;this.uplinkConnection=new Qo({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 su({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 b({code:S.INVALID_OPERATION,message:U({key:x.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.removeAllListeners(),this.healthDetector.destroy(),re.clearTask(this._audioVolumeIntervalId))}switchRole(e){return f(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:q.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:B.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 b({code:S.SWITCH_ROLE_FAILED,message:U({key:x.SWITCH_ROLE_FAILED,data:{message:n,code:o}})});this.role=e}).catch(r=>{throw r instanceof b&&r.getCode()===S.API_CALL_TIMEOUT&&(r=new b({code:S.SWITCH_ROLE_FAILED,message:U({key:x.SWITCH_ROLE_TIMEOUT})})),this._log.error(r),r})}publish(...e){return f(this,null,function*(){let t={},r={};e.forEach(d=>{d instanceof Tt&&(d instanceof ri?r.audio=d:t.audio=d),d instanceof Fe&&(d instanceof rt&&d.mediaType===2?r.video=d:t.video=d)});let o=en(t),n=en(r);(!o||!n)&&!this.uplinkConnection&&(this.singlePC?this.uplinkConnection=new fu({userId:this.userId,tinyId:this.tinyId,room:this}):this.uplinkConnection=new Qo({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",M(v({},d),{userId:this.userId}))}),this.uplinkConnection.on("firewall-restriction",()=>{this.emit("firewall-restriction")}),this.uplinkConnection.on("error",d=>{let l=d.getCode();l!==S.ICE_TRANSPORT_ERROR&&(l===S.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 f(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 Tt&&(o instanceof ri?r.audio=o:t.audio=o),o instanceof Fe&&(o instanceof rt&&o.mediaType===2?r.video=o:t.video=o))});try{let o=e.map(n=>n.kind).join(",");en(t)||(this._log.info(`unpublish() => main ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:t.audio,localVideoTrack:t.video})),en(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||!Ed()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&E.emit(T.LOCAL_TRACK_REPLACED,{track:e})})}setBandWidth(e){return f(this,null,function*(){this.uplinkConnection&&(yield this.uplinkConnection.setBandwidth(e),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(e){return f(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();e&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:h.VIDEO,videoType:h.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(e)})}subscribe(...e){return f(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(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),E.emit(T.SUBSCRIBE_START,{room:this,streamType:o,remotePublishedUser:r,subscribeState:n}),this._log.info(`subscribe() => ${t} ${o} [${Ka(n)}] prev: [${Ka(r.subscribeState)}]`),yield r.subscribe(n,o),this._log.info(`subscribe ${t} ${o} done`);for(let d of e)d.mediaTrack||(yield d.waitHasMediaTrack());E.emit(T.SUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})}catch(n){let a=n instanceof b?n.getCode():S.UNKNOWN,d=n;throw n instanceof b?a===S.REMOTE_STREAM_NOT_EXIST&&(d=new b({code:S.API_CALL_ABORTED,message:U({key:x.API_CALL_ABORTED,data:{message:n.message,userId:t,streamType:o}})}),this._log.warn(d)):(d=new b({code:a,message:U({key:x.SUBSCRIBE_FAILED,data:{message:n.message,userId:t,streamType:o}})}),this._log.error(d)),d}})}unsubscribe(...e){return f(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(T.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,re.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),E.emit(T.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&re.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=re.run("intervalInWorker",()=>{var o;Ir.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let r=[];(o=this.remotePublishedUserMap)==null||o.forEach(n=>{if(n.muteState.hasAudio){!Ir.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 f(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=re.run("intervalInWorker",()=>f(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack){this.stopUpdateAudioLevelFromSenderStat();return}let a=yield r.getStats();if(this._updateAudioLevelTaskId<0)return;let d=this.uplinkConnection.localMainAudioTrack;a.forEach(l=>{l.type==="media-source"&&l.audioLevel&&(d.volume=l.audioLevel)})}),{delay:o,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),re.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(!Sd||!t)return;let r=(o=t.getSynchronizationSources()[0])==null?void 0:o.audioLevel;Y(r)?e.remoteAudioTrack.volume=Math.min(r*2,1):t.getStats().then(n=>{n.forEach(a=>{a.type==="inbound-rtp"&&Y(a.audioLevel)&&(e.remoteAudioTrack.volume=a.audioLevel)})})}getLocalAudioStats(){return f(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 f(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 f(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 f(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 f(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(ot.getTurnServer(o))):ot.isPlainObject(e)&&r.push(ot.getTurnServer(e)),this._turnServers=r,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:q.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:B.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:q.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:B.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?q.START_PUBLISH_TENCENT_CDN:q.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?B.START_PUBLISH_TENCENT_CDN_RES:B.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?q.STOP_PUBLISH_TENCENT_CDN:q.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?B.STOP_PUBLISH_TENCENT_CDN_RES:B.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:q.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:B.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:q.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:B.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:q.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:B.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:q.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:B.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(r=>{})}getIceServers(){return this._turnServers.length===0&&this.scheduleResult.iceServers?this.scheduleResult.iceServers:this._turnServers}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=ot.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 f(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:l}=a;if(d.video&&t.video||d.smallVideo&&t.smallVideo&&o)return;let m={audio:e.remoteAudioTrack.isSubscribed||e.remoteAudioTrack.isSubscribing,auxiliary:e.remoteAuxiliaryTrack.isSubscribed||e.remoteAuxiliaryTrack.isSubscribing,video:d.video,smallVideo:d.smallVideo};try{if(!o&&m.smallVideo&&(m.video=!0,m.smallVideo=!1),m.smallVideo===t.smallVideo&&m.video===t.video)return;a.isSubscribing=!0,a.reSubscribeCount=l-1,yield e.subscribe(m,"main"),e.remoteVideoTrack.setMediaType(m.smallVideo?8:4),this._log.info(`change [${r}] to ${m.smallVideo?"small":"big"} video successfully. count ${$r-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount=$r}catch(u){this._log.info(`change [${r}] to ${m.smallVideo?"small":"big"} video failed. count ${$r-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:$r};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(Rp(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!Ps(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new b({code:S.INVALID_PARAMETER,message:U({key:x.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(!Ps(e.userDefineRecordId)){let r=/^[A-Za-z0-9_-]{1,64}$/gi;if(e.userDefineRecordId.match(r)===null)throw new b({code:S.INVALID_PARAMETER,message:U({key:x.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!Ps(e.userDefinePushArgs))if(Rp(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 b({code:S.INVALID_PARAMETER,message:U({key:x.INVALID_USER_DEFINE_PUSH_ARGS})});en(t)||(this._businessInfo=JSON.stringify(t))}sendCustomMessage(e){var t;(t=this._customMessageManager)==null||t.send(e)}enableInsertableStreams(){return f(this,null,function*(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&yi)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 b({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}};y([le(["left",Q.INIT],"joined"),Ze({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"),xt(!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())}}),Mm()],Bt.prototype,"join",1),y([le("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),Lm(),ma("leave room"),vo({fnName:"publish",validateArgs:!1}),vo({fnName:"unsubscribe",validateArgs:!1})],Bt.prototype,"leave",1),y([ti(),Ip(),Ze({settings:{retries:li,timeout:e=>yt(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(T.PUBLISH_FAILED,{room:this}))}})],Bt.prototype,"publish",1),y([vo({fnName:"publish"}),Xh("api-call"),ti(),Ap(),je(function(){var e,t;this.localTracks.size===0&&zi()&&((t=(e=this.singlePC)==null?void 0:e.getPeerConnection())==null||t.getSenders().forEach(r=>r.track&&r.replaceTrack(null)))})],Bt.prototype,"unpublish",1),y([la(e=>{if(e.code!==S.API_CALL_ABORTED)throw e}),vi(e=>e.userId)],Bt.prototype,"replaceTrack",1),y([vi((...e)=>e[0].userId),_a(),Pm(),Ze({settings:{retries:li,timeout:e=>yt(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(T.SUBSCRIBE_FAILED,{room:this,remoteTracks:o}))}})],Bt.prototype,"subscribe",1),y([vo({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")})}}),vi((...e)=>e[0].userId)],Bt.prototype,"unsubscribe",1);jo.create=jo._create.bind(jo,Bt);var wF=jo;export{wF as default};
|
|
141
|
+
}`});u(this,"yTextureRef");u(this,"uTextureRef");u(this,"vTextureRef");u(this,"Y");u(this,"U");u(this,"V");this.useProgram();let r=this.context.ctx;r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.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,r){let o=this.context.ctx,s=o.createTexture();return o.bindTexture(o.TEXTURE_2D,s),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.bindTexture(o.TEXTURE_2D,null),o.uniform1i(o.getUniformLocation(this.program,e),r),s}render(e){let r=this.context.ctx,o=this.width,s=this.height;return this.useProgram(),r.viewport(0,0,o,s),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o,s,r.LUMINANCE,r.UNSIGNED_BYTE,this.Y),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.U),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,r){super.resize(e,r);let o=this.context.ctx;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this.yTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,r,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.uTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this.vTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null)}};var dp=[i=>{i.codec="avc1.420028"},i=>{delete i.hardwareAcceleration}],fg=(i,t)=>{switch(i){case"webCodecs":return t==="videoFrame"?514705:514706;case"wasm":return t==="webgl"?514707:t==="videoFrame"?514708:514709}throw new Error("decoder type not supported")},nS=0,cu=class{constructor(t){u(this,"id",nS++);u(this,"trackDoneOB");u(this,"startOB");u(this,"stopOB");u(this,"decoder");u(this,"videoContext");u(this,"gop",0);u(this,"gop_helper",0);u(this,"waitFirstKeyFrame",!0);u(this,"startTimestamp",0);u(this,"startTime",0);u(this,"startPerformanceTime",0);u(this,"inputFrameCount",0);u(this,"decodedFrameCount",0);u(this,"downgradeLevel",0);u(this,"config");u(this,"gop_before_configure",[]);u(this,"videoElement");u(this,"type","wasm");u(this,"goodType","webCodecs");u(this,"renderer","2d");u(this,"wasmOption");u(this,"createDecoder");u(this,"_decodeSink");u(this,"isReported",!1);u(this,"track");u(this,"stateChangeOB");u(this,"failedReason");let{track:e,createDecoder:r}=t;if(this.stateChangeOB=Ct(),this.track=e,this.createDecoder=r,this.wasmOption={yuvMode:t.renderer==="webgl",wasmPath:t.wasmPath,workerMode:t.workerMode,canvas:t.canvas},this.config=t.config,this.videoElement=t.videoElement,this.renderer=t.renderer,this.trackDoneOB=Ne(e.availableState,ne.OFF),this.stopOB=Ct(this.trackDoneOB),t.type==="auto"){switch(t.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=t.type;this.changeRenderer(this.renderer),ve(this.stateChangeOB,wm((o,s)=>(o!==s&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:o,state:s}),s),"INITIALIZED"),Qe(this.stopOB),Ve()),this.start()}start(t=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=ve(this.pipe(this.track),Qe(this.stopOB),di());ve(e,Ve(()=>{this.track.stat.framesDecoded++},r=>{if(this.track.log.error(`${this.id} play failed: ${r} retryCount: ${t}`),Y.addFailedEvent({key:fg(this.type,this.renderer),error:r}),t>4)this.failedReason=r,this.stateChangeOB.next("FAILED");else{if(this.goodType){this.start(t);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(t+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),Y.addSuccessEvent({key:fg(this.type,this.renderer)}),Y.addSuccessEvent({key:514704})})),ve(e,yr(1),Ve(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.start()}close(t){this.stopOB.next(t)}changeRenderer(t){this.renderer=t,this.renderer==="videoFrame"&&!Nl()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(t,e=!1){var n;if(this.failedReason)return;let r=new Uint8Array(t.data)[4]&31,o=!1;switch(r){case 5:case 7:o=!0;break}if(this.inputFrameCount++,((n=this.decoder)==null?void 0:n.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),o&&(this.gop_before_configure=[]),this.gop_before_configure.push(Z({},t)),t;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(d=>{this.decode(d,!0)}),this.gop_before_configure=[]);let{timestamp:s}=t;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=s,this.startTime=Date.now(),this.startPerformanceTime=_e();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount}`);return}let d=(s-this.startTimestamp)/90,m=Date.now()-this.startTime-d,E=m<500?0:m/1e3>>0;switch(o&&(E>0?this.downgradeLevel++:this.downgradeLevel>3&&this.downgradeLevel--),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.inputFrameCount<10&&this.track.log.debug(`decode ${this.inputFrameCount} ${this.downgradeLevel} ${this.gop_helper} ${this.gop}`),this.decoder.decode(t);return}return t}pipe(t){return e=>y(this,null,function*(){this._decodeSink=e,e.defer(()=>{var s,n;(s=this.decoder)==null||s.close(),(n=this.videoContext)==null||n.destroy(),delete this._decodeSink});let{renderer:r,type:o}=this;t.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(o){case"wasm":this.decoder=this.createDecoder(o,this.wasmOption);break;case"webCodecs":for(let s=0;s<=dp.length;s++){let{supported:n}=yield VideoDecoder.isConfigSupported(this.config);if(n)break;if(s===dp.length){e.error(3);return}dp[s](this.config)}this.decoder=this.createDecoder(o);break;case"mse":throw new Error("not supported yet")}if(this.decoder.on("videoFrame",s=>{this.decodedFrameCount++,e.next(s)}),this.decoder.on("error",s=>{t.log.error(s),e.error(o==="webCodecs"?4:8)}),yield this.decoder.initialize(this.videoElement),this.decoder.configure(this.config),o==="wasm"&&r==="webgl"){this.videoContext=new yt({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create(),this.videoContext.on(yt.UNAVAILABLE,n=>{t.log.error(n),e.error(7)});let s=new au(this.videoContext);this.decoder.on("videoCodecInfo",n=>s.resize(n.width,n.height)),this.decoder.on("videoFrame",n=>{[s.Y,s.U,s.V]=n,this.downgradeLevel===1?this.decodedFrameCount%2===0&&s.render(this.decodedFrameCount):s.render(this.decodedFrameCount)}),t.source=s,t.player.setCanvas(this.videoContext._canvas,2)}else if(r==="videoFrame"){t.player.setCanvas();let s=new MediaStreamTrackGenerator({kind:"video"}),n=s.writable.getWriter();t.setInputMediaStreamTrack(s);let d=0;this.decoder.on("videoFrame",p=>{d++,d<=10&&t.log.info(`Frame ${d} decoded width: ${p.displayWidth} height: ${p.displayHeight}`),n.write(p)}),e.defer(()=>s.onmute=null)}else{this.videoContext=new kt({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create({alpha:!1});let s=this.videoContext.createVideoImageSource();this.decoder.on("videoFrame",d=>{s.image=d,s.update()});let n=new Wo(this.videoContext,{name:"remotePlayer",logger:t.log});s.connect(n),t.source=s,t.player.setCanvas(this.videoContext._canvas,2)}}catch(s){t.log.error(s),e.error(o==="webCodecs"?2:6)}})}};var ka=class extends gg.EventEmitter{constructor(e){super();this.room=e;u(this,"videoContext");u(this,"_glVideoContext");u(this,"_2dVideoContext");u(this,"destination");u(this,"smallVideoContext");u(this,"smallDestination");u(this,"smallTrackSource");u(this,"smallImageSource");u(this,"_isMirror",!1);u(this,"cameraTrack");u(this,"cameraNode");u(this,"mirrorNode");u(this,"mixNode");u(this,"screenTrack");u(this,"screenNode");u(this,"selfModel",!1);u(this,"blurRadius",3);u(this,"arTrack");u(this,"Wasm");u(this,"waterMarkNode");u(this,"_waterMarkOption");u(this,"watermarkImageList",[]);u(this,"_beautyParams");u(this,"isUsingArTrack",!1);u(this,"_isMixScreen",!1);u(this,"_virtualBackground");u(this,"_virtualBackgroundAbortCallback");u(this,"virtualBackgroundInstance");u(this,"_bgAssetPath");u(this,"log",B.createLogger({id:"vm"}));u(this,"_checkId",0);u(this,"_use2d",!1);u(this,"_autoSwitchRenderMode",!0);u(this,"_selfieSegmentation");u(this,"encodePipeline",[]);u(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new kt({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 r=e==="2d";this._use2d!==r&&(this._use2d=r,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new kt({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new yt({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("unavailable",e=>{var r;this.emit("error",e),this.log.warn("video context unavailable",e),(r=this._virtualBackgroundAbortCallback)==null||r.call(this,e),this.update().catch(o=>{this.log.error(o)})})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=St.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,r;(e=this._2dVideoContext)==null||e.destroy(),(r=this._glVideoContext)==null||r.destroy(),this.smallVideoContext.destroy(),St.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(xi||this._isMixScreen||this._isMirror||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",r){let o=e==="videoCtxGl"?512700:512701;r?Y.addFailedEvent({key:o,error:r}):Y.addSuccessEvent({key:o})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let r=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(r)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new yt({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()}_setMainOutput(e){var r;try{let o=this.cameraTrack,{small:s,settings:n,player:d}=o;s?(this.smallVideoContext.available||(this.smallVideoContext.create({alpha:!1}),this.smallDestination=new Pd(this.smallVideoContext,s,this.log)),this.smallVideoContext.frameRate=s.frameRate,this.smallDestination.resolution=s,e?(this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=e:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(e),this.smallImageSource.connect(this.smallDestination))):(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource?this.smallTrackSource.replaceTrack(this.initialTrack):(this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource"),this.smallTrackSource.width=n.width,this.smallTrackSource.height=n.height,this.smallTrackSource.connect(this.smallDestination)))):this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource),xi&&d.setCanvas(e);let p=e&&((r=this.destination)==null?void 0:r.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),p=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${p?p.label:"no output track"}`),o.setOutputMediaStreamTrack(p)}catch(o){this.log.error("set main output failed",o)}}update(){return y(this,null,function*(){var o,s;if(!this.cameraTrack||!this.cameraTrack.mediaTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:e,profile:r}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams?(this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),Qt===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof li?(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 li?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(e.width,e.height)):(this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new Od(this.videoContext,{name:"mainDestination",logger:this.log}),this.cameraNode=new nu(this.videoContext,{input:this.cameraTrack.mediaTrack,width:e.width,height:e.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 n=this.cameraNode;n.disconnect(),this._isMirror&&(this.mirrorNode||(this.mirrorNode=new ou(this.videoContext,this.log)),n=n.connect(this.mirrorNode),n.disconnect(),this.log.info("start mirror")),this.mixNode&&this.mixNode.close(),delete this.mixNode,(this._isMixScreen||this._hasWaterMark)&&(this.mixNode=new su(this.videoContext,this.log),n.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.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&!this.screenNode&&(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource")),(s=this.screenNode)==null||s.connect(this.mixNode,{zIndex:0}),n=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)),n.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}changeInput(e){var r,o,s,n;if(e instanceof Hi)return this.log.info("change screen input",(r=e.mediaTrack)==null?void 0:r.label),this.setScreenTrack(e);if(e instanceof Sr)return this.log.info("change video input",(o=e.mediaTrack)==null?void 0:o.label),this.setCameraTrack(e);if(e instanceof qi){this.log.info("change remote input",(s=e.mediaTrack)==null?void 0:s.label);let d=e.mediaTrack;return e.setOutputMediaStreamTrack(d)}this.log.warn("change unknown input",(n=e.mediaTrack)==null?void 0:n.label)}removeInput(e){var r;e instanceof Hi?((r=this.screenNode)==null||r.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Sr?(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof qi&&e.source&&e.source.context.destroy()}setCameraTrack(e){return y(this,null,function*(){this.cameraTrack=e,this.update()})}setScreenTrack(e){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)}getWatermarkImage(e,r){return y(this,null,function*(){let o=document.createElement("canvas");r&&e&&(o.height=r,o.width=e);let s=o.getContext("2d");if(!s)throw new he({code:te.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,d)=>n.zIndex-d.zIndex),this.watermarkImageList.forEach(({image:n,x:d,y:p,width:m,height:E})=>{s.drawImage(n,d,p,m,E)}),Es(o.toDataURL())})}pushWaterMarkImageList(e){let{type:r}=e;this.watermarkImageList.some(s=>s.imageUrl===e.imageUrl&&s.height===e.height&&s.width===e.width&&s.x===e.x&&s.y===e.y&&s.type===e.type&&s.zIndex===e.zIndex)||((r==="mute"||r==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(s=>s.type!==r)),this.watermarkImageList.push(e))}setBeautyParams(e){return y(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return y(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return y(this,null,function*(){var _,b;let r;try{r=yield Es((e==null?void 0:e.imageElement)||e.imageUrl)}catch(C){throw new he({code:te.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:o=0,y:s=0,width:n=r.width,height:d=r.height,type:p="watermark",zIndex:m=2}=e;this.watermarkImageList.some(C=>C.type===p)?(this.watermarkImageList=this.watermarkImageList.filter(C=>C.type!==p),this.pushWaterMarkImageList({x:o,y:s,width:n,height:d,image:r,zIndex:m,type:p,imageUrl:e.imageUrl}),r=yield this.getWatermarkImage((_=this.cameraTrack)==null?void 0:_.settings.width,(b=this.cameraTrack)==null?void 0:b.settings.height),this._waterMarkOption={x:0,y:0,width:r.width,height:r.height,image:r},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(r.width,r.height),this.waterMarkNode.image=r):this.update()):(this.pushWaterMarkImageList({x:o,y:s,width:n,height:d,image:r,zIndex:m,type:p,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(C,k)=>C==="imageUrl"?void 0:k))})}deleteWatermark(e="watermark"){return y(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(r=>r.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(r,o)=>r==="imageUrl"?void 0:o)),yield this.freshWatermark()})}freshWatermark(){return y(this,null,function*(){var r,o,s;(r=this.waterMarkNode)==null||r.close(),delete this.waterMarkNode,delete this._waterMarkOption;let e=yield this.getWatermarkImage((o=this.cameraTrack)==null?void 0:o.settings.width,(s=this.cameraTrack)==null?void 0:s.settings.height);this._waterMarkOption={x:0,y:0,width:e.width,height:e.height,image:e},this.update()})}setVirtualBackground(e){return y(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 Es(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 he({code:te.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var r;this._isMixScreen=e,this._isMixScreen||((r=this.screenNode)==null||r.close(),delete this.screenNode),this.update()}set mirror(e){var r;this._isMirror!==e&&(this._isMirror=e,this._isMirror||((r=this.mirrorNode)==null||r.close(),delete this.mirrorNode),this.update())}get mirror(){return this._isMirror}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return y(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 cu(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:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};X([cf(function(e){this.log.error("update failed",e)})],ka.prototype,"update",1);var aS=0;var du=class extends ne{constructor(e){super("room");u(this,"seq",++aS);u(this,"sdkAppId");u(this,"userId");u(this,"userSig");u(this,"privateMapKey");u(this,"latencyLevel");u(this,"tinyId");u(this,"scene");u(this,"roomId");u(this,"useStringRoomId");u(this,"role","anchor");u(this,"joinParams",null);u(this,"localTracks",new Set);u(this,"enableAutoPlayDialog",!0);u(this,"autoReceiveAudio",!0);u(this,"autoReceiveVideo",!0);u(this,"proxy_ws");u(this,"proxy_wt");u(this,"proxy_unified");u(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}});u(this,"keyPointManager");u(this,"audioManager");u(this,"videoManager");u(this,"callDurationCalculator");u(this,"badCaseDetector");u(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});u(this,"videoDecodeFallbackType");u(this,"_isUsingCachedSchedule",!1);u(this,"_log",B.createLogger({id:`r${this.seq}`}));u(this,"_joinedTimestamp",0);u(this,"_sdkType");u(this,"heartbeatReport");u(this,"quality");u(this,"enableSEI");u(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,dt(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),dt(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),dt(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new mg({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new pg({room:this}),this.badCaseDetector=new hg({room:this}),this.audioManager=new Ed(this),this.videoManager=new ka(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 y(this,null,function*(){return this.publish(e)})}removeTrack(e){return y(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return y(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(we(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Gt(e)){let{websocketProxy:r,webtransportProxy:o,loggerProxy:s,scheduleProxy:n,unifiedProxy:d}=e;this.proxy_ws=r,this.proxy_wt=o,this.proxy_unified=d,d?(Hd([d,d]),po(`https://${d}`)):(s&&po(s),n&&Hd(n))}H.once(L.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:Rr.main,sched_back_domain:Rr.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return y(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(r=>{e[r.userId]=r.remoteAudioTrack.stat}),e})}getTransportStats(){return y(this,null,function*(){var r;let e={rtt:((r=this.quality)==null?void 0:r.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let o of this.quality.downlinkInfo)e.downlinksRTT[o.userId]=o.rtt;return e})}getRemoteVideoStats(){return y(this,arguments,function*(e="main"){let r={};return this.remotePublishedUserMap.forEach(o=>{let s=e==="auxiliary"?o.remoteAuxiliaryTrack:o.remoteVideoTrack;r[o.userId]=s.stat}),r})}checkDestroy(){if(this.isDestroyed)throw new he({code:te.INVALID_OPERATION,message:at({key:nt.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(qt.INVALID_DESTROY),new he({code:te.INVALID_OPERATION,message:at({key:nt.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,H.emit(L.ROOM_DESTROY,{room:this})}schedule(e,r){return y(this,null,function*(){var s,n,d;let o=_e();try{let{isCached:p,result:m,detailCost:E}=yield jm({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:r,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=p,this._log.info(`schedule cache:${+p} ${rr(m,{keysToExclude:["username","credential"]})}`),p&&H.once(L.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=Z(Z({},this.scheduleResult),m),je((s=m.config)==null?void 0:s.retryCount)&&Lu(m.config.retryCount),we((n=m.config)==null?void 0:n.loggerDomain)&&po(m.config.loggerDomain),this.videoDecodeFallbackType=((d=m.config)==null?void 0:d.videoDecodeFallback)||this.videoDecodeFallbackType,H.emit(L.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:E}),Y.addSuccessEvent({key:521700,cost:_e()-o,split:50})}catch(p){throw Y.addFailedEvent({key:521700,error:p}),p}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}};function Eg(i,t=!1){let e=Object.defineProperties(Ct(),{postMessage:{value:i.postMessage.bind(i)},port:{get(){return i},set(o){i.onmessage=Ue,i.onmessageerror=Ue,i=o,r()}}});function r(){i.onmessage=o=>{o.data?o.ports.length||t?e.next(o):e.next(o.data):(e.complete(),i.close())},i.onmessageerror=o=>{e.error(o),i.close()}}return r(),e}var up=class extends de{constructor(t,e){super(t);let r=new de(t);r.next=Ue,e(r)}},X2=pe(up,"takeUntilComplete");var Nt={useWt:!0,useAINS:!0,useHardDecoder:"prefer-software",useHardEncoder:"prefer-software",unreliable:!1,debug:!1,assetsPath:"",enableUpload:!0},mp="__INLINE__WORKER__",_g="__INLINE__WASM__",{debug:Tg}=console;Nt.debug||(console.debug=()=>{});var lp=!mp.startsWith("__"),cS=!_g.startsWith("__");function Ig(){return`${Nt.assetsPath?`${Nt.assetsPath}/`:""}worker.js`}function Sg(){let i=Ig();return lp||i.startsWith("http")?URL.createObjectURL(new Blob([lp?atob(mp):`importScripts('${i}')`])):i}function yg(){let i=Ig();return lp?URL.createObjectURL(new Blob([atob(mp)],{type:"application/javascript"})):i.startsWith("http")?fetch(i).then(t=>t.blob().then(e=>URL.createObjectURL(e))):i}var La;function uu(){return y(this,null,function*(){let i=Nt.assetsPath?`${Nt.assetsPath}/`:"";return La||(cS?La=new TextEncoder().encode(atob(_g)).buffer:La=yield fetch(`${i}av_processing.wasm`).then(t=>t.arrayBuffer()),La)})}var pp=class{constructor(){u(this,"playPort");u(this,"playPortSent",!1);u(this,"worklet");u(this,"workletPromise")}init(){return this.workletPromise||(this.workletPromise=this._init()),this.workletPromise}_init(){return y(this,null,function*(){let t=et("player"),e=yg();try{yield t.audioWorklet.addModule(typeof e=="string"?e:yield e),B.info("global audio player worklet addModule success",e)}catch(r){throw B.error("global audio player worklet addModule failed:",r),r}return this.worklet=new AudioWorkletNode(t,"global-audio-player",{processorOptions:{wasm:yield uu(),flag:Nt},numberOfInputs:2}),B.info("global audio player worklet created",t.state),this.worklet.connect(t.destination),this.playPort=this.worklet.port,this.playPort})}playAudio(t){return y(this,null,function*(){this.playPortSent||(this.playPortSent=!0,t(yield this.init()))})}},lu=new pp;var hp=(()=>{if(typeof self=="undefined")return!1;if(!("top"in self&&self!==top)){if("showOpenFilePicker"in self)return"showOpenFilePicker"}return!1})(),i1=hp?Promise.resolve().then(function(){return mS}):Promise.resolve().then(function(){return _S});var o1=hp?Promise.resolve().then(function(){return hS}):Promise.resolve().then(function(){return IS});var dS=hp?Promise.resolve().then(function(){return gS}):Promise.resolve().then(function(){return yS});function fp(...i){return y(this,null,function*(){return(yield dS).default(...i)})}var uS=i=>y(void 0,null,function*(){let t=yield i.getFile();return t.handle=i,t}),lS=(...t)=>y(void 0,[...t],function*(i=[{}]){Array.isArray(i)||(i=[i]);let e=[];i.forEach((s,n)=>{e[n]={description:s.description||"Files",accept:{}},s.mimeTypes?s.mimeTypes.map(d=>{e[n].accept[d]=s.extensions||[]}):e[n].accept["*/*"]=s.extensions||[]});let r=yield window.showOpenFilePicker({id:i[0].id,startIn:i[0].startIn,types:e,multiple:i[0].multiple||!1,excludeAcceptAllOption:i[0].excludeAcceptAllOption||!1}),o=yield Promise.all(r.map(uS));return i[0].multiple?o:o[0]}),mS={__proto__:null,default:lS};function mu(i){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var r=e.done;return Promise.resolve(e.value).then(function(o){return{value:o,done:r}})}return mu=function(e){this.s=e,this.n=e.next},mu.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return r===void 0?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return r===void 0?Promise.reject(e):t(r.apply(this.s,arguments))}},new mu(i)}var Ag=(o,s,...n)=>y(void 0,[o,s,...n],function*(i,t,e=i.name,r){let d=[],p=[];var m,E=!1,_=!1;try{for(var b,C=function(k){var x,P,J,Q=2;for(typeof Symbol!="undefined"&&(P=Symbol.asyncIterator,J=Symbol.iterator);Q--;){if(P&&(x=k[P])!=null)return x.call(k);if(J&&(x=k[J])!=null)return new mu(x.call(k));P="@@asyncIterator",J="@@iterator"}throw new TypeError("Object is not async iterable")}(i.values());E=!(b=yield C.next()).done;E=!1){let k=b.value,x=`${e}/${k.name}`;k.kind==="file"?p.push(k.getFile().then(P=>(P.directoryHandle=i,P.handle=k,Object.defineProperty(P,"webkitRelativePath",{configurable:!0,enumerable:!0,get:()=>x})))):k.kind!=="directory"||!t||r&&r(k)||d.push(Ag(k,t,x,r))}}catch(k){_=!0,m=k}finally{try{E&&C.return!=null&&(yield C.return())}finally{if(_)throw m}}return[...(yield Promise.all(d)).flat(),...yield Promise.all(p)]}),pS=(...t)=>y(void 0,[...t],function*(i={}){i.recursive=i.recursive||!1,i.mode=i.mode||"read";let e=yield window.showDirectoryPicker({id:i.id,startIn:i.startIn,mode:i.mode});return Ag(e,i.recursive,void 0,i.skipDirectory)}),hS={__proto__:null,default:pS},fS=(s,...n)=>y(void 0,[s,...n],function*(i,t=[{}],e=null,r=!1,o=null){Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||"Untitled";let d=[],p=null;if(i instanceof Blob&&i.type?p=i.type:i.headers&&i.headers.get("content-type")&&(p=i.headers.get("content-type")),t.forEach((_,b)=>{d[b]={description:_.description||"Files",accept:{}},_.mimeTypes?(b===0&&p&&_.mimeTypes.push(p),_.mimeTypes.map(C=>{d[b].accept[C]=_.extensions||[]})):p?d[b].accept[p]=_.extensions||[]:d[b].accept["*/*"]=_.extensions||[]}),e)try{yield e.getFile()}catch(_){if(e=null,r)throw _}let m=e||(yield window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:d,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1}));!e&&o&&o(m);let E=yield m.createWritable();return"stream"in i?(yield i.stream().pipeTo(E),m):"body"in i?(yield i.body.pipeTo(E),m):(yield E.write(yield i),yield E.close(),m)}),gS={__proto__:null,default:fS},ES=(...t)=>y(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),new Promise((e,r)=>{let o=document.createElement("input");o.type="file";let s=[...i.map(m=>m.mimeTypes||[]),...i.map(m=>m.extensions||[])].join();o.multiple=i[0].multiple||!1,o.accept=s||"",o.style.display="none",document.body.append(o);let n=m=>{typeof d=="function"&&d(),e(m)},d=i[0].legacySetup&&i[0].legacySetup(n,()=>d(r),o),p=()=>{window.removeEventListener("focus",p),o.remove()};o.addEventListener("click",()=>{window.addEventListener("focus",p)}),o.addEventListener("change",()=>{window.removeEventListener("focus",p),o.remove(),n(o.multiple?Array.from(o.files):o.files[0])}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),_S={__proto__:null,default:ES},TS=(...t)=>y(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),i[0].recursive=i[0].recursive||!1,new Promise((e,r)=>{let o=document.createElement("input");o.type="file",o.webkitdirectory=!0;let s=d=>{typeof n=="function"&&n(),e(d)},n=i[0].legacySetup&&i[0].legacySetup(s,()=>n(r),o);o.addEventListener("change",()=>{let d=Array.from(o.files);i[0].recursive?i[0].recursive&&i[0].skipDirectory&&(d=d.filter(p=>p.webkitRelativePath.split("/").every(m=>!i[0].skipDirectory({name:m,kind:"directory"})))):d=d.filter(p=>p.webkitRelativePath.split("/").length===2),s(d)}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),IS={__proto__:null,default:TS},SS=(e,...r)=>y(void 0,[e,...r],function*(i,t={}){Array.isArray(t)&&(t=t[0]);let o=document.createElement("a"),s=i;"body"in i&&(s=yield function(p,m){return y(this,null,function*(){let E=p.getReader(),_=new ReadableStream({start:k=>function x(){return y(this,null,function*(){return E.read().then(({done:P,value:J})=>{if(!P)return k.enqueue(J),x();k.close()})})}()}),b=new Response(_),C=yield b.blob();return E.releaseLock(),new Blob([C],{type:m})})}(i.body,i.headers.get("content-type"))),o.download=t.fileName||"Untitled",o.href=URL.createObjectURL(yield s);let n=()=>{typeof d=="function"&&d()},d=t.legacySetup&&t.legacySetup(n,()=>d(),o);return o.addEventListener("click",()=>{setTimeout(()=>URL.revokeObjectURL(o.href),3e4),n()}),o.click(),null}),yS={__proto__:null,default:SS};var gp=class{constructor(t){this.name=t;u(this,"ready");u(this,"worker");u(this,"ports");u(this,"ids",1);u(this,"transactions",new Map);u(this,"log");u(this,"addTransaction",t=>(this.transactions.set(++this.ids,t),this.ids))}postMessage(t,e){var r;(r=this.worker)==null||r.postMessage(t,e)}create(t){if(this.ready)return this.ready;t||(t=this.name),console.time(`createWorker_${t}`);let e=new Worker(Sg(),{name:t});return this.worker=e,this.ready=new Promise((r,o)=>y(this,null,function*(){e.onmessage=({data:{id:s,type:n,payload:d}})=>{var p;if(s)(p=this.transactions.get(s))==null||p(d),this.transactions.delete(s);else switch(n){case"error":console.timeEnd(`createWorker_${t}`),console.warn("worker error:",d),o(d);break;case"ready":console.timeEnd(`createWorker_${t}`),r(this);break;case"updateAFSM":if(d.value){let m=typeof d.old=="string"?d.old:`${d.old.action}ing`,E=typeof d.value=="string"?d.value:`${d.value.action}ing`;console.log(Ec(),d.group,d.name,m,"\u{1F449}",E)}break;case"log":console.log(d);break;case"glog":window.dispatchEvent(new CustomEvent(n,{detail:d}));break}},e.postMessage({wasm:yield uu(),flag:Nt},this.ports)}))}destroy(){var t;console.log("destroy worker",this.name),delete this.ready,(t=this.worker)==null||t.terminate()}},Ep=class{constructor(t,e,r){this.worker=t;u(this,"channel",new MessageChannel);u(this,"ready");this.ready=new Promise((o,s)=>{this.worker.postMessage({id:this.worker.addTransaction(o),payload:e},[this.channel.port2])}).then(o=>(o.err===0&&(this.worker.sessionCount++,this.channel.port1.onmessage=r),o))}postMessage(...t){this.channel.port1.postMessage(...t)}destroy(){--this.worker.sessionCount===0&&this.worker.destroy()}},_p=class i extends gp{constructor(){super("main");u(this,"switchValue",new Map);u(this,"extendChannel");u(this,"sessionCount",0)}setSwitchValue(e,r){var o;this.switchValue.set(e,r),(o=this.extendChannel)==null||o.port1.postMessage([e,r])}create(){return y(this,null,function*(){return this.ready?this.ready:(this.extendChannel=new MessageChannel,this.ports=[this.extendChannel.port2],yield Bt(i.prototype,this,"create").call(this),this.switchValue.forEach((e,r)=>{this.extendChannel.port1.postMessage([r,e])}),this)})}},Zi=new _p,Xo,AS=-1;function bg(i){return console.log(i),Xo.push(i.slice()),Xo.length>1e3&&Xo.shift(),i}function Rg(i){return y(this,null,function*(){switch(AS){case 0:this.edpl.willDecodeAudio=bg;break;case 2:this.edpl.didEncodeAudio=bg;break}yield Zi.create(),H.emit(L.JOIN_SEND_CMD,{room:this});let t=new Ep(Zi,i,o=>{let s=o.data;if(typeof s=="string")this.onWorkerEvent(s);else if(s==null)this.onWorkerEvent("client-banned",0),t.destroy();else{let{cmd:n,payload:d}=s;this.onWorkerEvent(n,d)}}),{err:e,data:r}=yield t.ready;if(typeof e=="number"){if(H.emit(L.JOIN_RECEIVED_CMD_RES,{room:this,code:e}),e===0)return Object.assign(this,r,{session:t});throw new he({code:te.JOIN_ROOM_FAILED,extraCode:Number(e),message:at({key:nt.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:e,errorMsg:""}})})}else throw e})}Object.defineProperties(window,{useAINS:{set:Tp},useWt:{set:bS},enableDebug:{set(i){console.debug=i?Tg:()=>{},Zi.setSwitchValue("enableDebug",i)}},useV2:{set:Ip},dump:{value(){if(Xo||(console.warn("dump audio will be activated at next time join room"),Xo=[]),!Xo.length){console.warn("no audio data to dump,try it later");return}let i=[];return Xo.forEach(t=>{i.push(new Uint16Array([t.length])),i.push(t)}),fp(new Blob(i),{fileName:"audio dump hex",extensions:[".hex"]})}},dumpAudio:{value(i="audio",t=2e3){let e=[],r=new Promise(o=>{let s=new MessageChannel;Zi.extendChannel.port1.postMessage(["dump",i],[s.port1]),s.port2.onmessage=({data:n})=>{console.log(n),e.push(n),e.length>t&&(s.port2.onmessage=null,Zi.extendChannel.port1.postMessage(["dump",i]),s.port2.close(),o(new Blob(e)))}});return fp(r,{fileName:i,extensions:[".pcm"]})}},hardDec:{set(i){switch(i){case!0:Nt.useHardDecoder="prefer-hardware";break;case!1:Nt.useHardDecoder="prefer-software";break;default:Nt.useHardDecoder="no-preference"}}}});function Tp(i){return y(this,null,function*(){Zi.setSwitchValue("useAINS",i)})}function Ip(i){return y(this,null,function*(){Zi.setSwitchValue("useV2",i)})}function bS(i){return y(this,null,function*(){Zi.setSwitchValue("useWt",i)})}function vg(i){let t=new MediaStreamTrackGenerator({kind:"audio"});i.setInputMediaStreamTrack(t),this.postMessage({cmd:"pullAudio",payload:{tinyId:i.tinyId,writable:t.writable}},[t.writable])}function Cg(i){return y(this,null,function*(){var o;this._log.info("pull video",i);let t=Date.now(),e=0,r=new MessageChannel;this.postMessage({cmd:"pullVideo",payload:{mediaType:i.mediaType,tinyId:i.tinyId}},[r.port1]),(o=i.stat).framesReceived||(o.framesReceived=0),ve(Eg(r.port2),Qe(Ne(i,ne.INIT)),Ve(s=>{let{data:n,packetsReceived:d}=s;i.stat.packetsReceived=d,i.stat.framesReceived++,e++;let p=n[4]&31;if(e<=10){let E=Array.from(n.slice(0,10)).map(_=>_.toString(16).padStart(2,"0")).join(" ");this._log.info(`Frame ${e} - Size: ${n.length} bytes, Type: ${p}, Timestamp: ${Date.now()-t}ms First 10 bytes: ${E}`)}let m;switch(p){case 5:case 7:m="key";break;default:m="delta";break}i.isAvailable?i.decodeFrame({data:n.buffer,type:m,timestamp:(Date.now()-t)*1e3}):console.warn("track is not available")},()=>{},()=>{r.port2.postMessage(null),r.port2.close()}))})}var pu=[];function Dg(i){var p;let t=Ct();if(this.state!=="joined")throw new Error("Room is not joined");if(i.state==="publish")return;for(let m=0;m<=pu.length;m++)if(!pu[m]){pu[m]=this,this.index=m;break}let e=i.profile;this._log.info("start push audio",this.index,e);let r=new MessageChannel,o=i.enableEncodeFrame?new MessageChannel:null;(p=this.session)==null||p.postMessage({cmd:"pushAudio",payload:Z({index:this.index},e)},o?[r.port2,o.port2]:[r.port2]),r.port1.onmessage=m=>{m.data==null||(typeof m.data=="number"?t.next(m.data):o&&o.port1.postMessage(Ee(Z({},m.data),{data:new Uint8Array(i.encodeFrame({data:m.data.data.buffer,timestamp:m.data.timestamp}).data)})))};let s=new MediaStream,n,d=m=>{let E=s.getAudioTracks()[0];E&&(n.disconnect(),s.removeTrack(E)),s.addTrack(m),this._log.info("push audio track:",m.readyState,m.getSettings().deviceId),n=et("player").createMediaStreamSource(s),n.connect(lu.worklet,0,this.index)};ve(Ne(i,"output-media-track-changed"),Qe(Ne(i,"capture")),Ve(d,console.error,()=>{this._log.info("stop push audio",e),i.volume=0,n.disconnect(),pu[this.index]=null,o&&o.port1.postMessage(null),r.port1.postMessage(null)})),ve(t,Ia(m=>i.volume=m),Ho(Md(1e3)),Ve(()=>{i.volume=0})),d(i.outMediaTrack)}var V1=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium"});var Sp=class{constructor(t,e,r,o){this.localTrack=t;this.type=e;this.config=r;this.port=o;u(this,"track");u(this,"label");u(this,"insertKeyFrame",!0);u(this,"encoder");u(this,"tsMap",new Map);t._log.info("create Video Encoder",r)}trans(t,e,r){let o=this.recreate(r);e.signal.addEventListener("abort",()=>{o.close()});let s=0;return t.pipeThrough(new TransformStream({transform:(n,d)=>{o.state==="configured"&&(this.tsMap.set(s,Date.now()),this.encode(n),s++,d.enqueue(n))}}),e)}encode(t){this.encoder.encode(t,{keyFrame:this.insertKeyFrame}),this.insertKeyFrame=!1}start(t,e,r){let o=this.recreate(r),s=0;t.pipeTo(new WritableStream({write:n=>{o.state==="configured"&&(s<10&&console.log(`capture ${this.label} track frame:`,s,Date.now(),n.timestamp,n.displayWidth,n.displayHeight),(n.displayWidth!==this.config.width||n.displayHeight!==this.config.height)&&(console.log("resize video track frame:",n.displayWidth,n.displayHeight,this.config.width,this.config.height),this.configure({width:n.displayWidth,height:n.displayHeight})),this.tsMap.set(s,Date.now()),this.encode(n),s<10&&console.log(`encode ${this.label} track frame:`,s),s++,n.close())}}),e).catch(n=>{console.warn(n),o.close()})}recreate(t,e=0){let r=0,o=new VideoEncoder({output:s=>{let n=this.tsMap.get(r);if(this.tsMap.delete(s.timestamp),r<10&&(r===0&&e===0&&H.emit(L.SEND_FIRST_VIDEO_FRAME,{room:t}),console.log(`encoded ${this.label} track frame:`,r,Date.now(),s.timestamp)),r++,this.track.enabled===!1)return;let d=null;if(this.localTrack.enableEncodeFrame){d=new Uint8Array(s.byteLength),s.copyTo(d);let p=this.localTrack.encodeFrame({data:d.buffer},this.type===3);d=new Uint8Array(p.data)}d?(this.localTrack.stat.bytesSent+=d.length,this.port.postMessage({chunk:{type:s.type,timestamp:s.timestamp,data:d,duration:s.duration},timestamp:n},[d.buffer])):(this.localTrack.stat.bytesSent+=s.byteLength,this.port.postMessage({chunk:s,timestamp:n}))},error:s=>{console.warn(s,this.config),setTimeout(()=>this.recreate(t,e+1),100)}});return this.encoder=o,this.configure({}),o}configure(t){var e;(e=this.encoder)==null||e.configure(Object.assign(this.config,t))}close(){this.port.postMessage(null),this.port.close()}};function hu(i,t){return y(this,null,function*(){let e=i.mediaType===2,r=e?"screen":"video",o={codec:"avc1.420028",avc:{format:"annexb"},hardwareAcceleration:Nt.useHardEncoder,width:t.profile.width,height:t.profile.height,framerate:t.profile.frameRate,bitrate:t.profile.bitrate*1e3},s=new MessageChannel;this.postMessage({cmd:"pushVideo",payload:t},[s.port1]);let n=new Sp(i,t.type,o,s.port2);return s.port2.onmessage=d=>{if(d.data===260)n.insertKeyFrame=!0;else if(!e){let{bitrate:p}=d.data;Dn({configureBr:[d.data.bitrate,p]}),n.configure({bitrate:p})}},this._log.info("start push",r,t),n})}function wg(i){return y(this,null,function*(){let t=i.mediaType===2,e=t?"screen":"video",r={type:t?7:2,profile:i.profile,trackType:t?"screen":"camera"};!t&&i.outMediaTrack instanceof CanvasCaptureMediaStreamTrack&&(r.trackType="canvas");let{trackType:o}=r,{width:s,height:n}=i.outMediaTrack.getSettings();r.profile.width=s,r.profile.height=n;let d=yield hu.call(this,i,r);this._log.info("VideoEncoder created",r);let p,m=E=>y(this,null,function*(){if(p==null||p.abort("track changed"),!E)return;p=new AbortController;let{width:_,height:b,displaySurface:C}=E.getSettings();_&&(d.config.width=_),b&&(d.config.height=b);let k=Xt.match(/Chrome\/(\d+)/);(k==null?void 0:k[1])==="114"&&C==="browser"&&delete d.config.hardwareAcceleration,this._log.info("push",e,"track:",E.readyState,E.getSettings());let x=new MediaStreamTrackProcessor({track:E}).readable,P="small"in i&&i.small;P?(this.smallEncoder||(this.smallEncoder=yield hu.call(this,i,{profile:P,type:3,trackType:o})),this.smallEncoder.track=E,this.smallEncoder.label="small",x=this.smallEncoder.trans(x,p,this)):this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder),d.track=E,d.label=e,d.start(x,p,this)});return ve(Ne(i,"output-media-track-changed"),Qe(Ne(i,"capture")),Ve(m,console.error,()=>{var E;this._log.info("stop push",e,r),p.abort("unpublish"),d.close(),(E=this.smallEncoder)==null||E.close()})),m(i.outMediaTrack)})}var Ki=class Ki extends ne{constructor(e){var r,o;super((o=(r=e.roomid)==null?void 0:r.toString())!=null?o:e.name,"volumeEvaluation");this.room=e;u(this,"enableInBackground",!1);u(this,"interval",400);e.on("joined",()=>{this.emit(Ki.INTERVALCHANGED,this.interval)}),ve(Ne(this,Ki.INTERVALCHANGED),ji(s=>this.room.state==="joined"?this.room.fromWorker("getAudioEnergy",s):ve(Nf(s),Gi(()=>[]))),Ve(s=>{s.forEach(n=>{this.room.remotePublishedUserMap.has(n.userId)&&(this.room.remotePublishedUserMap.get(n.userId).remoteAudioTrack.volume=n.volume)}),(!document.hidden||this.enableInBackground)&&this.state==ne.ON&&this.room.emit("audio-volume",s)}))}start(e,r){this.interval=e,this.enableInBackground=r,this.emit(Ki.INTERVALCHANGED,this.interval)}stop(){}};u(Ki,"INTERVALCHANGED","intervalChanged"),X([qe([ne.INIT,ne.OFF],ne.ON)],Ki.prototype,"start",1),X([qe([],ne.OFF)],Ki.prototype,"stop",1);var fu=Ki;var eo=class eo extends du{constructor(e){super(e);u(this,"index",0);u(this,"session");u(this,"tinyid");u(this,"roomid");u(this,"openid");u(this,"socketid");u(this,"relayip");u(this,"clientip");u(this,"remotePublishedUserMap",new Map);u(this,"bussinessInfo");u(this,"token");u(this,"audioVolumeEvalution",new fu(this));u(this,"enableAIVoice",Tp);u(this,"AbilityOption",{AVLimit:{EncVideoCodec:"H265",EncVideoWidth:0,EncVideoHeight:0,EncVideoBr:"0",EncVideoFps:0,EncAudioCodec:"opus",EncAudioFS:0,EncAudioCh:0,EncAudioBr:"0"},GeneralLimit:{CPULimit:{uint32_CPU_num:navigator.hardwareConcurrency||0,str_CPU_name:navigator.platform,uint32_CPU_maxfreq:0,model:"",uint32_total_memory:0},uint32_terminal_type:il(),uint32_device_type:0,str_os_verion:ol(),uint32_link_type:1,str_client_version:rt,uint32_net_type:ho[Lr.getNetworkType()],ua:navigator.userAgent,version:""}});u(this,"joinAbortController",new AbortController);u(this,"smallAbortCtrl");u(this,"smallEncoder");e.tinyId&&(this.tinyId=e.tinyId,Ip(!0)),this._log||(this._log=e.logger),this.bussinessInfo=e.bussinessInfo,e.encodedDataProcessingListener&&this.setEncodedDataProcessingListener(e.encodedDataProcessingListener)}replaceTrack(e){return y(this,null,function*(){})}getLogger(){return this._log}postMessage(e,r){this.session&&(e?typeof e=="string"?this.session.postMessage({cmd:e,payload:r}):this.session.postMessage(e,r):this.session.postMessage(null))}sendMessage(e,r){return new Promise((o,s)=>{this.state!="joined"&&s("join room first");let n=new MessageChannel;this.postMessage({cmd:e,payload:r},[n.port1]),n.port2.onmessageerror=s,n.port2.onmessage=d=>{n.port2.close(),o(d.data)}})}fromWorker(e,r){if(this.state!="joined")throw"join room first";return o=>{var n;let s=new MessageChannel;s.port2.onmessage=d=>{d.data?o.next(d.data):o.complete()},s.port2.onmessageerror=d=>o.error(d),o.defer(()=>{s.port2.postMessage(null),s.port2.close()}),(n=this.session)==null||n.postMessage({cmd:e,payload:r},[s.port1])}}switchRole(e){return y(this,null,function*(){if(e!==this.role)return this._log.info(`switchRole() => switch role to: ${e}`),e=="audience"&&this.unpublish(...this.localTracks),this.sendMessage("switchRole",e=="audience"?21:20).then(r=>{this.role=e})})}join(e,r,o){return y(this,null,function*(){var p,m,E;let s=Lr.getEnv(),n=Yc(),d={isH264EncodeSupported:this.checkSystemResult.detail.isH264EncodeSupported,isVp8EncodeSupported:this.checkSystemResult.detail.isVp8EncodeSupported,frameWorkType:o,params:e,proxy_wt:(p=this.proxy_wt)==null?void 0:p.replace("https://",""),proxy_ws:(m=this.proxy_ws)==null?void 0:m.replace("wss://",""),proxy_cloud:(E=this.scheduleResult.iceServers)!=null&&E.length?this.scheduleResult.iceServers[0].urls:[],proxy_unified:this.proxy_unified,domains:this.scheduleResult.domains,env:s,osName:Ns(),browserInfo:Yc(),tinyId:this.tinyId,joinReq:{useStrRoomid:!!this.useStringRoomId,roomid:String(e.roomId||e.strRoomId),sdkAppID:String(e.sdkAppId),userSig:e.userSig,privMapEncrypt:e.privateMapKey||"",privMap:"",pstnBizType:0,role:"user",jsSdkVersion:rt,browserVersion:n.browserName+n.browserVersion,closeLocalMedia:!0,trtcscene:r==="live"?2:1,trtcrole:e.role,bussinessInfo:e.businessInfo||this.bussinessInfo||"",isAuxUser:0,autoSubscribe:this.autoReceiveAudio&&this.autoReceiveVideo,AbilityOption:this.AbilityOption}};yield Rg.call(this,d),console.log(this),lu.playAudio(_=>this.postMessage({cmd:"setAudioWorkletPort"},[_])),this.checkDestroy()})}leave(){return y(this,null,function*(){this.remotePublishedUserMap.forEach(e=>{e.remoteAudioTrack.close(),e.remoteAuxiliaryTrack.close(),e.remoteVideoTrack.close()}),this.postMessage(null),this.remotePublishedUserMap.clear(),this.localTracks.forEach((e,r)=>r.unpublish())})}getSignalInfo(){return{tinyId:this.tinyid,clientIp:this.clientip,signalIp:"",relayIp:this.relayip,relayInnerIp:"",relayPort:0}}enableAudioVolumeEvaluation(e=2e3,r=!1){e<=0?this.audioVolumeEvalution.stop():this.audioVolumeEvalution.start(e,r)}getLocalAudioStats(){return this.sendMessage("getLocalAudioStats")}getLocalVideoStats(){return this.sendMessage("getLocalVideoStats")}afterJoin(){return y(this,null,function*(){let e=Qe(Ne(this,"left"));ve(r=>y(this,null,function*(){let o=new MessageChannel;o.port2.onmessage=s=>{s.data?r.next({data:s.data,port:o.port2}):r.complete()},o.port2.onmessageerror=s=>r.error(s),r.defer(()=>{o.port2.postMessage(null),o.port2.close()}),this.postMessage({cmd:"decodeAudio",payload:!!this.audioManager.decodePipeline[0]},[o.port1])}),e,Ve(({data:r,port:o})=>{let s=this.audioManager.decodePipeline[0]({frame:{data:r.data.buffer}});o.postMessage(Ee(Z({},r),{data:new Uint8Array(s.data)}),[s.data])}))})}onWorkerEvent(e,r){switch(e!=="network-quality"&&console.info(this.userId,"onWorkerEvent",e,JSON.stringify(r)),e){case L.RECEIVED_PUBLISHED_USER_LIST:H.emit(e,Z({room:this},r));return;case"1":if(r.userId===this.userId)return;this.emit("peer-join",r);return;case"2":this.emit("peer-leave",r);return;case"3":let o=new tu(this,r);this.remotePublishedUserMap.set(r.userId,o),this.emit("remote-published",o);return;case"5":{let _=r,b=this.remotePublishedUserMap.get(_);b&&(b.remoteVideoTrack.close(),b.remoteAuxiliaryTrack.close(),b.remoteAudioTrack.close(),this.remotePublishedUserMap.delete(_),this.emit("remote-unpublished",b))}return;case"banned":switch(r){case 8:this.emit("banned",{reason:"kick",message:""});return;case 2:case 6:case 4:this.emit("banned",{reason:"banned",message:""});return;case 7:case 5:this.emit("banned",{reason:"room_disband",message:""});return}break;case"6":{let{prevMuteState:_,muteState:b,flag:C}=r,k=this.remotePublishedUserMap.get(b.userId);if(!k){this.emit("remote-publish-state-changed",r);return}k.flag=C}H.emit(L.REMOTE_PUBLISH_STATE_CHANGED,Z({room:this},r)),this.emit("remote-publish-state-changed",r);return;case"network-quality":this.quality=Z({},r);let{uplinkLoss:s,uplinkRTT:n,uplinkInfo:d,downlinkInfo:p,msg_down_stream_info:m}=r,E={str_sdk_version:rt,uint64_datetime:Date.now(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyid},msg_device_info:{uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:ho[Nn()]},msg_event_msg:Df(this.userId),str_acc_ip:this.relayip,str_client_ip:this.clientip,msg_up_stream_info:d,msg_down_stream_info:m};H.emit(L.HEARTBEAT_REPORT,{room:this,report:E}),this.emit("heartbeat-report",E),H.emit(L.NETWORK_QUALITY,{room:this,uplink:{rtt:n,loss:s},downlinks:p}),delete r.downlinkInfo;break;case"signal-connection-state-changed":H.emit(L.SIGNAL_CONNECTION_STATE_CHANGED,Z({room:this},r));return}this.emit(e,r)}sendStartPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("publishCdn",e)}sendStopPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("stopPublishCdn",e)}sendStartMixTranscode(e){return this.sendMessage("startMcuMix",e)}sendStopMixTranscode(e){return this.sendMessage("stopMcuMix",e)}publish(...e){return y(this,null,function*(){let r=e.reduce((d,p)=>p.mediaType|d,0),o=this.sendMessage("publish",r).then(d=>d.err!==0?Promise.reject(d.err):d),s=0,n=d=>y(this,null,function*(){switch(yield o,d.muted&&(s|=d.mediaType),Pt(d,d).add("mute",()=>{this.postMessage("mute",{mediaType:d.mediaType,userId:this.userId,srctinyid:this.tinyid,remove:!0})}).add("unmute",()=>{this.postMessage("unmute",{mediaType:d.mediaType,userId:this.userId,srctinyid:this.tinyid,add:!0})}),d.mediaType){case 1:Dg.call(this,d);break;default:yield wg.call(this,d)}});yield Promise.all(e.map(n)),s&&this.postMessage("mute",{mediaType:s,srctinyid:this.tinyid,userId:this.openid,remove:!0})})}unpublish(...e){return y(this,null,function*(){e.forEach(ut)})}subscribe(...e){return y(this,null,function*(){let r=e.reduce((_,b)=>b.mediaType|_,0),{userId:o,tinyId:s,streamType:n}=e[0],d=this.remotePublishedUserMap.get(o),p=Z({},d.subscribeState),m=Object.assign(new Yn,p);m.mediaType|=r,H.emit(L.SUBSCRIBE_START,{room:this,streamType:n,remotePublishedUser:d,subscribeState:m});let E=yield this.sendMessage("subscribe",{mediaType:m.mediaType,userId:o,srctinyid:s,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8,2].filter(_=>m.mediaType&_).map(_=>({mediaType:_,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}});console.dir("subscribe",E),yield Promise.all(e.filter(_=>!_.isSubscribed).map(_=>{switch(_.mediaType){case 1:return vg.call(this,_);default:return Cg.call(this,_)}})),H.emit(L.SUBSCRIBE_SUCCESS,{room:this,streamType:n,remotePublishedUser:d})})}unsubscribe(...e){return y(this,null,function*(){let r=0;for(let o of e)r|=o.mediaType,o.unsubscribe();if(e.length){let{userId:o,streamType:s,tinyId:n}=e[0];yield this.sendMessage("unSubscribe",{mediaType:r,srctinyid:n,userId:o}),H.emit(L.UNSUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:this.remotePublishedUserMap.get(o)})}})}enableSmall(e){return y(this,null,function*(){var r;if(e){if(this.videoManager.smallTrack){let o=this.videoManager.cameraTrack;this.smallEncoder=yield hu.call(this,o,{profile:o.small,type:3,trackType:"camera"});let s=new MediaStreamTrackProcessor({track:this.videoManager.smallTrack}).readable;this.smallEncoder.track=this.videoManager.smallTrack,this.smallEncoder.label="small",this.smallAbortCtrl=new AbortController,this.smallEncoder.start(s,this.smallAbortCtrl,this),this._log.info("push small")}}else(r=this.smallAbortCtrl)==null||r.abort("stop"),this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder)})}changeType(e,r){let o=this.remotePublishedUserMap.get(r.userId),s=e?8:4;if(o.remoteVideoTrack.mediaType===s)return;let n={srctinyid:r.tinyId,mediaType:s,userId:r.userId,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8].filter(d=>s&d).map(d=>({mediaType:d,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}};o.remoteVideoTrack.mediaType=n.mediaType,this.postMessage("changetype",n)}destroy(){this.isDestroyed||(super.destroy(),this.isDestroyed=!0,this.joinAbortController.abort("destroy"))}};X([Fi(eo.prototype.afterJoin),qe(["left",ne.INIT],"joined"),ag()],eo.prototype,"join",1),X([qe("joined","left",{ignoreError:!0}),cg()],eo.prototype,"leave",1),X([hd((...e)=>0),dg()],eo.prototype,"publish",1),X([hd((...e)=>0),ug()],eo.prototype,"unpublish",1),X([hd((...e)=>e[0].userId),lg()],eo.prototype,"subscribe",1);var gu=eo;Ks.frameWorkType=37;Ks.create=function(i){let t=Ks._create.call(this,gu,i);return t._use(Bm,i==null?void 0:i.assetsPath),i!=null&&i.assetsPath&&(Nt.assetsPath=i==null?void 0:i.assetsPath),console.log("trtc wasm sdk:",rt,"created",Nt),t};Object.assign(Ks.prototype,{_setCurrentSpeaker(i){let t=et("player");return t!=null&&t.setSinkId?t.setSinkId(i):Promise.reject("not support")},_enableVideoDecodeFallback(i,t){return y(this,null,function*(){return this.startPlugin(Bm.Name,{type:"webCodecs",renderer:"videoFrame",track:i,config:{codec:"avc1.420028"},fallback:"wasm"}),new Promise((e,r)=>{ve(Ne(i,"decode-downgrade-state-changed"),Fo(o=>o.state==="STARTED"),yr(1),xm(1e4),Qe(Ne(i,ne.INIT)),Ve(e,r))})})}});var a$=Ks;export{a$ as default};
|