1(self.webpackChunkfacetalk=self.webpackChunkfacetalk||[]).push([["9678"],{396302(t,i,n){var r=function(){var i,r,o,s={},a=(()=>{var o="u">typeof document&&document.currentScript?document.currentScript.src:void 0;return"u">typeof __filename&&(o=o||__filename),function(a){if(a=a||{},l||(l=void 0!==a?a:{}),l.ready=new Promise(function(t,i){u=t,h=i}),"u">typeof window)p=function(t){window.crypto.getRandomValues(t)};else if(t.exports){var d=n(594982);p=function(t){var i=d.randomBytes(t.length);t.set(i)}}else throw Error("Cannot find global to attach library to");if("u">typeof OLM_OPTIONS)for(var c in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(c)&&(l[c]=OLM_OPTIONS[c]);l.onRuntimeInitialized=function(){ex=l._olm_error(),s.PRIVATE_KEY_LENGTH=l._olm_pk_private_key_length(),i&&i()},l.onAbort=function(t){r&&r(t)};var l,u,h,p,m,g,f,_,v,y,E=Object.assign({},l),S="object"==typeof window,b="function"==typeof importScripts,C="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,D="";C?(D=b?n(245708).dirname(D)+"/":__dirname+"/",y=()=>{v||(_=n(724972),v=n(245708))},m=function(t,i){return y(),t=v.normalize(t),_.readFileSync(t,i?void 0:"utf8")},f=t=>((t=m(t,!0)).buffer||(t=new Uint8Array(t)),t),g=(t,i,n)=>{y(),t=v.normalize(t),_.readFile(t,function(t,r){t?n(t):i(r.buffer)})},1<process.argv.length&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(t){throw t}),process.on("unhandledRejection",function(t){throw t}),l.inspect=function(){return"[Emscripten Module object]"}):(S||b)&&(b?D=self.location.href:"u">typeof document&&document.currentScript&&(D=document.currentScript.src),o&&(D=o),D=0!==D.indexOf("blob:")?D.substr(0,D.replace(/[?#].*/,"").lastIndexOf("/")+1):"",m=t=>{var i=new XMLHttpRequest;return i.open("GET",t,!1),i.send(null),i.responseText},b&&(f=t=>{var i=new XMLHttpRequest;return i.open("GET",t,!1),i.responseType="arraybuffer",i.send(null),new Uint8Array(i.response)}),g=(t,i,n)=>{var r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType="arraybuffer",r.onload=()=>{200==r.status||0==r.status&&r.response?i(r.response):n()},r.onerror=n,r.send(null)}),l.print||console.log.bind(console);var T=l.printErr||console.warn.bind(console);Object.assign(l,E),E=null,l.wasmBinary&&(x=l.wasmBinary),l.noExitRuntime,"object"!=typeof WebAssembly&&$("no native wasm support detected");var x,R,A=!1,w="u">typeof TextDecoder?new TextDecoder("utf8"):void 0;function I(t,i){if(t){var n=e_,r=t+i;for(i=t;n[i]&&!(i>=r);)++i;if(16<i-t&&n.buffer&&w)t=w.decode(n.subarray(t,i));else{for(r="";t<i;){var o=n[t++];if(128&o){var s=63&n[t++];if(192==(224&o))r+=String.fromCharCode((31&o)<<6|s);else{var a=63&n[t++];65536>(o=224==(240&o)?(15&o)<<12|s<<6|a:(7&o)<<18|s<<12|a<<6|63&n[t++])?r+=String.fromCharCode(o):(o-=65536,r+=String.fromCharCode(55296|o>>10,56320|1023&o))}}else r+=String.fromCharCode(o)}t=r}}else t="";return t}function k(t,i,n,r){if(!(0<r))return 0;var o=n;r=n+r-1;for(var s=0;s<t.length;++s){var a=t.charCodeAt(s);if(55296<=a&&57343>=a&&(a=65536+((1023&a)<<10)|1023&t.charCodeAt(++s)),127>=a){if(n>=r)break;i[n++]=a}else{if(2047>=a){if(n+1>=r)break;i[n++]=192|a>>6}else{if(65535>=a){if(n+2>=r)break;i[n++]=224|a>>12}else{if(n+3>=r)break;i[n++]=240|a>>18,i[n++]=128|a>>12&63}i[n++]=128|a>>6&63}i[n++]=128|63&a}}return i[n]=0,n-o}function O(t,i,n){return k(t,e_,i,n)}function N(t){for(var i=0,n=0;n<t.length;++n){var r=t.charCodeAt(n);127>=r?i++:2047>=r?i+=2:55296<=r&&57343>=r?(i+=4,++n):i+=3}return i}function P(){var t=R.buffer;eg=t,l.HEAP8=ef=new Int8Array(t),l.HEAP16=ev=new Int16Array(t),l.HEAP32=ey=new Int32Array(t),l.HEAPU8=e_=new Uint8Array(t),l.HEAPU16=new Uint16Array(t),l.HEAPU32=eE=new Uint32Array(t),l.HEAPF32=eS=new Float32Array(t),l.HEAPF64=eb=new Float64Array(t)}var L=[],M=[],F=[];function j(){var t=l.preRun.shift();L.unshift(t)}var V=0,B=null,U=null;function $(t){throw l.onAbort&&l.onAbort(t),T(t="Aborted("+t+")"),A=!0,t=new WebAssembly.RuntimeError(t+". Build with -sASSERTIONS for more info."),h(t),t}function H(){return eC.startsWith("data:application/octet-stream;base64,")}if(eC="olm.wasm",!H()){var J=eC;eC=l.locateFile?l.locateFile(J,D):D+J}function q(){var t=eC;try{if(t==eC&&x)return new Uint8Array(x);if(f)return f(t);throw"both async and sync fetching of the wasm failed"}catch(t){$(t)}}function G(){if(!x&&(S||b)){if("function"==typeof fetch&&!eC.startsWith("file://"))return fetch(eC,{credentials:"same-origin"}).then(function(t){if(!t.ok)throw"failed to load wasm binary file at '"+eC+"'";return t.arrayBuffer()}).catch(function(){return q()});if(g)return new Promise(function(t,i){g(eC,function(i){t(new Uint8Array(i))},i)})}return Promise.resolve().then(function(){return q()})}function z(t){for(;0<t.length;)t.shift()(l)}function K(t,i="i8"){switch(i.endsWith("*")&&(i="*"),i){case"i1":case"i8":return ef[0|t];case"i16":return ev[t>>1];case"i32":case"i64":return ey[t>>2];case"float":return eS[t>>2];case"double":return eb[t>>3];case"*":return eE[t>>2];default:$("invalid type for getValue: "+i)}return null}function W(t){var i="i8";switch(i.endsWith("*")&&(i="*"),i){case"i1":case"i8":ef[0|t]=0;break;case"i16":ev[t>>1]=0;break;case"i32":ey[t>>2]=0;break;case"i64":eD=[0,0],ey[t>>2]=eD[0],ey[t+4>>2]=eD[1];break;case"float":eS[t>>2]=0;break;case"double":eb[t>>3]=0;break;case"*":eE[t>>2]=0;break;default:$("invalid type for setValue: "+i)}}function Y(t,i,n){for(var r=0;r<t.length;++r)ef[0|i++]=t.charCodeAt(r);n||(ef[0|i]=0)}function Q(t,i,n){return n=Array(0<n?n:N(t)+1),t=k(t,n,0,n.length),i&&(n.length=t),n}var X={b:function(t,i,n){e_.copyWithin(t,i,i+n)},a:function(t){var i=e_.length;if(0x80000000<(t>>>=0))return!1;for(var n=1;4>=n;n*=2){var r=i*(1+.2/n);r=Math.min(r,t+0x6000000);var o=Math;r=Math.max(t,r),o=o.min.call(o,0x80000000,r+(65536-r%65536)%65536);e:{try{R.grow(o-eg.byteLength+65535>>>16),P();var s=1;break e}catch(t){}s=void 0}if(s)return!0}return!1}};!function(){function t(t){l.asm=t.exports,R=l.asm.c,P(),M.unshift(l.asm.d),V--,l.monitorRunDependencies&&l.monitorRunDependencies(V),0==V&&(null!==B&&(clearInterval(B),B=null),U&&(t=U,U=null,t()))}function i(i){t(i.instance)}function n(t){return G().then(function(t){return WebAssembly.instantiate(t,r)}).then(function(t){return t}).then(t,function(t){T("failed to asynchronously prepare wasm: "+t),$(t)})}var r={a:X};if(V++,l.monitorRunDependencies&&l.monitorRunDependencies(V),l.instantiateWasm)try{return l.instantiateWasm(r,t)}catch(t){return T("Module.instantiateWasm callback failed with error: "+t),!1}(function(){return x||"function"!=typeof WebAssembly.instantiateStreaming||H()||eC.startsWith("file://")||C||"function"!=typeof fetch?n(i):fetch(eC,{credentials:"same-origin"}).then(function(t){return WebAssembly.instantiateStreaming(t,r).then(i,function(t){return T("wasm streaming compile failed: "+t),T("falling back to ArrayBuffer instantiation"),n(i)})})})().catch(h)}(),l.___wasm_call_ctors=function(){return(l.___wasm_call_ctors=l.asm.d).apply(null,arguments)},l._olm_get_library_version=function(){return(l._olm_get_library_version=l.asm.f).apply(null,arguments)},l._olm_error=function(){return(l._olm_error=l.asm.g).apply(null,arguments)},l._olm_account_last_error=function(){return(l._olm_account_last_error=l.asm.h).apply(null,arguments)},l.__olm_error_to_string=function(){return(l.__olm_error_to_string=l.asm.i).apply(null,arguments)},l._olm_account_last_error_code=function(){return(l._olm_account_last_error_code=l.asm.j).apply(null,arguments)},l._olm_session_last_error=function(){return(l._olm_session_last_error=l.asm.k).apply(null,arguments)},l._olm_session_last_error_code=function(){return(l._olm_session_last_error_code=l.asm.l).apply(null,arguments)},l._olm_utility_last_error=function(){return(l._olm_utility_last_error=l.asm.m).apply(null,arguments)},l._olm_utility_last_error_code=function(){return(l._olm_utility_last_error_code=l.asm.n).apply(null,arguments)},l._olm_account_size=function(){return(l._olm_account_size=l.asm.o).apply(null,arguments)},l._olm_session_size=function(){return(l._olm_session_size=l.asm.p).apply(null,arguments)},l._olm_utility_size=function(){return(l._olm_utility_size=l.asm.q).apply(null,arguments)},l._olm_account=function(){return(l._olm_account=l.asm.r).apply(null,arguments)},l._olm_session=function(){return(l._olm_session=l.asm.s).apply(null,arguments)},l._olm_utility=function(){return(l._olm_utility=l.asm.t).apply(null,arguments)},l._olm_clear_account=function(){return(l._olm_clear_account=l.asm.u).apply(null,arguments)},l._olm_clear_session=function(){return(l._olm_clear_session=l.asm.v).apply(null,arguments)},l._olm_clear_utility=function(){return(l._olm_clear_utility=l.asm.w
1).apply(null,arguments)},l._olm_pickle_account_length=function(){return(l._olm_pickle_account_length=l.asm.x).apply(null,arguments)},l._olm_pickle_session_length=function(){return(l._olm_pickle_session_length=l.asm.y).apply(null,arguments)},l._olm_pickle_account=function(){return(l._olm_pickle_account=l.asm.z).apply(null,arguments)},l._olm_pickle_session=function(){return(l._olm_pickle_session=l.asm.A).apply(null,arguments)},l._olm_unpickle_account=function(){return(l._olm_unpickle_account=l.asm.B).apply(null,arguments)},l._olm_unpickle_session=function(){return(l._olm_unpickle_session=l.asm.C).apply(null,arguments)},l._olm_create_account_random_length=function(){return(l._olm_create_account_random_length=l.asm.D).apply(null,arguments)},l._olm_create_account=function(){return(l._olm_create_account=l.asm.E).apply(null,arguments)},l._olm_account_identity_keys_length=function(){return(l._olm_account_identity_keys_length=l.asm.F).apply(null,arguments)},l._olm_account_identity_keys=function(){return(l._olm_account_identity_keys=l.asm.G).apply(null,arguments)},l._olm_account_signature_length=function(){return(l._olm_account_signature_length=l.asm.H).apply(null,arguments)},l._olm_account_sign=function(){return(l._olm_account_sign=l.asm.I).apply(null,arguments)},l._olm_account_one_time_keys_length=function(){return(l._olm_account_one_time_keys_length=l.asm.J).apply(null,arguments)},l._olm_account_one_time_keys=function(){return(l._olm_account_one_time_keys=l.asm.K).apply(null,arguments)},l._olm_account_mark_keys_as_published=function(){return(l._olm_account_mark_keys_as_published=l.asm.L).apply(null,arguments)},l._olm_account_max_number_of_one_time_keys=function(){return(l._olm_account_max_number_of_one_time_keys=l.asm.M).apply(null,arguments)},l._olm_account_generate_one_time_keys_random_length=function(){return(l._olm_account_generate_one_time_keys_random_length=l.asm.N).apply(null,arguments)},l._olm_account_generate_one_time_keys=function(){return(l._olm_account_generate_one_time_keys=l.asm.O).apply(null,arguments)},l._olm_account_generate_fallback_key_random_length=function(){return(l._olm_account_generate_fallback_key_random_length=l.asm.P).apply(null,arguments)},l._olm_account_generate_fallback_key=function(){return(l._olm_account_generate_fallback_key=l.asm.Q).apply(null,arguments)},l._olm_account_fallback_key_length=function(){return(l._olm_account_fallback_key_length=l.asm.R).apply(null,arguments)},l._olm_account_fallback_key=function(){return(l._olm_account_fallback_key=l.asm.S).apply(null,arguments)},l._olm_account_unpublished_fallback_key_length=function(){return(l._olm_account_unpublished_fallback_key_length=l.asm.T).apply(null,arguments)},l._olm_account_unpublished_fallback_key=function(){return(l._olm_account_unpublished_fallback_key=l.asm.U).apply(null,arguments)},l._olm_account_forget_old_fallback_key=function(){return(l._olm_account_forget_old_fallback_key=l.asm.V).apply(null,arguments)},l._olm_create_outbound_session_random_length=function(){return(l._olm_create_outbound_session_random_length=l.asm.W).apply(null,arguments)},l._olm_create_outbound_session=function(){return(l._olm_create_outbound_session=l.asm.X).apply(null,arguments)},l._olm_create_inbound_session=function(){return(l._olm_create_inbound_session=l.asm.Y).apply(null,arguments)},l._olm_create_inbound_session_from=function(){return(l._olm_create_inbound_session_from=l.asm.Z).apply(null,arguments)},l._olm_session_id_length=function(){return(l._olm_session_id_length=l.asm._).apply(null,arguments)},l._olm_session_id=function(){return(l._olm_session_id=l.asm.$).apply(null,arguments)},l._olm_session_has_received_message=function(){return(l._olm_session_has_received_message=l.asm.aa).apply(null,arguments)},l._olm_session_describe=function(){return(l._olm_session_describe=l.asm.ba).apply(null,arguments)},l._olm_matches_inbound_session=function(){return(l._olm_matches_inbound_session=l.asm.ca).apply(null,arguments)},l._olm_matches_inbound_session_from=function(){return(l._olm_matches_inbound_session_from=l.asm.da).apply(null,arguments)},l._olm_remove_one_time_keys=function(){return(l._olm_remove_one_time_keys=l.asm.ea).apply(null,arguments)},l._olm_encrypt_message_type=function(){return(l._olm_encrypt_message_type=l.asm.fa).apply(null,arguments)},l._olm_encrypt_random_length=function(){return(l._olm_encrypt_random_length=l.asm.ga).apply(null,arguments)},l._olm_encrypt_message_length=function(){return(l._olm_encrypt_message_length=l.asm.ha).apply(null,arguments)},l._olm_encrypt=function(){return(l._olm_encrypt=l.asm.ia).apply(null,arguments)},l._olm_decrypt_max_plaintext_length=function(){return(l._olm_decrypt_max_plaintext_length=l.asm.ja).apply(null,arguments)},l._olm_decrypt=function(){return(l._olm_decrypt=l.asm.ka).apply(null,arguments)},l._olm_sha256_length=function(){return(l._olm_sha256_length=l.asm.la).apply(null,arguments)},l._olm_sha256=function(){return(l._olm_sha256=l.asm.ma).apply(null,arguments)},l._olm_ed25519_verify=function(){return(l._olm_ed25519_verify=l.asm.na).apply(null,arguments)},l._olm_pk_encryption_last_error=function(){return(l._olm_pk_encryption_last_error=l.asm.oa).apply(null,arguments)},l._olm_pk_encryption_last_error_code=function(){return(l._olm_pk_encryption_last_error_code=l.asm.pa).apply(null,arguments)},l._olm_pk_encryption_size=function(){return(l._olm_pk_encryption_size=l.asm.qa).apply(null,arguments)},l._olm_pk_encryption=function(){return(l._olm_pk_encryption=l.asm.ra).apply(null,arguments)},l._olm_clear_pk_encryption=function(){return(l._olm_clear_pk_encryption=l.asm.sa).apply(null,arguments)},l._olm_pk_encryption_set_recipient_key=function(){return(l._olm_pk_encryption_set_recipient_key=l.asm.ta).apply(null,arguments)},l._olm_pk_key_length=function(){return(l._olm_pk_key_length=l.asm.ua).apply(null,arguments)},l._olm_pk_ciphertext_length=function(){return(l._olm_pk_ciphertext_length=l.asm.va).apply(null,arguments)},l._olm_pk_mac_length=function(){return(l._olm_pk_mac_length=l.asm.wa).apply(null,arguments)},l._olm_pk_encrypt_random_length=function(){return(l._olm_pk_encrypt_random_length=l.asm.xa).apply(null,arguments)},l._olm_pk_encrypt=function(){return(l._olm_pk_encrypt=l.asm.ya).apply(null,arguments)},l._olm_pk_decryption_last_error=function(){return(l._olm_pk_decryption_last_error=l.asm.za).apply(null,arguments)},l._olm_pk_decryption_last_error_code=function(){return(l._olm_pk_decryption_last_error_code=l.asm.Aa).apply(null,arguments)},l._olm_pk_decryption_size=function(){return(l._olm_pk_decryption_size=l.asm.Ba).apply(null,arguments)},l._olm_pk_decryption=function(){return(l._olm_pk_decryption=l.asm.Ca).apply(null,arguments)},l._olm_clear_pk_decryption=function(){return(l._olm_clear_pk_decryption=l.asm.Da).apply(null,arguments)},l._olm_pk_private_key_length=function(){return(l._olm_pk_private_key_length=l.asm.Ea).apply(null,arguments)},l._olm_pk_generate_key_random_length=function(){return(l._olm_pk_generate_key_random_length=l.asm.Fa).apply(null,arguments)},l._olm_pk_key_from_private=function(){return(l._olm_pk_key_from_private=l.asm.Ga).apply(null,arguments)},l._olm_pk_generate_key=function(){return(l._olm_pk_generate_key=l.asm.Ha).apply(null,arguments)},l._olm_pickle_pk_decryption_length=function(){return(l._olm_pickle_pk_decryption_length=l.asm.Ia).apply(null,arguments)},l._olm_pickle_pk_decryption=function(){return(l._olm_pickle_pk_decryption=l.asm.Ja).apply(null,arguments)},l._olm_unpickle_pk_decryption=function(){return(l._olm_unpickle_pk_decryption=l.asm.Ka).apply(null,arguments)},l._olm_pk_max_plaintext_length=function(){return(l._olm_pk_max_plaintext_length=l.asm.La).apply(null,arguments)},l._olm_pk_decrypt=function(){return(l._olm_pk_decrypt=l.asm.Ma).apply(null,arguments)},l._olm_pk_get_private_key=function(){return(l._olm_pk_get_private_key=l.asm.Na).apply(null,arguments)},l._olm_pk_signing_size=function(){return(l._olm_pk_signing_size=l.asm.Oa).apply(null,arguments)},l._olm_pk_signing=function(){return(l._olm_pk_signing=l.asm.Pa).apply(null,arguments)},l._olm_pk_signing_last_error=function(){return(l._olm_pk_signing_last_error=l.asm.Qa).apply(null,arguments)},l._olm_pk_signing_last_error_code=function(){return(l._olm_pk_signing_last_error_code=l.asm.Ra).apply(null,arguments)},l._olm_clear_pk_signing=function(){return(l._olm_clear_pk_signing=l.asm.Sa).apply(null,arguments)},l._olm_pk_signing_seed_length=function(){return(l._olm_pk_signing_seed_length=l.asm.Ta).apply(null,arguments)},l._olm_pk_signing_public_key_length=function(){return(l._olm_pk_signing_public_key_length=l.asm.Ua).apply(null,arguments)},l._olm_pk_signing_key_from_seed=function(){return(l._olm_pk_signing_key_from_seed=l.asm.Va).apply(null,arguments)},l._olm_pk_signature_length=function(){return(l._olm_pk_signature_length=l.asm.Wa).apply(null,arguments)},l._olm_pk_sign=function(){return(l._olm_pk_sign=l.asm.Xa).apply(null,arguments)},l._olm_inbound_group_session_size=function(){return(l._olm_inbound_group_session_size=l.asm.Ya).apply(null,arguments)},l._olm_inbound_group_session=function(){return(l._olm_inbound_group_session=l.asm.Za).apply(null,arguments)},l._olm_clear_inbound_group_session=function(){return(l._olm_clear_inbound_group_session=l.asm._a).apply(null,arguments)},l._olm_inbound_group_session_last_error=function(){return(l._olm_inbound_group_session_last_error=l.asm.$a).apply(null,arguments)},l._olm_inbound_group_session_last_error_code=function(){return(l._olm_inbound_group_session_last_error_code=l.asm.ab).apply(null,arguments)},l._olm_init_inbound_group_session=function(){return(l._olm_init_inbound_group_session=l.asm.bb).apply(null,arguments)},l._olm_import_inbound_group_session=function(){return(l._olm_import_inbound_group_session=l.asm.cb).apply(null,arguments)},l._olm_pickle_inbound_group_session_length=function(){return(l._olm_pickle_inbound_group_session_length=l.asm.db).apply(null,arguments)},l._olm_pickle_inbound_group_session=function(){return(l._olm_pickle_inbound_group_session=l.asm.eb).apply(null,arguments)},l._olm_unpickle_inbound_group_session=function(){return(l._olm_unpickle_inbound_group_session=l.asm.fb).apply(null,arguments)},l._olm_group_decrypt_max_plaintext_length=function(){return(l._olm_group_decrypt_max_plaintext_length=l.asm.gb).apply(null,arguments)},l._olm_group_decrypt=function(){return(l._olm_group_decrypt=l.asm.hb).apply(null,arguments)},l._olm_inbound_group_session_id_length=function(){return(l._olm_inbound_group_session_id_length=l.asm.ib).apply(null,arguments)},l._olm_inbound_group_session_id=function(){return(l._olm_inbound_group_session_id=l.asm.jb).apply(null,arguments)},l._olm_inbound_group_session_first_known_index=function(){return(l._olm_inbound_group_session_first_known_index=l.asm.kb).apply(null,arguments)},l._olm_inbound_group_session_is_verified=function(){return(l._olm_inbound_group_session_is_verified=l.asm.lb).apply(null,arguments)},l._olm_export_inbound_group_session_length=function(){return(l._olm_export_inbound_group_session_length=l.asm.mb).apply(null,arguments)},l._olm_export_inbound_group_session=function(){return(l._olm_export_inbound_group_session=l.asm.nb).apply(null,arguments)},l._olm_outbound_group_session_size=function(){return(l._olm_outbound_group_session_size=l.asm.ob).apply(null,arguments)},l._olm_outbound_group_session=function(){return(l._olm_outbound_group_session=l.asm.pb).apply(null,arguments)},l._olm_clear_outbound_group_session=function(){return(l._olm_clear_outbound_group_session=l.asm.qb).apply(null,arguments)},l._olm_outbound_group_session_last_error=function(){return(l._olm_outbound_group_session_last_error=l.asm.rb).apply(null,arguments)},l._olm_outbound_group_session_last_error_code=function(){return(l._olm_outbound_group_session_last_error_code=l.asm.sb).apply(null,arguments)},l._olm_pickle_outbound_group_session_length=function(){return(l._olm_pickle_outbound_group_session_length=l.asm.tb).apply(null,arguments)},l._olm_pickle_outbound_group_session=function(){return(l._olm_pickle_outbound_group_session=l.asm.ub).apply(null,arguments)},l._olm_unpickle_outbound_group_session=function(){return(l._olm_unpickle_outbound_group_session=l.asm.vb).apply(null,arguments)},l._olm_init_outbound_group_session_random_length=function(){return(l._olm_init_outbound_group_session_random_length=l.asm.wb).apply(null,arguments)},l._olm_init_outbound_group_session=function(){return(l._olm_init_outbound_group_session=l.asm.xb).apply(null,arguments)},l._olm_group_encrypt_message_length=function(){return(l._olm_group_encrypt_message_length=l.asm.yb).apply(null,arguments)},l._olm_group_encrypt=function(){return(l._olm_group_encrypt=l.asm.zb).apply(null,arguments)},l._olm_outbound_group_session_id_length=function(){return(l._olm_outbound_group_session_id_length=l.asm.Ab).apply(null,arguments)},l._olm_outbound_group_session_id=function(){return(l._olm_outbound_group_session_id=l.asm.Bb).apply(null,arguments)},l._olm_outbound_group_session_message_index=function(){return(l._olm_outbound_group_session_message_index=l.asm.Cb).apply(null,arguments)},l._olm_outbound_group_session_key_length=function(){return(l._olm_outbound_group_session_key_length=l.asm.Db).apply(null,arguments)},l._olm_outbound_group_session_key=function(){return(l._olm_outbound_group_session_key=l.asm.Eb).apply(null,arguments)},l._olm_sas_last_error=function(){return(l._olm_sas_last_error=l.asm.Fb).apply(null,arguments)},l._olm_sas_last_error_code=function(){return(l._olm_sas_last_error_code=l.asm.Gb).apply(null,arguments)},l._olm_sas_size=function(){return(l._olm_sas_size=l.asm.Hb).apply(null,arguments)},l._olm_sas=function(){return(l._olm_sas=l.asm.Ib).apply(null,arguments)},l._olm_clear_sas=function(){return(l._olm_clear_sas=l.asm.Jb).apply(null,arguments)},l._olm_create_sas_random_length=function(){return(l._olm_create_sas_random_length=l.asm.Kb).apply(null,arguments)},l._olm_create_sas=function(){return(l._olm_create_sas=l.asm.Lb).apply(null,arguments)},l._olm_sas_pubkey_length=function(){return(l._olm_sas_pubkey_length=l.asm.Mb).apply(null,arguments)},l._olm_sas_get_pubkey=function(){return(l._olm_sas_get_pubkey=l.asm.Nb).apply(null,arguments)}
1,l._olm_sas_set_their_key=function(){return(l._olm_sas_set_their_key=l.asm.Ob).apply(null,arguments)},l._olm_sas_is_their_key_set=function(){return(l._olm_sas_is_their_key_set=l.asm.Pb).apply(null,arguments)},l._olm_sas_generate_bytes=function(){return(l._olm_sas_generate_bytes=l.asm.Qb).apply(null,arguments)},l._olm_sas_mac_length=function(){return(l._olm_sas_mac_length=l.asm.Rb).apply(null,arguments)},l._olm_sas_calculate_mac_fixed_base64=function(){return(l._olm_sas_calculate_mac_fixed_base64=l.asm.Sb).apply(null,arguments)},l._olm_sas_calculate_mac=function(){return(l._olm_sas_calculate_mac=l.asm.Tb).apply(null,arguments)},l._olm_sas_calculate_mac_long_kdf=function(){return(l._olm_sas_calculate_mac_long_kdf=l.asm.Ub).apply(null,arguments)},l._malloc=function(){return(l._malloc=l.asm.Vb).apply(null,arguments)},l._free=function(){return(l._free=l.asm.Wb).apply(null,arguments)};var Z=l.stackSave=function(){return(Z=l.stackSave=l.asm.Xb).apply(null,arguments)},ee=l.stackRestore=function(){return(ee=l.stackRestore=l.asm.Yb).apply(null,arguments)},et=l.stackAlloc=function(){return(et=l.stackAlloc=l.asm.Zb).apply(null,arguments)};function ei(){function t(){if(!eT&&(eT=!0,l.calledRun=!0,!A)){if(z(M
1),u(l),l.onRuntimeInitialized&&l.onRuntimeInitialized(),l.postRun)for("function"==typeof l.postRun&&(l.postRun=[l.postRun]);l.postRun.length;){var t=l.postRun.shift();F.unshift(t)}z(F)}}if(!(0<V)){if(l.preRun)for("function"==typeof l.preRun&&(l.preRun=[l.preRun]);l.preRun.length;)j();z(L),0<V||(l.setStatus?(l.setStatus("Running..."),setTimeout(function(){setTimeout(function(){l.setStatus("")},1),t()},1)):t())}}if(l.UTF8ToString=I,l.stringToUTF8=O,l.intArrayFromString=Q,l.writeAsciiToMemory=Y,l.ALLOC_STACK=1,U=function t(){eT||ei(),eT||(U=t)},l.preInit)for("function"==typeof l.preInit&&(l.preInit=[l.preInit]);0<l.preInit.length;)l.preInit.pop()();function en(){var t=l._olm_outbound_group_session_size();this.ac=eR(t),this.$b=l._olm_outbound_group_session(this.ac)}function er(t){return function(){var i=t.apply(this,arguments);if(i===ex)throw i=I(l._olm_outbound_group_session_last_error(arguments[0])),Error("OLM."+i);return i}}function eo(){var t=l._olm_inbound_group_session_size();this.ac=eR(t),this.$b=l._olm_inbound_group_session(this.ac)}function es(t){return function(){var i=t.apply(this,arguments);if(i===ex)throw i=I(l._olm_inbound_group_session_last_error(arguments[0])),Error("OLM."+i);return i}}function ea(){var t=l._olm_pk_encryption_size();this.ac=eR(t),this.$b=l._olm_pk_encryption(this.ac)}function ed(t){return function(){var i=t.apply(this,arguments);if(i===ex)throw i=I(l._olm_pk_encryption_last_error(arguments[0])),Error("OLM."+i);return i}}function ec(){var t=l._olm_pk_decryption_size();this.ac=eR(t),this.$b=l._olm_pk_decryption(this.ac)}function el(t){return function(){var i=t.apply(this,arguments);if(i===ex)throw i=I(l._olm_pk_decryption_last_error(arguments[0])),Error("OLM."+i);return i}}function eu(){var t=l._olm_pk_signing_size();this.ac=eR(t),this.$b=l._olm_pk_signing(this.ac)}function eh(t){return function(){var i=t.apply(this,arguments);if(i===ex)throw i=I(l._olm_pk_signing_last_error(arguments[0])),Error("OLM."+i);return i}}function ep(){var t=l._olm_sas_size(),i=l._olm_create_sas_random_length(),n=ew(i,p);this.ac=eR(t),this.$b=l._olm_sas(this.ac),l._olm_create_sas(this.$b,n,i),eN(n,i)}function em(t){return function(){var i=t.apply(this,arguments);if(i===ex)throw i=I(l._olm_sas_last_error(arguments[0])),Error("OLM."+i);return i}}ei(),en.prototype.free=function(){l._olm_clear_outbound_group_session(this.$b),eA(this.$b)},en.prototype.pickle=eO(function(t){t=ek(t);var i=er(l._olm_pickle_outbound_group_session_length)(this.$b),n=eI(t),r=eI(i+1);try{er(l._olm_pickle_outbound_group_session)(this.$b,n,t.length,r,i)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}return I(r,i)}),en.prototype.unpickle=eO(function(t,i){var n=eI(t=ek(t)),r=eI(i=ek(i));try{er(l._olm_unpickle_outbound_group_session)(this.$b,n,t.length,r,i.length)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}}),en.prototype.create=eO(function(){var t=er(l._olm_init_outbound_group_session_random_length)(this.$b),i=ew(t,p);try{er(l._olm_init_outbound_group_session)(this.$b,i,t)}finally{eN(i,t)}}),en.prototype.encrypt=function(t){try{var i=N(t),n=er(l._olm_group_encrypt_message_length)(this.$b,i),r=eR(i+1);O(t,r,i+1);var o=eR(n+1);return er(l._olm_group_encrypt)(this.$b,r,i,o,n),W(o+n),I(o,n)}finally{void 0!==r&&(eN(r,i+1),eA(r)),void 0!==o&&eA(o)}},en.prototype.session_id=eO(function(){var t=er(l._olm_outbound_group_session_id_length)(this.$b),i=eI(t+1);return er(l._olm_outbound_group_session_id)(this.$b,i,t),I(i,t)}),en.prototype.session_key=eO(function(){var t=er(l._olm_outbound_group_session_key_length)(this.$b),i=eI(t+1);er(l._olm_outbound_group_session_key)(this.$b,i,t);var n=I(i,t);return eN(i,t),n}),en.prototype.message_index=function(){return er(l._olm_outbound_group_session_message_index)(this.$b)},s.OutboundGroupSession=en,eo.prototype.free=function(){l._olm_clear_inbound_group_session(this.$b),eA(this.$b)},eo.prototype.pickle=eO(function(t){t=ek(t);var i=es(l._olm_pickle_inbound_group_session_length)(this.$b),n=eI(t),r=eI(i+1);try{es(l._olm_pickle_inbound_group_session)(this.$b,n,t.length,r,i)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}return I(r,i)}),eo.prototype.unpickle=eO(function(t,i){var n=eI(t=ek(t)),r=eI(i=ek(i));try{es(l._olm_unpickle_inbound_group_session)(this.$b,n,t.length,r,i.length)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}}),eo.prototype.create=eO(function(t){var i=eI(t=ek(t));try{es(l._olm_init_inbound_group_session)(this.$b,i,t.length)}finally{for(eN(i,t.length),i=0;i<t.length;i++)t[i]=0}}),eo.prototype.import_session=eO(function(t){var i=eI(t=ek(t));try{es(l._olm_import_inbound_group_session)(this.$b,i,t.length)}finally{for(eN(i,t.length),i=0;i<t.length;i++)t[i]=0}}),eo.prototype.decrypt=eO(function(t){try{var i=eR(t.length);Y(t,i,!0);var n=es(l._olm_group_decrypt_max_plaintext_length)(this.$b,i,t.length);Y(t,i,!0);var r=eR(n+1),o=eI(4),s=es(l._olm_group_decrypt)(this.$b,i,t.length,r,n,o);return W(r+s),{plaintext:I(r,s),message_index:K(o,"i32")}}
1finally{void 0!==i&&eA(i),void 0!==r&&(eN(r,s),eA(r))}}),eo.prototype.session_id=eO(function(){var t=es(l._olm_inbound_group_session_id_length)(this.$b),i=eI(t+1);return es(l._olm_inbound_group_session_id)(this.$b,i,t),I(i,t)}),eo.prototype.first_known_index=eO(function(){return es(l._olm_inbound_group_session_first_known_index)(this.$b)}),eo.prototype.export_session=eO(function(t){var i=es(l._olm_export_inbound_group_session_length)(this.$b),n=eI(i+1);return er(l._olm_export_inbound_group_session)(this.$b,n,i,t),t=I(n,i),eN(n,i),t}),s.InboundGroupSession=eo,ea.prototype.free=function(){l._olm_clear_pk_encryption(this.$b),eA(this.$b)},ea.prototype.set_recipient_key=eO(function(t){var i=eI(t=ek(t));ed(l._olm_pk_encryption_set_recipient_key)(this.$b,i,t.length)}),ea.prototype.encrypt=eO(function(t){try{var i=N(t),n=eR(i+1);O(t,n,i+1);var r=ed(l._olm_pk_encrypt_random_length)(),o=ew(r,p),s=ed(l._olm_pk_ciphertext_length)(this.$b,i),a=eR(s+1),d=ed(l._olm_pk_mac_length)(this.$b),c=eI(d+1);W(c+d);var u=ed(l._olm_pk_key_length)(),h=eI(u+1);return W(h+u),ed(l._olm_pk_encrypt)(this.$b,n,i,a,s,c,d,h,u,o,r),W(a+s),{ciphertext:I(a,s),mac:I(c,d),ephemeral:I(h,u)}}finally{void 0!==o&&eN(o,r),void 0!==n&&(eN(n,i+1),eA(n)),void 0!==a&&eA(a)}}),ec.prototype.free=function(){l._olm_clear_pk_decryption(this.$b),eA(this.$b)},ec.prototype.init_with_private_key=eO(function(t){var i=eI(t.length);l.HEAPU8.set(t,i);var n=el(l._olm_pk_key_length)(),r=eI(n+1);try{el(l._olm_pk_key_from_private)(this.$b,r,n,i,t.length)}finally{eN(i,t.length)}return I(r,n)}),ec.prototype.generate_key=eO(function(){var t=el(l._olm_pk_private_key_length)(),i=ew(t,p),n=el(l._olm_pk_key_length)(),r=eI(n+1);try{el(l._olm_pk_key_from_private)(this.$b,r,n,i,t)}finally{eN(i,t)}return I(r,n)}),ec.prototype.get_private_key=eO(function(){var t=ed(l._olm_pk_private_key_length)(),i=eI(t);el(l._olm_pk_get_private_key)(this.$b,i,t);var n=new Uint8Array(new Uint8Array(l.HEAPU8.buffer,i,t));return eN(i,t),n}),ec.prototype.pickle=eO(function(t){t=ek(t);var i=el(l._olm_pickle_pk_decryption_length)(this.$b),n=eI(t),r=eI(i+1);try{el(l._olm_pickle_pk_decryption)(this.$b,n,t.length,r,i)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}return I(r,i)}),ec.prototype.unpickle=eO(function(t,i){var n=eI(t=ek(t)),r=ek(i),o=eI(r),s=eI((i=el(l._olm_pk_key_length)())+1);try{el(l._olm_unpickle_pk_decryption)(this.$b,n,t.length,o,r.length,s,i)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}return I(s,i)}),ec.prototype.decrypt=eO(function(t,i,n){try{var r=N(n),o=eR(r+1);O(n,o,r+1);var s=ek(t),a=eI(s),d=ek(i),c=eI(d),u=el(l._olm_pk_max_plaintext_length)(this.$b,r),h=eR(u+1),p=el(l._olm_pk_decrypt)(this.$b,a,s.length,c,d.length,o,r,h,u);return W(h+p),I(h,p)}finally{void 0!==h&&(eN(h,p+1),eA(h)),void 0!==o&&eA(o)}}),eu.prototype.free=function(){l._olm_clear_pk_signing(this.$b),eA(this.$b)},eu.prototype.init_with_seed=eO(function(t){var i=eI(t.length);l.HEAPU8.set(t,i);var n=eh(l._olm_pk_signing_public_key_length)(),r=eI(n+1);try{eh(l._olm_pk_signing_key_from_seed)(this.$b,r,n,i,t.length)}finally{eN(i,t.length)}return I(r,n)}),eu.prototype.generate_seed=eO(function(){var t=eh(l._olm_pk_signing_seed_length)(),i=ew(t,p),n=new Uint8Array(new Uint8Array(l.HEAPU8.buffer,i,t));return eN(i,t),n}),eu.prototype.sign=eO(function(t){try{var i=N(t),n=eR(i+1);O(t,n,i+1);var r=eh(l._olm_pk_signature_length)(),o=eI(r+1);return eh(l._olm_pk_sign)(this.$b,n,i,o,r),I(o,r)}finally{void 0!==n&&(eN(n,i+1),eA(n))}}),ep.prototype.free=function(){l._olm_clear_sas(this.$b),eA(this.$b)},ep.prototype.get_pubkey=eO(function(){var t=em(l._olm_sas_pubkey_length)(this.$b),i=eI(t+1);return em(l._olm_sas_get_pubkey)(this.$b,i,t),I(i,t)}),ep.prototype.set_their_key=eO(function(t){var i=eI(t=ek(t));em(l._olm_sas_set_their_key)(this.$b,i,t.length)}),ep.prototype.is_their_key_set=eO(function(){return!!em(l._olm_sas_is_their_key_set)(this.$b)}),ep.prototype.generate_bytes=eO(function(t,i){var n=eI(t=ek(t)),r=eI(i);return em(l._olm_sas_generate_bytes)(this.$b,n,t.length,r,i),new Uint8Array(new Uint8Array(l.HEAPU8.buffer,r,i))}),ep.prototype.calculate_mac=eO(function(t,i){var n=eI(t=ek(t)),r=eI(i=ek(i)),o=em(l._olm_sas_mac_length)(this.$b),s=eI(o+1);return em(l._olm_sas_calculate_mac)(this.$b,n,t.length,r,i.length,s,o),I(s,o)}),ep.prototype.calculate_mac_fixed_base64=eO(function(t,i){var n=eI(t=ek(t)),r=eI(i=ek(i)),o=em(l._olm_sas_mac_length)(this.$b),s=eI(o+1);return em(l._olm_sas_calculate_mac_fixed_base64)(this.$b,n,t.length,r,i.length,s,o),I(s,o)}),ep.prototype.calculate_mac_long_kdf=eO(function(t,i){var n=eI(t=ek(t)),r=eI(i=ek(i)),o=em(l._olm_sas_mac_length)(this.$b),s=eI(o+1);return em(l._olm_sas_calculate_mac_long_kdf)(this.$b,n,t.length,r,i.length,s,o),I(s,o)});var eg,ef,e_,ev,ey,eE,eS,eb,eC,eD,eT,ex,eR=l._malloc,eA=l._free;function ew(t,i){var n=et(t);return i(new Uint8Array(l.HEAPU8.buffer,n,t)),n}function eI(t){return"number"==typeof t?ew(t,function(t){t.fill(0)}):ew(t.length,function(i){i.set(t)})}function ek(t){return t instanceof Uint8Array?t:Q(t,!0)}function eO(t){return function(){var i=Z();try{return t.apply(this,arguments)}finally{ee(i)}}}function eN(t,i){for(;0<i--;)l.HEAP8[t++]=0}function eP(){var t=l._olm_account_size();this.ac=eR(t),this.$b=l._olm_account(this.ac)}function eL(t){return function(){var i=t.apply(this,arguments);if(i===ex)throw i=I(l._olm_account_last_error(arguments[0])),Error("OLM."+i);return i}}function eM(){var t=l._olm_session_size();this.ac=eR(t),this.$b=l._olm_session(this.ac)}function eF(t){return function(){var i=t.apply(this,arguments);if(i===ex)throw i=I(l._olm_session_last_error(arguments[0])),Error("OLM."+i);return i}}function ej(){var t=l._olm_utility_size();this.ac=eR(t),this.$b=l._olm_utility(this.ac)}function eV(t){return function(){var i=t.apply(this,arguments);if(i===ex)throw i=I(l._olm_utility_last_error(arguments[0])),Error("OLM."+i);return i}}return eP.prototype.free=function(){l._olm_clear_account(this.$b),eA(this.$b)},eP.prototype.create=eO(function(){var t=eL(l._olm_create_account_random_length)(this.$b),i=ew(t,p);try{eL(l._olm_create_account)(this.$b,i,t)}finally{eN(i,t)}}
1),eP.prototype.identity_keys=eO(function(){var t=eL(l._olm_account_identity_keys_length)(this.$b),i=eI(t+1);return eL(l._olm_account_identity_keys)(this.$b,i,t),I(i,t)}),eP.prototype.sign=eO(function(t){var i=eL(l._olm_account_signature_length)(this.$b),n=eI(t=ek(t)),r=eI(i+1);try{eL(l._olm_account_sign)(this.$b,n,t.length,r,i)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}return I(r,i)}),eP.prototype.one_time_keys=eO(function(){var t=eL(l._olm_account_one_time_keys_length)(this.$b),i=eI(t+1);return eL(l._olm_account_one_time_keys)(this.$b,i,t),I(i,t)}),eP.prototype.mark_keys_as_published=eO(function(){eL(l._olm_account_mark_keys_as_published)(this.$b)}),eP.prototype.max_number_of_one_time_keys=eO(function(){return eL(l._olm_account_max_number_of_one_time_keys)(this.$b)}),eP.prototype.generate_one_time_keys=eO(function(t){var i=eL(l._olm_account_generate_one_time_keys_random_length)(this.$b,t),n=ew(i,p);try{eL(l._olm_account_generate_one_time_keys)(this.$b,t,n,i)}finally{eN(n,i)}}),eP.prototype.remove_one_time_keys=eO(function(t){eL(l._olm_remove_one_time_keys)(this.$b,t.$b)}),eP.prototype.generate_fallback_key=eO(function(){var t=eL(l._olm_account_generate_fallback_key_random_length)(this.$b),i=ew(t,p);try{eL(l._olm_account_generate_fallback_key)(this.$b,i,t)}finally{eN(i,t)}}),eP.prototype.fallback_key=eO(function(){var t=eL(l._olm_account_fallback_key_length)(this.$b),i=eI(t+1);return eL(l._olm_account_fallback_key)(this.$b,i,t),I(i,t)}),eP.prototype.unpublished_fallback_key=eO(function(){var t=eL(l._olm_account_unpublished_fallback_key_length)(this.$b),i=eI(t+1);return eL(l._olm_account_unpublished_fallback_key)(this.$b,i,t),I(i,t)}),eP.prototype.forget_old_fallback_key=eO(function(){eL(l._olm_account_forget_old_fallback_key)(this.$b)}),eP.prototype.pickle=eO(function(t){t=ek(t);var i=eL(l._olm_pickle_account_length)(this.$b),n=eI(t),r=eI(i+1);try{eL(l._olm_pickle_account)(this.$b,n,t.length,r,i)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}return I(r,i)}),eP.prototype.unpickle=eO(function(t,i){var n=eI(t=ek(t)),r=eI(i=ek(i));try{eL(l._olm_unpickle_account)(this.$b,n,t.length,r,i.length)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}}),eM.prototype.free=function(){l._olm_clear_session(this.$b),eA(this.$b)},eM.prototype.pickle=eO(function(t){t=ek(t);var i=eF(l._olm_pickle_session_length)(this.$b),n=eI(t),r=eI(i+1);try{eF(l._olm_pickle_session)(this.$b,n,t.length,r,i)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}return I(r,i)}),eM.prototype.unpickle=eO(function(t,i){var n=eI(t=ek(t)),r=eI(i=ek(i));try{eF(l._olm_unpickle_session)(this.$b,n,t.length,r,i.length)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}}),eM.prototype.create_outbound=eO(function(t,i,n){var r=eF(l._olm_create_outbound_session_random_length)(this.$b),o=ew(r,p);i=ek(i),n=ek(n);var s=eI(i),a=eI(n);try{eF(l._olm_create_outbound_session)(this.$b,t.$b,s,i.length,a,n.length,o,r)}finally{eN(o,r)}}),eM.prototype.create_inbound=eO(function(t,i){var n=eI(i=ek(i));try{eF(l._olm_create_inbound_session)(this.$b,t.$b,n,i.length)}finally{for(eN(n,i.length),t=0;t<i.length;t++)i[t]=0}}),eM.prototype.create_inbound_from=eO(function(t,i,n){var r=eI(i=ek(i)),o=eI(n=ek(n));try{eF(l._olm_create_inbound_session_from)(this.$b,t.$b,r,i.length,o,n.length)}finally{for(eN(o,n.length),t=0;t<n.length;t++)n[t]=0}}),eM.prototype.session_id=eO(function(){var t=eF(l._olm_session_id_length)(this.$b),i=eI(t+1);return eF(l._olm_session_id)(this.$b,i,t),I(i,t)}),eM.prototype.has_received_message=function(){return!!eF(l._olm_session_has_received_message)(this.$b)},eM.prototype.matches_inbound=eO(function(t){var i=eI(t=ek(t));return!!eF(l._olm_matches_inbound_session)(this.$b,i,t.length)}),eM.prototype.matches_inbound_from=eO(function(t,i){var n=eI(t=ek(t)),r=eI(i=ek(i));return!!eF(l._olm_matches_inbound_session_from)(this.$b,n,t.length,r,i.length)}),eM.prototype.encrypt=eO(function(t){try{var i=eF(l._olm_encrypt_random_length)(this.$b),n=eF(l._olm_encrypt_message_type)(this.$b),r=N(t),o=eF(l._olm_encrypt_message_length)(this.$b,r),s=ew(i,p),a=eR(r+1);O(t,a,r+1);var d=eR(o+1);return eF(l._olm_encrypt)(this.$b,a,r,s,i,d,o),W(d+o),{type:n,body:I(d,o)}}finally{void 0!==s&&eN(s,i),void 0!==a&&(eN(a,r+1),eA(a)),void 0!==d&&eA(d)}}),eM.prototype.decrypt=eO(function(t,i){try{var n=eR(i.length);Y(i,n,!0);var r=eF(l._olm_decrypt_max_plaintext_length)(this.$b,t,n,i.length);Y(i,n,!0);var o=eR(r+1),s=eF(l._olm_decrypt)(this.$b,t,n,i.length,o,r);return W(o+s),I(o,s)}finally{void 0!==n&&eA(n),void 0!==o&&(eN(o,r),eA(o))}}),eM.prototype.describe=eO(function(){try{var t=eR(256);return eF(l._olm_session_describe)(this.$b,t,256),I(t)}finally{void 0!==t&&eA(t)}}),ej.prototype.free=function(){l._olm_clear_utility(this.$b),eA(this.$b)},ej.prototype.sha256=eO(function(t){var i=eV(l._olm_sha256_length)(this.$b),n=eI(t=ek(t)),r=eI(i+1);try{eV(l._olm_sha256)(this.$b,n,t.length,r,i)}finally{for(eN(n,t.length),n=0;n<t.length;n++)t[n]=0}return I(r,i)}),ej.prototype.ed25519_verify=eO(function(t,i,n){var r=eI(t=ek(t)),o=eI(i=ek(i)),s=eI(n=ek(n));try{eV(l._olm_ed25519_verify)(this.$b,r,t.length,o,i.length,s,n.length)}finally{for(eN(o,i.length),t=0;t<i.length;t++)i[t]=0}}),s.Account=eP,s.Session=eM,s.Utility=ej,s.PkEncryption=ea,s.PkDecryption=ec,s.PkSigning=eu,s.SAS=ep,s.get_library_version=eO(function(){var t=eI(3);return l._olm_get_library_version(t,t+1,t+2),[K(t,"i8"),K(t+1,"i8"),K(t+2,"i8")]}),a.ready}})();return t.exports=a,s.init=function(t){return o||(t&&(OLM_OPTIONS=t),o=new Promise(function(t,n){i=function(){t()},r=function(t){n(t)},a()}))},s}();"u">
vendor: 4,351 bytes, line 1
1typeof window&&(window.Olm=r),t.exports=r},274692(t){!function(i,n){"use strict";"object"==typeof t.exports?t.exports=i.document?n(i,!0):function(t){if(!t.document)throw Error("jQuery requires a window with a document");return n(t)}:n(i)}("u">typeof window?window:this,function(t,i){"use strict";var n=[],r=Object.getPrototypeOf,o=n.slice,s=n.flat?function(t){return n.flat.call(t)}:function(t){return n.concat.apply([],t)},a=n.push,d=n.indexOf,c={},l=c.toString,u=c.hasOwnProperty,h=u.toString,p=h.call(Object),m={},g=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType&&"function"!=typeof t.item},f=function(t){return null!=t&&t===t.window},_=t.document,v={type:!0,src:!0,nonce:!0,noModule:!0};function y(t,i,n){var r,o,s=(n=n||_).createElement("script");if(s.text=t,i)for(r in v)(o=i[r]||i.getAttribute&&i.getAttribute(r))&&s.setAttribute(r,o);n.head.appendChild(s).parentNode.removeChild(s)}function E(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?c[l.call(t)]||"object":typeof t}var S="3.7.1",b=/HTML$/i,C=function(t,i){return new C.fn.init(t,i)};function D(t){var i=!!t&&"length"in t&&t.length,n=E(t);return!(g(t)||f(t))&&("array"===n||0===i||"number"==typeof i&&i>0&&i-1 in t)}function T(t,i){return t.nodeName&&t.nodeName.toLowerCase()===i.toLowerCase()}C.fn=C.prototype={jquery:S,constructor:C,length:0,toArray:function(){return o.call(this)},get:function(t){return null==t?o.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var i=C.merge(this.constructor(),t);return i.prevObject=this,i},each:function(t){return C.each(this,t)},map:function(t){return this.pushStack(C.map(this,function(i,n){return t.call(i,n,i)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(C.grep(this,function(t,i){return(i+1)%2}))},odd:function(){return this.pushStack(C.grep(this,function(t,i){return i%2}))},eq:function(t){var i=this.length,n=+t+(t<0?i:0);return this.pushStack(n>=0&&n<i?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:a,sort:n.sort,splice:n.splice},C.extend=C.fn.extend=function(){var t,i,n,r,o,s,a=arguments[0]||{},d=1,c=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[d]||{},d++),"object"==typeof a||g(a)||(a={}),d===c&&(a=this,d--);d<c;d++)if(null!=(t=arguments[d]))for(i in t)r=t[i],"__proto__"!==i&&a!==r&&(l&&r&&(C.isPlainObject(r)||(o=Array.isArray(r)))?(n=a[i],s=o&&!Array.isArray(n)?[]:o||C.isPlainObject(n)?n:{},o=!1,a[i]=C.extend(l,s,r)):void 0!==r&&(a[i]=r));return a},C.extend({expando:"jQuery"+(S+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw Error(t)},noop:function(){},isPlainObject:function(t){var i,n;return!!t&&"[object Object]"===l.call(t)&&(!(i=r(t))||"function"==typeof(n=u.call(i,"constructor")&&i.constructor)&&h.call(n)===p)},isEmptyObject:function(t){var i;for(i in t)return!1;return!0},globalEval:function(t,i,n){y(t,{nonce:i&&i.nonce},n)},each:function(t,i){var n,r=0;if(D(t))for(n=t.length;r<n&&!1!==i.call(t[r],r,t[r]);r++);else for(r in t)if(!1===i.call(t[r],r,t[r]))break;return t},text:function(t){var i,n="",r=0,o=t.nodeType;if(!o)for(;i=t[r++];)n+=C.text(i);return 1===o||11===o?t.textContent:9===o?t.documentElement.textContent:3===o||4===o?t.nodeValue:n},makeArray:function(t,i){var n=i||[];return null!=t&&(D(Object(t))?C.merge(n,"string"==typeof t?[t]:t):a.call(n,t)),n},inArray:function(t,i,n){return null==i?-1:d.call(i,t,n)},isXMLDoc:function(t){var i=t&&t.namespaceURI,n=t&&(t.ownerDocument||t).documentElement;return!b.test(i||n&&n.nodeName||"HTML")},merge:function(t,i){for(var n=+i.length,r=0,o=t.length;r<n;r++)t[o++]=i[r];return t.length=o,t},grep:function(t,i,n){for(var r=[],o=0,s=t.length,a=!n;o<s;o++)!i(t[o],o)!==a&&r.push(t[o]);return r},map:function(t,i,n){var r,o,a=0,d=[];if(D(t))for(r=t.length;a<r;a++)null!=(o=i(t[a],a,n))&&d.push(o);else for(a in t)null!=(o=i(t[a],a,n))&&d.push(o);return s(d)},guid:1,support:m}),"function"==typeof Symbol&&(C.fn[Symbol.iterator]=n[Symbol.iterator]),C.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,i){c["[object "+i+"]"]=i.toLowerCase()});var x=n.pop,R=n.sort,A=n.splice,w="[\\x20\\t\\r\\n\\f]",I=RegExp("^"+w+"+|((?:^|[^\\\\])(?:\\\\.)*)"+w+"+$","g");
1C.contains=function(t,i){var n=i&&i.parentNode;return t===n||!!(n&&1===n.nodeType&&(t.contains?t.contains(n):t.compareDocumentPosition&&16&t.compareDocumentPosition(n)))};var k=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function O(t,i){return i?"\0"===t?"\uFFFD":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t}C.escapeSelector=function(t){return(t+"").replace(k,O)};var N=_,P=a;!function(){var i,r,s,a,c,l,h,p,g,f,_=P,v=C.expando,y=0,E=0,S=ei(),b=ei(),D=ei(),k=ei(),O=function(t,i){return t===i&&(c=!0),0},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="(?:\\\\[\\da-fA-F]{1,6}"+w+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",F="\\["+w+"*("+M+")(?:"+w+"*([*^$|!~]?=)"+w+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+w+"*\\]",j=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+F+")*)|.*)\\)|)",V=RegExp(w+"+","g"),B=RegExp("^"+w+"*,"+w+"*"),U=RegExp("^"+w+"*([>+~]|"+w+")"+w+"*"),$=RegExp(w+"|>"),H=new RegExp(j),J=RegExp("^"+M+"$"),q={ID:RegExp("^#("+M+")"),CLASS:RegExp("^\\.("+M+")"),TAG:RegExp("^("+M+"|[*])"),ATTR:RegExp("^"+F),PSEUDO:RegExp("^"+j),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+w+"*(even|odd|(([+-]|)(\\d*)n|)"+w+"*(?:([+-]|)"+w+"*(\\d+)|))"+w+"*\\)|)","i"),bool:RegExp("^(?:"+L+")$","i"),needsContext:RegExp("^"+w+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+w+"*((?:-\\d)?\\d*)"+w+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,z=/^h\d$/i,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,W=/[+~]/,Y=RegExp("\\\\[\\da-fA-F]{1,6}"+w+"?|\\\\([^\\r\\n\\f])","g"),Q=function(t,i){var n="0x"+t.slice(1)-65536;return i||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},X=function(){el()},Z=em(function(t){return!0===t.disabled&&T(t,"fieldset")},{dir:"parentNode",next:"legend"});function ee(){try{return l.activeElement}catch(t){}}try{_.apply(n=o.call(N.childNodes),N.childNodes),n[N.childNodes.length].nodeType}catch(t){_={apply:function(t,i){P.apply(t,o.call(i))},call:function(t){P.apply(t,o.call(arguments,1))}}}function et(t,i,n,r){var o,s,a,d,c,u,h,f=i&&i.ownerDocument,y=i?i.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==y&&9!==y&&11!==y)return n;if(!r&&(el(i),i=i||l,p)){if(11!==y&&(c=K.exec(t))){if(o=c[1]){if(9===y){if(!(a=i.getElementById(o)))return n;else if(a.id===o)return _.call(n,a),n}else if(f&&(a=f.getElementById(o))&&et.contains(i,a)&&a.id===o)return _.call(n,a),n}else if(c[2])return _.apply(n,i.getElementsByTagName(t)),n;else if((o=c[3])&&i.getElementsByClassName)return _.apply(n,i.getElementsByClassName(o)),n}if(!k[t+" "]&&(!g||!g.test(t))){if(h=t,f=i,1===y&&($.test(t)||U.test(t))){for((f=W.test(t)&&ec(i.parentNode)||i)==i&&m.scope||((d=i.getAttribute("id"))?d=C.escapeSelector(d):i.setAttribute("id",d=v)),s=(u=eh(t)).length;s--;)u[s]=(d?"#"+d:":scope")+" "+ep(u[s]);h=u.join(",")}try{return _.apply(n,f.querySelectorAll(h)),n}catch(i){k(t,!0)}finally{d===v&&i.removeAttribute("id")}}}return eb(t.replace(I,"$1"),i,n,r)}function ei(){var t=[];function i(n,o){return t.push(n+" ")>r.cacheLength&&delete i[t.shift()],i[n+" "]=o}return i}function en(t){return t[v]=!0,t}function er(t){var i=l.createElement("fieldset");try{return!!t(i)}catch(t){return!1}finally{i.parentNode&&i.parentNode.removeChild(i),i=null}}function eo(t){return function(i){return T(i,"input")&&i.type===t}}function es(t){return function(i){return(T(i,"input")||T(i,"button"))&&i.type===t}}function ea(t){return function(i){if("form"in i){if(i.parentNode&&!1===i.disabled){if("label"in i)if("label"in i.parentNode)return i.parentNode.disabled===t;else return i.disabled===t;return i.isDisabled===t||!t!==i.isDisabled&&Z(i)===t}return i.disabled===t}return"label"in i&&i.disabled===t}}function ed(t){return en(function(i){return i*=1,en(function(n,r){for(var o,s=t([],n.length,i),a=s.length;a--;)n[o=s[a]]&&(n[o]=!(r[o]=n[o]))})})}function ec(t){return t&&void 0!==t.getElementsByTagName&&t}function el(t){var i,n=t?t.ownerDocument||t:N;return n!=l&&9===n.nodeType&&n.documentElement&&(h=(l=n).documentElement,p=!C.isXMLDoc(l),f=h.matches||h.webkitMatchesSelector||h.msMatchesSelector,h.msMatchesSelector&&N!=l&&(i=l.defaultView)&&i.top!==i&&i.addEventListener("unload",X),m.getById=er(function(t){return h.appendChild(t).id=C.expando,!l.getElementsByName||!l.getElementsByName(C.expando).length}),m.disconnectedMatch=er(function(t){return f.call(t,"*")}),m.scope=er(function(){return l.querySelectorAll(":scope")}),m.cssHas=er(function(){try{return l.querySelector(":has(*,:jqfake)"),!1}catch(t){return!0}}),m.getById?(r.filter.ID=function(t){var i=t.replace(Y,Q);return function(t){return t.getAttribute("id")===i}},r.find.ID=function(t,i){if(void 0!==i.getElementById&&p){var n=i.getElementById(t);return n?[n]:[]}}):(r.filter.ID=function(t){var i=t.replace(Y,Q);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===i}},r.find.ID=function(t,i){if(void 0!==i.getElementById&&p){var n,r,o,s=i.getElementById(t);if(s){if((n=s.getAttributeNode("id"))&&n.value===t)return[s];for(o=i.getElementsByName(t),r=0;
vendor: 4,526 bytes, line 1
1s=o[r++];)if((n=s.getAttributeNode("id"))&&n.value===t)return[s]}return[]}}),r.find.TAG=function(t,i){return void 0!==i.getElementsByTagName?i.getElementsByTagName(t):i.querySelectorAll(t)},r.find.CLASS=function(t,i){if(void 0!==i.getElementsByClassName&&p)return i.getElementsByClassName(t)},g=[],er(function(t){var i;h.appendChild(t).innerHTML="<a id='"+v+"' href='' disabled='disabled'></a><select id='"+v+`-\r\\' disabled='disabled'><option selected=''></option></select>`,t.querySelectorAll("[selected]").length||g.push("\\["+w+"*(?:value|"+L+")"),t.querySelectorAll("[id~="+v+"-]").length||g.push("~="),t.querySelectorAll("a#"+v+"+*").length||g.push(".#.+[+~]"),t.querySelectorAll(":checked").length||g.push(":checked"),(i=l.createElement("input")).setAttribute("type","hidden"),t.appendChild(i).setAttribute("name","D"),h.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),(i=l.createElement("input")).setAttribute("name",""),t.appendChild(i),t.querySelectorAll("[name='']").length||g.push("\\["+w+"*name"+w+"*="+w+"*(?:''|\"\")")}),m.cssHas||g.push(":has"),g=g.length&&new RegExp(g.join("|")),O=function(t,i){if(t===i)return c=!0,0;var n=!t.compareDocumentPosition-!i.compareDocumentPosition;return n?n:1&(n=(t.ownerDocument||t)==(i.ownerDocument||i)?t.compareDocumentPosition(i):1)||!m.sortDetached&&i.compareDocumentPosition(t)===n?t===l||t.ownerDocument==N&&et.contains(N,t)?-1:i===l||i.ownerDocument==N&&et.contains(N,i)?1:a?d.call(a,t)-d.call(a,i):0:4&n?-1:1}),l}for(i in et.matches=function(t,i){return et(t,null,null,i)},et.matchesSelector=function(t,i){if(el(t),p&&!k[i+" "]&&(!g||!g.test(i)))try{var n=f.call(t,i);if(n||m.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){k(i,!0)}return et(i,l,null,[t]).length>0},et.contains=function(t,i){return(t.ownerDocument||t)!=l&&el(t),C.contains(t,i)},et.attr=function(t,i){(t.ownerDocument||t)!=l&&el(t);var n=r.attrHandle[i.toLowerCase()],o=n&&u.call(r.attrHandle,i.toLowerCase())?n(t,i,!p):void 0;return void 0!==o?o:t.getAttribute(i)},et.error=function(t){throw Error("Syntax error, unrecognized expression: "+t)},C.uniqueSort=function(t){var i,n=[],r=0,s=0;if(c=!m.sortStable,a=!m.sortStable&&o.call(t,0),R.call(t,O),c){for(;i=t[s++];)i===t[s]&&(r=n.push(s));for(;r--;)A.call(t,n[r],1)}return a=null,t},C.fn.uniqueSort=function(){return this.pushStack(C.uniqueSort(o.apply(this)))},(r=C.expr={cacheLength:50,createPseudo:en,match:q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(Y,Q),t[3]=(t[3]||t[4]||t[5]||"").replace(Y,Q),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||et.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&et.error(t[0]),t},PSEUDO:function(t){var i,n=!t[6]&&t[2];return q.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&H.test(n)&&(i=eh(n,!0))&&(i=n.indexOf(")",n.length-i)-n.length)&&(t[0]=t[0].slice(0,i),t[2]=n.slice(0,i)),t.slice(0,3))}},filter:{TAG:function(t){var i=t.replace(Y,Q).toLowerCase();return"*"===t?function(){return!0}:function(t){return T(t,i)}},CLASS:function(t){var i=S[t+" "];return i||(i=RegExp("(^|"+w+")"+t+"("+w+"|$)"))&&S(t,function(t){return i.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,i,n){return function(r){var o=et.attr(r,t);return null==o?"!="===i:!i||((o+="","="===i)?o===n:"!="===i?o!==n:"^="===i?n&&0===o.indexOf(n):"*="===i?n&&o.indexOf(n)>-1:"$="===i?n&&o.slice(-n.length)===n:"~="===i?(" "+o.replace(V," ")+" ").indexOf(n)>-1:"|="===i&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,i,n,r,o){var s="nth"!==t.slice(0,3),a="last"!==t.slice(-4),d="of-type"===i;return 1===r&&0===o?function(t){return!!t.parentNode}:function(i,n,c){var l,u,h,p,m,g=s!==a?"nextSibling":"previousSibling",f=i.parentNode,_=d&&i.nodeName.toLowerCase(),E=!c&&!d,S=!1;if(f){if(s){for(;g;){for(h=i;h=h[g];)if(d?T(h,_):1===h.nodeType)return!1;m=g="only"===t&&!m&&"nextSibling"}return!0}if(m=[a?f.firstChild:f.lastChild],a&&E){for(S=(p=(l=(u=f[v]||(f[v]={}))[t]||[])[0]===y&&l[1])&&l[2],h=p&&f.childNodes[p];h=++p&&h&&h[g]||(S=p=0)||m.pop();)if(1===h.nodeType&&++S&&h===i){u[t]=[y,p,S];break}}else if(E&&(S=p=(l=(u=i[v]||(i[v]={}))[t]||[])[0]===y&&l[1]),!1===S)for(;
vendor: 8,069 bytes, line 1
1(h=++p&&h&&h[g]||(S=p=0)||m.pop())&&(!((d?T(h,_):1===h.nodeType)&&++S)||(E&&((u=h[v]||(h[v]={}))[t]=[y,S]),h!==i)););return(S-=o)===r||S%r==0&&S/r>=0}}},PSEUDO:function(t,i){var n,o=r.pseudos[t]||r.setFilters[t.toLowerCase()]||et.error("unsupported pseudo: "+t);return o[v]?o(i):o.length>1?(n=[t,t,"",i],r.setFilters.hasOwnProperty(t.toLowerCase())?en(function(t,n){for(var r,s=o(t,i),a=s.length;a--;)r=d.call(t,s[a]),t[r]=!(n[r]=s[a])}):function(t){return o(t,0,n)}):o}},pseudos:{not:en(function(t){var i=[],n=[],r=eS(t.replace(I,"$1"));return r[v]?en(function(t,i,n,o){for(var s,a=r(t,null,o,[]),d=t.length;d--;)(s=a[d])&&(t[d]=!(i[d]=s))}):function(t,o,s){return i[0]=t,r(i,null,s,n),i[0]=null,!n.pop()}}),has:en(function(t){return function(i){return et(t,i).length>0}}),contains:en(function(t){return t=t.replace(Y,Q),function(i){return(i.textContent||C.text(i)).indexOf(t)>-1}}),lang:en(function(t){return J.test(t||"")||et.error("unsupported lang: "+t),t=t.replace(Y,Q).toLowerCase(),function(i){var n;do if(n=p?i.lang:i.getAttribute("xml:lang")||i.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-");while((i=i.parentNode)&&1===i.nodeType)return!1}}),target:function(i){var n=t.location&&t.location.hash;return n&&n.slice(1)===i.id},root:function(t){return t===h},focus:function(t){return t===ee()&&l.hasFocus()&&!!(t.type||t.href||~t.tabIndex)},enabled:ea(!1),disabled:ea(!0),checked:function(t){return T(t,"input")&&!!t.checked||T(t,"option")&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!r.pseudos.empty(t)},header:function(t){return z.test(t.nodeName)},input:function(t){return G.test(t.nodeName)},button:function(t){return T(t,"input")&&"button"===t.type||T(t,"button")},text:function(t){var i;return T(t,"input")&&"text"===t.type&&(null==(i=t.getAttribute("type"))||"text"===i.toLowerCase())},first:ed(function(){return[0]}),last:ed(function(t,i){return[i-1]}),eq:ed(function(t,i,n){return[n<0?n+i:n]}),even:ed(function(t,i){for(var n=0;n<i;n+=2)t.push(n);return t}),odd:ed(function(t,i){for(var n=1;n<i;n+=2)t.push(n);return t}),lt:ed(function(t,i,n){var r;for(r=n<0?n+i:n>i?i:n;--r>=0;)t.push(r);return t}),gt:ed(function(t,i,n){for(var r=n<0?n+i:n;++r<i;)t.push(r);return t})}}).pseudos.nth=r.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[i]=eo(i);for(i in{submit:!0,reset:!0})r.pseudos[i]=es(i);function eu(){}function eh(t,i){var n,o,s,a,d,c,l,u=b[t+" "];if(u)return i?0:u.slice(0);for(d=t,c=[],l=r.preFilter;d;){for(a in(!n||(o=B.exec(d)))&&(o&&(d=d.slice(o[0].length)||d),c.push(s=[])),n=!1,(o=U.exec(d))&&(n=o.shift(),s.push({value:n,type:o[0].replace(I," ")}),d=d.slice(n.length)),r.filter)(o=q[a].exec(d))&&(!l[a]||(o=l[a](o)))&&(n=o.shift(),s.push({value:n,type:a,matches:o}),d=d.slice(n.length));if(!n)break}return i?d.length:d?et.error(t):b(t,c).slice(0)}function ep(t){for(var i=0,n=t.length,r="";i<n;i++)r+=t[i].value;return r}function em(t,i,n){var r=i.dir,o=i.next,s=o||r,a=n&&"parentNode"===s,d=E++;return i.first?function(i,n,o){for(;i=i[r];)if(1===i.nodeType||a)return t(i,n,o);return!1}:function(i,n,c){var l,u,h=[y,d];if(c){for(;i=i[r];)if((1===i.nodeType||a)&&t(i,n,c))return!0}else for(;i=i[r];)if(1===i.nodeType||a)if(u=i[v]||(i[v]={}),o&&T(i,o))i=i[r]||i;else{if((l=u[s])&&l[0]===y&&l[1]===d)return h[2]=l[2];if(u[s]=h,h[2]=t(i,n,c))return!0}return!1}}function eg(t){return t.length>1?function(i,n,r){for(var o=t.length;o--;)if(!t[o](i,n,r))return!1;return!0}:t[0]}function ef(t,i,n){for(var r=0,o=i.length;r<o;r++)et(t,i[r],n);return n}function e_(t,i,n,r,o){for(var s,a=[],d=0,c=t.length,l=null!=i;d<c;d++)(s=t[d])&&(!n||n(s,r,o))&&(a.push(s),l&&i.push(d));return a}function ev(t,i,n,r,o,s){return r&&!r[v]&&(r=ev(r)),o&&!o[v]&&(o=ev(o,s)),en(function(s,a,c,l){var u,h,p,m,g=[],f=[],v=a.length,y=s||ef(i||"*",c.nodeType?[c]:c,[]),E=t&&(s||!i)?e_(y,g,t,c,l):y;if(n?n(E,m=o||(s?t:v||r)?[]:a,c,l):m=E,r)for(u=e_(m,f),r(u,[],c,l),h=u.length;h--;)(p=u[h])&&(m[f[h]]=!(E[f[h]]=p));if(s){if(o||t){if(o){for(u=[],h=m.length;h--;)(p=m[h])&&u.push(E[h]=p);o(null,m=[],u,l)}for(h=m.length;h--;)(p=m[h])&&(u=o?d.call(s,p):g[h])>-1&&(s[u]=!(a[u]=p))}}else m=e_(m===a?m.splice(v,m.length):m),o?o(null,a,m,l):_.apply(a,m)})}function ey(t){for(var i,n,o,a=t.length,c=r.relative[t[0].type],l=c||r.relative[" "],u=+!!c,h=em(function(t){return t===i},l,!0),p=em(function(t){return d.call(i,t)>-1},l,!0),m=[function(t,n,r){var o=!c&&(r||n!=s)||((i=n).nodeType?h(t,n,r):p(t,n,r));return i=null,o}];u<a;u++)if(n=r.relative[t[u].type])m=[em(eg(m),n)];else{if((n=r.filter[t[u].type].apply(null,t[u].matches))[v]){for(o=++u;o<a&&!r.relative[t[o].type];o++);return ev(u>1&&eg(m),u>1&&ep(t.slice(0,u-1).concat({value:" "===t[u-2].type?"*":""})).replace(I,"$1"),n,u<o&&ey(t.slice(u,o)),o<a&&ey(t=t.slice(o)),o<a&&ep(t))}m.push(n)}return eg(m)}function eE(t,i){var n=i.length>0,o=t.length>0,a=function(a,d,c,u,h){var m,g,f,v=0,E="0",S=a&&[],b=[],D=s,T=a||o&&r.find.TAG("*",h),R=y+=null==D?1:Math.random()||.1,A=T.length;for(h&&(s=d==l||d||h);E!==A&&null!=(m=T[E]);E++){if(o&&m){for(g=0,d||m.ownerDocument==l||(el(m),c=!p);f=t[g++];)if(f(m,d||l,c)){_.call(u,m);break}h&&(y=R)}n&&((m=!f&&m)&&v--,a&&S.push(m))}if(v+=E,n&&E!==v){for(g=0;f=i[g++];)f(S,b,d,c);if(a){if(v>0)for(;E--;)S[E]||b[E]||(b[E]=x.call(u));b=e_(b)}_.apply(u,b),h&&!a&&b.length>0&&v+i.length>1&&C.uniqueSort(u)}return h&&(y=R,s=D),S};return n?en(a):a}function eS(t,i){var n,r=[],o=[],s=D[t+" "];if(!s){for(i||(i=eh(t)),n=i.length;n--;)(s=ey(i[n]))[v]?r.push(s):o.push(s);(s=D(t,eE(o,r))).selector=t}return s}function eb(t,i,n,o){var s,a,d,c,l,u="function"==typeof t&&t,h=!o&&eh(t=u.selector||t);if(n=n||[],1===h.length){if((a=h[0]=h[0].slice(0)).length>2&&"ID"===(d=a[0]).type&&9===i.nodeType&&p&&r.relative[a[1].type]){if(!(i=(r.find.ID(d.matches[0].replace(Y,Q),i)||[])[0]))return n;u&&(i=i.parentNode),t=t.slice(a.shift().value.length)}for(s=q.needsContext.test(t)?0:a.length;s--&&(d=a[s],!r.relative[c=d.type]);)if((l=r.find[c])&&(o=l(d.matches[0].replace(Y,Q),W.test(a[0].type)&&ec(i.parentNode)||i))){if(a.splice(s,1),!(t=o.length&&ep(a)))return _.apply(n,o),n;break}}return(u||eS(t,h))(o,i,!p,n,!i||W.test(t)&&ec(i.parentNode)||i),n}eu.prototype=r.filters=r.pseudos,r.setFilters=new eu,m.sortStable=v.split("").sort(O).join("")===v,el(),m.sortDetached=er(function(t){return 1&t.compareDocumentPosition(l.createElement("fieldset"))}),C.find=et,C.expr[":"]=C.expr.pseudos,C.unique=C.uniqueSort,et.compile=eS,et.select=eb,et.setDocument=el,et.tokenize=eh,et.escape=C.escapeSelector,et.getText=C.text,et.isXML=C.isXMLDoc,et.selectors=C.expr,et.support=C.support,et.uniqueSort=C.uniqueSort}();var L=function(t,i,n){for(var r=[],o=void 0!==n;(t=t[i])&&9!==t.nodeType;)if(1===t.nodeType){if(o&&C(t).is(n))break;r.push(t)}return r},M=function(t,i){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==i&&n.push(t);return n},F=C.expr.match.needsContext,j=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function V(t,i,n){return g(i)?C.grep(t,function(t,r){return!!i.call(t,r,t)!==n}):i.nodeType?C.grep(t,function(t){return t===i!==n}):"string"!=typeof i?C.grep(t,function(t){return d.call(i,t)>-1!==n}):C.filter(i,t,n)}C.filter=function(t,i,n){var r=i[0];return(n&&(t=":not("+t+")"),1===i.length&&1===r.nodeType)?C.find.matchesSelector(r,t)?[r]:[]:C.find.matches(t,C.grep(i,function(t){return 1===t.nodeType}))},C.fn.extend({find:function(t){var i,n,r=this.length,o=this;if("string"!=typeof t)return this.pushStack(C(t).filter(function(){for(i=0;i<r;i++)if(C.contains(o[i],this))return!0}));for(i=0,n=this.pushStack([]);i<r;i++)C.find(t,o[i],n);return r>1?C.uniqueSort(n):n},filter:function(t){return this.pushStack(V(this,t||[],!1))},not:function(t){return this.pushStack(V(this,t||[],!0))},is:function(t){return!!V(this,"string"==typeof t&&F.test(t)?C(t):t||[],!1).length}});var B,U=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(C.fn.init=function(t,i,n){var r,o;
vendor: 4,739 bytes, line 1
1if(!t)return this;if(n=n||B,"string"==typeof t){if((r="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:U.exec(t))&&(r[1]||!i))if(!r[1])return(o=_.getElementById(r[2]))&&(this[0]=o,this.length=1),this;else{if(i=i instanceof C?i[0]:i,C.merge(this,C.parseHTML(r[1],i&&i.nodeType?i.ownerDocument||i:_,!0)),j.test(r[1])&&C.isPlainObject(i))for(r in i)g(this[r])?this[r](i[r]):this.attr(r,i[r]);return this}return!i||i.jquery?(i||n).find(t):this.constructor(i).find(t)}return t.nodeType?(this[0]=t,this.length=1,this):g(t)?void 0!==n.ready?n.ready(t):t(C):C.makeArray(t,this)}).prototype=C.fn,B=C(_);var $=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function J(t,i){for(;(t=t[i])&&1!==t.nodeType;);return t}C.fn.extend({has:function(t){var i=C(t,this),n=i.length;return this.filter(function(){for(var t=0;t<n;t++)if(C.contains(this,i[t]))return!0})},closest:function(t,i){var n,r=0,o=this.length,s=[],a="string"!=typeof t&&C(t);if(!F.test(t)){for(;r<o;r++)for(n=this[r];n&&n!==i;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&C.find.matchesSelector(n,t))){s.push(n);break}}return this.pushStack(s.length>1?C.uniqueSort(s):s)},index:function(t){return t?"string"==typeof t?d.call(C(t),this[0]):d.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,i){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(t,i))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),C.each({parent:function(t){var i=t.parentNode;return i&&11!==i.nodeType?i:null},parents:function(t){return L(t,"parentNode")},parentsUntil:function(t,i,n){return L(t,"parentNode",n)},next:function(t){return J(t,"nextSibling")},prev:function(t){return J(t,"previousSibling")},nextAll:function(t){return L(t,"nextSibling")},prevAll:function(t){return L(t,"previousSibling")},nextUntil:function(t,i,n){return L(t,"nextSibling",n)},prevUntil:function(t,i,n){return L(t,"previousSibling",n)},siblings:function(t){return M((t.parentNode||{}).firstChild,t)},children:function(t){return M(t.firstChild)},contents:function(t){return null!=t.contentDocument&&r(t.contentDocument)?t.contentDocument:(T(t,"template")&&(t=t.content||t),C.merge([],t.childNodes))}},function(t,i){C.fn[t]=function(n,r){var o=C.map(this,i,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=C.filter(r,o)),this.length>1&&(H[t]||C.uniqueSort(o),$.test(t)&&o.reverse()),this.pushStack(o)}});var q=/[^\x20\t\r\n\f]+/g;function G(t){var i={};return C.each(t.match(q)||[],function(t,n){i[n]=!0}),i}function z(t){return t}function K(t){throw t}function W(t,i,n,r){var o;try{t&&g(o=t.promise)?o.call(t).done(i).fail(n):t&&g(o=t.then)?o.call(t,i,n):i.apply(void 0,[t].slice(r))}catch(t){n.apply(void 0,[t])}}C.Callbacks=function(t){t="string"==typeof t?G(t):C.extend({},t);var i,n,r,o,s=[],a=[],d=-1,c=function(){for(o=o||t.once,r=i=!0;a.length;d=-1)for(n=a.shift();++d<s.length;)!1===s[d].apply(n[0],n[1])&&t.stopOnFalse&&(d=s.length,n=!1);t.memory||(n=!1),i=!1,o&&(s=n?[]:"")},l={add:function(){return s&&(n&&!i&&(d=s.length-1,a.push(n)),!function i(n){C.each(n,function(n,r){g(r)?t.unique&&l.has(r)||s.push(r):r&&r.length&&"string"!==E(r)&&i(r)})}(arguments),n&&!i&&c()),this},remove:function(){return C.each(arguments,function(t,i){for(var n;(n=C.inArray(i,s,n))>-1;)s.splice(n,1),n<=d&&d--}),this},has:function(t){return t?C.inArray(t,s)>-1:s.length>0},empty:function(){return s&&(s=[]),this},disable:function(){return o=a=[],s=n="",this},disabled:function(){return!s},lock:function(){return o=a=[],n||i||(s=n=""),this},locked:function(){return!!o},fireWith:function(t,n){return!o&&(n=[t,(n=n||[]).slice?n.slice():n],a.push(n),i||c()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},C.extend({Deferred:function(i){var n=[["notify","progress",C.Callbacks("memory"),C.Callbacks("memory"),2],["resolve","done",C.Callbacks("once memory"),C.Callbacks("once memory"),0,"resolved"],["reject","fail",C.Callbacks("once memory"),C.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return s.done(arguments).fail(arguments),this},catch:function(t){return o.then(null,t)},pipe:function(){var t=arguments;return C.Deferred(function(i){C.each(n,function(n,r){var o=g(t[r[4]])&&t[r[4]];s[r[1]](function(){var t=o&&o.apply(this,arguments);t&&g(t.promise)?t.promise().progress(i.notify).done(i.resolve).fail(i.reject):i[r[0]+"With"](this,o?[t]:arguments)})}),t=null}).promise()},then:function(i,r,o){var s=0;function a(i,n,r,o){return function(){var d=this,c=arguments,l=function(){var t,l;if(!(i<s)){if(t=r.apply(d,c),t===n.promise())throw TypeError("Thenable self
1-resolution");l=t&&("object"==typeof t||"function"==typeof t)&&t.then,g(l)?o?l.call(t,a(s,n,z,o),a(s,n,K,o)):(s++,l.call(t,a(s,n,z,o),a(s,n,K,o),a(s,n,z,n.notifyWith))):(r!==z&&(d=void 0,c=[t]),(o||n.resolveWith)(d,c))}},u=o?l:function(){try{l()}catch(t){C.Deferred.exceptionHook&&C.Deferred.exceptionHook(t,u.error),i+1>=s&&(r!==K&&(d=void 0,c=[t]),n.rejectWith(d,c))}};i?u():(C.Deferred.getErrorHook?u.error=C.Deferred.getErrorHook():C.Deferred.getStackHook&&(u.error=C.Deferred.getStackHook()),t.setTimeout(u))}}return C.Deferred(function(t){n[0][3].add(a(0,t,g(o)?o:z,t.notifyWith)),n[1][3].add(a(0,t,g(i)?i:z)),n[2][3].add(a(0,t,g(r)?r:K))}).promise()},promise:function(t){return null!=t?C.extend(t,o):o}},s={};return C.each(n,function(t,i){var a=i[2],d=i[5];o[i[1]]=a.add,d&&a.add(function(){r=d},n[3-t][2].disable,n[3-t][3].disable,n[0][2].lock,n[0][3].lock),a.add(i[3].fire),s[i[0]]=function(){return s[i[0]+"With"](this===s?void 0:this,arguments),this},s[i[0]+"With"]=a.fireWith}),o.promise(s),i&&i.call(s,s),s},when:function(t){var i=arguments.length,n=i,r=Array(n),s=o.call(arguments),a=C.Deferred(),d=function(t){return function(n){r[t]=this,s[t]=arguments.length>1?o.call(arguments):n,--i||a.resolveWith(r,s)}};if(i<=1&&(W(t,a.done(d(n)).resolve,a.reject,!i),"pending"===a.state()||g(s[n]&&s[n].then)))return a.then();for(;n--;)W(s[n],d(n),a.reject);return a.promise()}});var Y=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.Deferred.exceptionHook=function(i,n){t.console&&t.console.warn&&i&&Y.test(i.name)&&t.console.warn("jQuery.Deferred exception: "+i.message,i.stack,n)},C.readyException=function(i){t.setTimeout(function(){throw i})};var Q=C.Deferred();function X(){_.removeEventListener("DOMContentLoaded",X),t.removeEventListener("load",X),C.ready()}C.fn.ready=function(t){return Q.then(t).catch(function(t){C.readyException(t)}),this},C.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==t&&--C.readyWait>0||Q.resolveWith(_,[C]))}}),C.ready.then=Q.then,"complete"!==_.readyState&&("loading"===_.readyState||_.documentElement.doScroll)?(_.addEventListener("DOMContentLoaded",X),t.addEventListener("load",X)):t.setTimeout(C.ready);var Z=function(t,i,n,r,o,s,a){var d=0,c=t.length,l=null==n;if("object"===E(n))for(d in o=!0,n)Z(t,i,d,n[d],!0,s,a);else if(void 0!==r&&(o=!0,g(r)||(a=!0),l&&(a?(i.call(t,r),i=null):(l=i,i=function(t,i,n){return l.call(C(t),n)})),i))for(;d<c;d++)i(t[d],n,a?r:r.call(t[d],d,i(t[d],n)));return o?t:l?i.call(t):c?i(t[0],n):s},ee=/^-ms-/,et=/-([a-z])/g;function ei(t,i){return i.toUpperCase()}function en(t){return t.replace(ee,"ms-").replace(et,ei)}var er=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType};function eo(){this.expando=C.expando+eo.uid++}eo.uid=1,eo.prototype={cache:function(t){var i=t[this.expando];return!i&&(i={},er(t)&&(t.nodeType?t[this.expando]=i:Object.defineProperty(t,this.expando,{value:i,configurable:!0}))),i},set:function(t,i,n){var r,o=this.cache(t);if("string"==typeof i)o[en(i)]=n;else for(r in i)o[en(r)]=i[r];return o},get:function(t,i){return void 0===i?this.cache(t):t[this.expando]&&t[this.expando][en(i)]},access:function(t,i,n){return void 0===i||i&&"string"==typeof i&&void 0===n?this.get(t,i):(this.set(t,i,n),void 0!==n?n:i)},remove:function(t,i){var n,r=t[this.expando];if(void 0!==r){if(void 0!==i)for(n=(i=Array.isArray(i)?i.map(en):((i=en(i))in r)?[i]:i.match(q)||[]).length;n--;)delete r[i[n]];(void 0===i||C.isEmptyObject(r))&&(t.nodeType?t[this.expando]=void 0:delete t[this.expando])}},hasData:function(t){var i=t[this.expando];return void 0!==i&&!C.isEmptyObject(i)}};var es=new eo,ea=new eo,ed=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ec=/[A-Z]/g;function el(t){return"true"===t||"false"!==t&&("null"===t?null:t===+t+""?+t:ed.test(t)?JSON.parse(t):t)}function eu(t,i,n){var r;if(void 0===n&&1===t.nodeType)if(r="data-"+i.replace(ec,"-$&").toLowerCase(),"string"==typeof(n=t.getAttribute(r))){try{n=el(n)}catch(t){}ea.set(t,i,n)}else n=void 0;return n}C.extend({hasData:function(t){return ea.hasData(t)||es.hasData(t)},data:function(t,i,n){return ea.access(t,i,n)},removeData:function(t,i){ea.remove(t,i)},_data:function(t,i,n){return es.access(t,i,n)},_removeData:function(t,i){es.remove(t,i)}}),C.fn.extend({data:function(t,i){var n,r,o,s=this[0],a=s&&s.attributes;if(void 0===t){if(this.length&&(o=ea.get(s),1===s.nodeType&&!es.get(s,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&0===(r=a[n].name).indexOf("data-")&&eu(s,r=en(r.slice(5)),o[r]);es.set(s,"hasDataAttrs",!0)}return o}return"object"==typeof t?this.each(function(){ea.set(this,t)}):Z(this,function(i){var n;if(s&&void 0===i)return void 0!==(n=ea.get(s,t))||void 0!==(n=eu(s,t))?n:void 0;this.each(function(){ea.set(this,t,i)})},null,i,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){ea.remove(this,t)})}}),C.extend({queue:function(t,i,n){var r;if(t)return i=(i||"fx")+"queue",r=es.get(t,i),n&&(!r||Array.isArray(n)?r=es.access(t,i,C.makeArray(n)):r.push(n)),r||[]},dequeue:function(t,i){i=i||"fx";var n=C.queue(t,i),r=n.length,o=n.shift(),s=C._queueHooks(t,i),a=function(){C.dequeue(t,i)};"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===i&&n.unshift("inprogress"),delete s.stop,o.call(t,a,s)),!r&&s&&s.empty.fire()},_queueHooks:function(t,i){var n=i+"queueHooks";return es.get(t,n)||es.access(t,n,{empty:C.Callbacks("once memory").add(function(){es.remove(t,[i+"queue",n])})})}}),C.fn.extend({queue:function(t,i){var n=2;return("string"!=typeof t&&(i=t,t="fx",n--),arguments.length<n)?C.queue(this[0],t):void 0===i?this:this.each(function(){var n=C.queue(this,t,i);C._queueHooks(this,t),"fx"===t&&"inprogress"!==n[0]&&C.dequeue(this,t)})},dequeue:function(t){return this.each(function(){C.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,i){var n,r=1,o=C.Deferred(),s=this,a=this.length,d=function(){--r||o.resolveWith(s,[s])};for("string"!=typeof t&&(i=t,t=void 0),t=t||"fx";a--;)(n=es.get(s[a],t+"queueHooks"))&&n.empty&&(r++,n.empty.add(d));return d(),o.promise(i)}});var eh=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ep=RegExp("^(?:([+-])=|)("+eh+")([a-z%]*)$","i"),em=["Top","Right","Bottom","Left"],eg=_.documentElement,ef=function(t){return C.contains(t.ownerDocument,t)},e_={composed:!0};eg.getRootNode&&(ef=function(t){return C.contains(t.ownerDocument,t)||t.getRootNode(e_)===t.ownerDocument});var ev=function(t,i){return"none"===(t=i||t).style.display||""===t.style.display&&ef(t)&&"none"===C.css(t,"display")};function ey(t,i,n,r){var o,s,a=20,d=r?function(){return r.cur()}:function(){return C.css(t,i,"")},c=d(),l=n&&n[3]||(C.cssNumber[i]?"":"px"),u=t.nodeType&&(C.cssNumber[i]||"px"!==l&&+c)&&ep.exec(C.css(t,i));
vendor: 4,536 bytes, line 1
1if(u&&u[3]!==l){for(c/=2,l=l||u[3],u=+c||1;a--;)C.style(t,i,u+l),(1-s)*(1-(s=d()/c||.5))<=0&&(a=0),u/=s;u*=2,C.style(t,i,u+l),n=n||[]}return n&&(u=+u||+c||0,o=n[1]?u+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=u,r.end=o)),o}var eE={};function eS(t){var i,n=t.ownerDocument,r=t.nodeName,o=eE[r];return o||(i=n.body.appendChild(n.createElement(r)),o=C.css(i,"display"),i.parentNode.removeChild(i),"none"===o&&(o="block"),eE[r]=o),o}function eb(t,i){for(var n,r,o=[],s=0,a=t.length;s<a;s++)(r=t[s]).style&&(n=r.style.display,i?("none"===n&&(o[s]=es.get(r,"display")||null,o[s]||(r.style.display="")),""===r.style.display&&ev(r)&&(o[s]=eS(r))):"none"!==n&&(o[s]="none",es.set(r,"display",n)));for(s=0;s<a;s++)null!=o[s]&&(t[s].style.display=o[s]);return t}C.fn.extend({show:function(){return eb(this,!0)},hide:function(){return eb(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){ev(this)?C(this).show():C(this).hide()})}});var eC=/^(?:checkbox|radio)$/i,eD=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,eT=/^$|^module$|\/(?:java|ecma)script/i;!function(){var t=_.createDocumentFragment().appendChild(_.createElement("div")),i=_.createElement("input");i.setAttribute("type","radio"),i.setAttribute("checked","checked"),i.setAttribute("name","t"),t.appendChild(i),m.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="<textarea>x</textarea>",m.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue,t.innerHTML="<option></option>",m.option=!!t.lastChild}();var ex={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function eR(t,i){var n;return(n=void 0!==t.getElementsByTagName?t.getElementsByTagName(i||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(i||"*"):[],void 0===i||i&&T(t,i))?C.merge([t],n):n}function eA(t,i){for(var n=0,r=t.length;n<r;n++)es.set(t[n],"globalEval",!i||es.get(i[n],"globalEval"))}ex.tbody=ex.tfoot=ex.colgroup=ex.caption=ex.thead,ex.th=ex.td,m.option||(ex.optgroup=ex.option=[1,"<select multiple='multiple'>","</select>"]);var ew=/<|&#?\w+;/;function eI(t,i,n,r,o){for(var s,a,d,c,l,u=i.createDocumentFragment(),h=[],p=0,m=t.length;p<m;p++)if((s=t[p])||0===s)if("object"===E(s))C.merge(h,s.nodeType?[s]:s);else if(ew.test(s)){for(a=a||u.appendChild(i.createElement("div")),d=ex[(eD.exec(s)||["",""])[1].toLowerCase()]||ex._default,a.innerHTML=d[1]+C.htmlPrefilter(s)+d[2],l=d[0];l--;)a=a.lastChild;C.merge(h,a.childNodes),(a=u.firstChild).textContent=""}else h.push(i.createTextNode(s));for(u.textContent="",p=0;s=h[p++];){if(r&&C.inArray(s,r)>-1){o&&o.push(s);continue}if(c=ef(s),a=eR(u.appendChild(s),"script"),c&&eA(a),n)for(l=0;s=a[l++];)eT.test(s.type||"")&&n.push(s)}return u}var ek=/^([^.]*)(?:\.(.+)|)/;function eO(){return!0}function eN(){return!1}function eP(t,i,n,r,o,s){var a,d;if("object"==typeof i){for(d in"string"!=typeof n&&(r=r||n,n=void 0),i)eP(t,d,n,r,i[d],s);return t}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),!1===o)o=eN;else if(!o)return t;return 1===s&&(a=o,(o=function(t){return C().off(t),a.apply(this,arguments)}).guid=a.guid||(a.guid=C.guid++)),t.each(function(){C.event.add(this,i,o,r,n)})}function eL(t,i,n){if(!n){void 0===es.get(t,i)&&C.event.add(t,i,eO);return}es.set(t,i,!1),C.event.add(t,i,{namespace:!1,handler:function(t){var n,r=es.get(this,i);if(1&t.isTrigger&&this[i]){if(r)(C.event.special[i]||{}).delegateType&&t.stopPropagation();else if(r=o.call(arguments),es.set(this,i,r),this[i](),n=es.get(this,i),es.set(this,i,!1),r!==n)return t.stopImmediatePropagation(),t.preventDefault(),n}else r&&(es.set(this,i,C.event.trigger(r[0],r.slice(1),this)),t.stopPropagation(),t.isImmediatePropagationStopped=eO)}})}C.event={global:{},add:function(t,i,n,r,o){var s,a,d,c,l,u,h,p,m,g,f,_=es.get(t);if(er(t))for(n.handler&&(n=(s=n).handler,o=s.selector),o&&C.find.matchesSelector(eg,o),n.guid||(n.guid=C.guid++),(c=_.events)||(c=_.events=Object.create(null)),(a=_.handle)||(a=_.handle=function(i){return void 0!==C&&C.event.triggered!==i.type?C.event.dispatch.apply(t,arguments):void 0}),l=(i=(i||"").match(q)||[""]).length;l--;)m=f=(d=ek.exec(i[l])||[])[1],g=(d[2]||"").split(".").sort(),m&&(h=C.event.special[m]||{},m=(o?h.delegateType:h.bindType)||m,h=C.event.special[m]||{},u=C.extend({type:m,origType:f,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&C.expr.match.needsContext.test(o),namespace:g.join(".")}
vendor: 4,724 bytes, line 1
1,s),(p=c[m])||((p=c[m]=[]).delegateCount=0,(!h.setup||!1===h.setup.call(t,r,g,a))&&t.addEventListener&&t.addEventListener(m,a)),h.add&&(h.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),o?p.splice(p.delegateCount++,0,u):p.push(u),C.event.global[m]=!0)},remove:function(t,i,n,r,o){var s,a,d,c,l,u,h,p,m,g,f,_=es.hasData(t)&&es.get(t);if(_&&(c=_.events)){for(i=(i||"").match(q)||[""],l=i.length;l--;){if(m=f=(d=ek.exec(i[l])||[])[1],g=(d[2]||"").split(".").sort(),!m){for(m in c)C.event.remove(t,m+i[l],n,r,!0);continue}for(h=C.event.special[m]||{},p=c[m=(r?h.delegateType:h.bindType)||m]||[],d=d[2]&&RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=s=p.length;s--;)u=p[s],(o||f===u.origType)&&(!n||n.guid===u.guid)&&(!d||d.test(u.namespace))&&(!r||r===u.selector||"**"===r&&u.selector)&&(p.splice(s,1),u.selector&&p.delegateCount--,h.remove&&h.remove.call(t,u));a&&!p.length&&(h.teardown&&!1!==h.teardown.call(t,g,_.handle)||C.removeEvent(t,m,_.handle),delete c[m])}C.isEmptyObject(c)&&es.remove(t,"handle events")}},dispatch:function(t){var i,n,r,o,s,a,d=Array(arguments.length),c=C.event.fix(t),l=(es.get(this,"events")||Object.create(null))[c.type]||[],u=C.event.special[c.type]||{};for(i=1,d[0]=c;i<arguments.length;i++)d[i]=arguments[i];if(c.delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,c)){for(a=C.event.handlers.call(this,c,l),i=0;(o=a[i++])&&!c.isPropagationStopped();)for(c.currentTarget=o.elem,n=0;(s=o.handlers[n++])&&!c.isImmediatePropagationStopped();)(!c.rnamespace||!1===s.namespace||c.rnamespace.test(s.namespace))&&(c.handleObj=s,c.data=s.data,void 0!==(r=((C.event.special[s.origType]||{}).handle||s.handler).apply(o.elem,d))&&!1===(c.result=r)&&(c.preventDefault(),c.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,c),c.result}},handlers:function(t,i){var n,r,o,s,a,d=[],c=i.delegateCount,l=t.target;if(c&&l.nodeType&&!("click"===t.type&&t.button>=1)){for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==t.type||!0!==l.disabled)){for(n=0,s=[],a={};n<c;n++)void 0===a[o=(r=i[n]).selector+" "]&&(a[o]=r.needsContext?C(o,this).index(l)>-1:C.find(o,this,null,[l]).length),a[o]&&s.push(r);s.length&&d.push({elem:l,handlers:s})}}return l=this,c<i.length&&d.push({elem:l,handlers:i.slice(c)}),d},addProp:function(t,i){Object.defineProperty(C.Event.prototype,t,{enumerable:!0,configurable:!0,get:g(i)?function(){if(this.originalEvent)return i(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(i){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:i})}})},fix:function(t){return t[C.expando]?t:new C.Event(t)},special:{load:{noBubble:!0},click:{setup:function(t){var i=this||t;return eC.test(i.type)&&i.click&&T(i,"input")&&eL(i,"click",!0),!1},trigger:function(t){var i=this||t;return eC.test(i.type)&&i.click&&T(i,"input")&&eL(i,"click"),!0},_default:function(t){var i=t.target;return eC.test(i.type)&&i.click&&T(i,"input")&&es.get(i,"click")||T(i,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}}},C.removeEvent=function(t,i,n){t.removeEventListener&&t.removeEventListener(i,n)},C.Event=function(t,i){if(!(this instanceof C.Event))return new C.Event(t,i);t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&!1===t.returnValue?eO:eN,this.target=t.target&&3===t.target.nodeType?t.target.parentNode:t.target,this.currentTarget=t.currentTarget,this.relatedTarget=t.relatedTarget):this.type=t,i&&C.extend(this,i),this.timeStamp=t&&t.timeStamp||Date.now(),this[C.expando]=!0},C.Event.prototype={constructor:C.Event,isDefaultPrevented:eN,isPropagationStopped:eN,isImmediatePropagationStopped:eN,isSimulated:!1,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=eO,t&&!this.isSimulated&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=eO,t&&!this.isSimulated&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=eO,t&&!this.isSimulated&&t.stopImmediatePropagation(),this.stopPropagation()}},C.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},C.event.addProp),C.each({focus:"focusin",blur:"focusout"},function(t,i){function n(t){if(_.documentMode){var n=es.get(this,"handle"),r=C.event.fix(t);
vendor: 8,379 bytes, line 1
1r.type="focusin"===t.type?"focus":"blur",r.isSimulated=!0,n(t),r.target===r.currentTarget&&n(r)}else C.event.simulate(i,t.target,C.event.fix(t))}C.event.special[t]={setup:function(){var r;if(eL(this,t,!0),!_.documentMode)return!1;(r=es.get(this,i))||this.addEventListener(i,n),es.set(this,i,(r||0)+1)},trigger:function(){return eL(this,t),!0},teardown:function(){var t;if(!_.documentMode)return!1;(t=es.get(this,i)-1)?es.set(this,i,t):(this.removeEventListener(i,n),es.remove(this,i))},_default:function(i){return es.get(i.target,t)},delegateType:i},C.event.special[i]={setup:function(){var r=this.ownerDocument||this.document||this,o=_.documentMode?this:r,s=es.get(o,i);s||(_.documentMode?this.addEventListener(i,n):r.addEventListener(t,n,!0)),es.set(o,i,(s||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,o=_.documentMode?this:r,s=es.get(o,i)-1;s?es.set(o,i,s):(_.documentMode?this.removeEventListener(i,n):r.removeEventListener(t,n,!0),es.remove(o,i))}}}),C.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,i){C.event.special[t]={delegateType:i,bindType:i,handle:function(t){var n,r=this,o=t.relatedTarget,s=t.handleObj;return o&&(o===r||C.contains(r,o))||(t.type=s.origType,n=s.handler.apply(this,arguments),t.type=i),n}}}),C.fn.extend({on:function(t,i,n,r){return eP(this,t,i,n,r)},one:function(t,i,n,r){return eP(this,t,i,n,r,1)},off:function(t,i,n){var r,o;if(t&&t.preventDefault&&t.handleObj)return r=t.handleObj,C(t.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof t){for(o in t)this.off(o,i,t[o]);return this}return(!1===i||"function"==typeof i)&&(n=i,i=void 0),!1===n&&(n=eN),this.each(function(){C.event.remove(this,t,n,i)})}});var eM=/<script|<style|<link/i,eF=/checked\s*(?:[^=]|=\s*.checked.)/i,ej=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function eV(t,i){return T(t,"table")&&T(11!==i.nodeType?i:i.firstChild,"tr")&&C(t).children("tbody")[0]||t}function eB(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function eU(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function e$(t,i){var n,r,o,s,a,d;if(1===i.nodeType){if(es.hasData(t)&&(d=es.get(t).events))for(o in es.remove(i,"handle events"),d)for(n=0,r=d[o].length;n<r;n++)C.event.add(i,o,d[o][n]);ea.hasData(t)&&(s=ea.access(t),a=C.extend({},s),ea.set(i,a))}}function eH(t,i){var n=i.nodeName.toLowerCase();"input"===n&&eC.test(t.type)?i.checked=t.checked:("input"===n||"textarea"===n)&&(i.defaultValue=t.defaultValue)}function eJ(t,i,n,r){i=s(i);var o,a,d,c,l,u,h=0,p=t.length,f=p-1,_=i[0],v=g(_);if(v||p>1&&"string"==typeof _&&!m.checkClone&&eF.test(_))return t.each(function(o){var s=t.eq(o);v&&(i[0]=_.call(this,o,s.html())),eJ(s,i,n,r)});if(p&&(a=(o=eI(i,t[0].ownerDocument,!1,t,r)).firstChild,1===o.childNodes.length&&(o=a),a||r)){for(c=(d=C.map(eR(o,"script"),eB)).length;h<p;h++)l=o,h!==f&&(l=C.clone(l,!0,!0),c&&C.merge(d,eR(l,"script"))),n.call(t[h],l,h);if(c)for(u=d[d.length-1].ownerDocument,C.map(d,eU),h=0;h<c;h++)l=d[h],eT.test(l.type||"")&&!es.access(l,"globalEval")&&C.contains(u,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?C._evalUrl&&!l.noModule&&C._evalUrl(l.src,{nonce:l.nonce||l.getAttribute("nonce")},u):y(l.textContent.replace(ej,""),l,u))}return t}function eq(t,i,n){for(var r,o=i?C.filter(i,t):t,s=0;null!=(r=o[s]);s++)n||1!==r.nodeType||C.cleanData(eR(r)),r.parentNode&&(n&&ef(r)&&eA(eR(r,"script")),r.parentNode.removeChild(r));return t}C.extend({htmlPrefilter:function(t){return t},clone:function(t,i,n){var r,o,s,a,d=t.cloneNode(!0),c=ef(t);if(!m.noCloneChecked&&(1===t.nodeType||11===t.nodeType)&&!C.isXMLDoc(t))for(r=0,a=eR(d),o=(s=eR(t)).length;r<o;r++)eH(s[r],a[r]);if(i)if(n)for(r=0,s=s||eR(t),a=a||eR(d),o=s.length;r<o;r++)e$(s[r],a[r]);else e$(t,d);return(a=eR(d,"script")).length>0&&eA(a,!c&&eR(t,"script")),d},cleanData:function(t){for(var i,n,r,o=C.event.special,s=0;void 0!==(n=t[s]);s++)if(er(n)){if(i=n[es.expando]){if(i.events)for(r in i.events)o[r]?C.event.remove(n,r):C.removeEvent(n,r,i.handle);n[es.expando]=void 0}n[ea.expando]&&(n[ea.expando]=void 0)}}}),C.fn.extend({detach:function(t){return eq(this,t,!0)},remove:function(t){return eq(this,t)},text:function(t){return Z(this,function(t){return void 0===t?C.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=t)})},null,t,arguments.length)},append:function(){return eJ(this,arguments,function(t){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&eV(this,t).appendChild(t)})},prepend:function(){return eJ(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var i=eV(this,t);i.insertBefore(t,i.firstChild)}})},before:function(){return eJ(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return eJ(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,i=0;null!=(t=this[i]);i++)1===t.nodeType&&(C.cleanData(eR(t,!1)),t.textContent="");return this},clone:function(t,i){return t=null!=t&&t,i=null==i?t:i,this.map(function(){return C.clone(this,t,i)})},html:function(t){return Z(this,function(t){var i=this[0]||{},n=0,r=this.length;if(void 0===t&&1===i.nodeType)return i.innerHTML;if("string"==typeof t&&!eM.test(t)&&!ex[(eD.exec(t)||["",""])[1].toLowerCase()]){t=C.htmlPrefilter(t);try{for(;n<r;n++)i=this[n]||{},1===i.nodeType&&(C.cleanData(eR(i,!1)),i.innerHTML=t);i=0}catch(t){}}i&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=[];return eJ(this,arguments,function(i){var n=this.parentNode;0>C.inArray(this,t)&&(C.cleanData(eR(this)),n&&n.replaceChild(i,this))},t)}}),C.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,i){C.fn[t]=function(t){for(var n,r=[],o=C(t),s=o.length-1,d=0;d<=s;d++)n=d===s?this:this.clone(!0),C(o[d])[i](n),a.apply(r,n.get());return this.pushStack(r)}});var eG=RegExp("^("+eh+")(?!px)[a-z%]+$","i"),ez=/^--/,eK=function(i){var n=i.ownerDocument.defaultView;return n&&n.opener||(n=t),n.getComputedStyle(i)},eW=function(t,i,n){var r,o,s={};for(o in i)s[o]=t.style[o],t.style[o]=i[o];for(o in r=n.call(t),i)t.style[o]=s[o];return r},eY=RegExp(em.join("|"),"i");function eQ(t,i,n){var r,o,s,a,d=ez.test(i),c=t.style;return(n=n||eK(t))&&(a=n.getPropertyValue(i)||n[i],d&&a&&(a=a.replace(I,"$1")||void 0),""!==a||ef(t)||(a=C.style(t,i)),!m.pixelBoxStyles()&&eG.test(a)&&eY.test(i)&&(r=c.width,o=c.minWidth,s=c.maxWidth,c.minWidth=c.maxWidth=c.width=a,a=n.width,c.width=r,c.minWidth=o,c.maxWidth=s)),void 0!==a?a+"":a}function eX(t,i){return{get:function(){return t()?void delete this.get:(this.get=i).apply(this,arguments)}}}!function(){function i(){if(u){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",eg.appendChild(l).appendChild(u);var i=t.getComputedStyle(u);r="1%"!==i.top,c=12===n(i.marginLeft),u.style.right="60%",a=36===n(i.right),o=36===n(i.width),u.style.position="absolute",s=12===n(u.offsetWidth/3),eg.removeChild(l),u=null}}function n(t){return Math.round(parseFloat(t))}var r,o,s,a,d,c,l=_.createElement("div"),u=_.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",m.clearCloneStyle="content-box"===u.style.backgroundClip,C.extend(m,{boxSizingReliable:function(){return i(),o},pixelBoxStyles:function(){return i(),a},pixelPosition:function(){return i(),r},reliableMarginLeft:function(){return i(),c},scrollboxSize:function(){return i(),s},reliableTrDimensions:function(){var i,n,r,o;return null==d&&(i=_.createElement("table"),n=_.createElement("tr"),r=_.createElement("div"),i.style.cssText="position:absolute;left:-11111px;border-collapse:separate",n.style.cssText="box-sizing:content-box;border:1px solid",n.style.height="1px",r.style.height="9px",r.style.display="block",eg.appendChild(i).appendChild(n).appendChild(r),d=parseInt((o=t.getComputedStyle(n)).height,10)+parseInt(o.borderTopWidth,10)+parseInt(o.borderBottomWidth,10)===n.offsetHeight,eg.removeChild(i)),d}}
vendor: 13,785 bytes, line 1
1))}();var eZ=["Webkit","Moz","ms"],e0=_.createElement("div").style,e1={};function e2(t){for(var i=t[0].toUpperCase()+t.slice(1),n=eZ.length;n--;)if((t=eZ[n]+i)in e0)return t}function e6(t){var i=C.cssProps[t]||e1[t];return i||(t in e0?t:e1[t]=e2(t)||t)}var e8=/^(none|table(?!-c[ea]).+)/,e5={position:"absolute",visibility:"hidden",display:"block"},e4={letterSpacing:"0",fontWeight:"400"};function e9(t,i,n){var r=ep.exec(i);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):i}function e7(t,i,n,r,o,s){var a=+("width"===i),d=0,c=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=C.css(t,n+em[a],!0,o)),r?("content"===n&&(c-=C.css(t,"padding"+em[a],!0,o)),"margin"!==n&&(c-=C.css(t,"border"+em[a]+"Width",!0,o))):(c+=C.css(t,"padding"+em[a],!0,o),"padding"!==n?c+=C.css(t,"border"+em[a]+"Width",!0,o):d+=C.css(t,"border"+em[a]+"Width",!0,o));return!r&&s>=0&&(c+=Math.max(0,Math.ceil(t["offset"+i[0].toUpperCase()+i.slice(1)]-s-c-d-.5))||0),c+l}function e3(t,i,n){var r=eK(t),o=(!m.boxSizingReliable()||n)&&"border-box"===C.css(t,"boxSizing",!1,r),s=o,a=eQ(t,i,r),d="offset"+i[0].toUpperCase()+i.slice(1);if(eG.test(a)){if(!n)return a;a="auto"}return(!m.boxSizingReliable()&&o||!m.reliableTrDimensions()&&T(t,"tr")||"auto"===a||!parseFloat(a)&&"inline"===C.css(t,"display",!1,r))&&t.getClientRects().length&&(o="border-box"===C.css(t,"boxSizing",!1,r),(s=d in t)&&(a=t[d])),(a=parseFloat(a)||0)+e7(t,i,n||(o?"border":"content"),s,r,a)+"px"}function te(t,i,n,r,o){return new te.prototype.init(t,i,n,r,o)}C.extend({cssHooks:{opacity:{get:function(t,i){if(i){var n=eQ(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(t,i,n,r){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var o,s,a,d=en(i),c=ez.test(i),l=t.style;if(c||(i=e6(d)),a=C.cssHooks[i]||C.cssHooks[d],void 0===n)return a&&"get"in a&&void 0!==(o=a.get(t,!1,r))?o:l[i];if("string"==(s=typeof n)&&(o=ep.exec(n))&&o[1]&&(n=ey(t,i,o),s="number"),null!=n&&n==n)"number"!==s||c||(n+=o&&o[3]||(C.cssNumber[d]?"":"px")),m.clearCloneStyle||""!==n||0!==i.indexOf("background")||(l[i]="inherit"),a&&"set"in a&&void 0===(n=a.set(t,n,r))||(c?l.setProperty(i,n):l[i]=n)}},css:function(t,i,n,r){var o,s,a,d=en(i);return(ez.test(i)||(i=e6(d)),(a=C.cssHooks[i]||C.cssHooks[d])&&"get"in a&&(o=a.get(t,!0,n)),void 0===o&&(o=eQ(t,i,r)),"normal"===o&&i in e4&&(o=e4[i]),""===n||n)?(s=parseFloat(o),!0===n||isFinite(s)?s||0:o):o}}),C.each(["height","width"],function(t,i){C.cssHooks[i]={get:function(t,n,r){if(n)return!e8.test(C.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?e3(t,i,r):eW(t,e5,function(){return e3(t,i,r)})},set:function(t,n,r){var o,s=eK(t),a=!m.scrollboxSize()&&"absolute"===s.position,d=(a||r)&&"border-box"===C.css(t,"boxSizing",!1,s),c=r?e7(t,i,r,d,s):0;return d&&a&&(c-=Math.ceil(t["offset"+i[0].toUpperCase()+i.slice(1)]-parseFloat(s[i])-e7(t,i,"border",!1,s)-.5)),c&&(o=ep.exec(n))&&"px"!==(o[3]||"px")&&(t.style[i]=n,n=C.css(t,i)),e9(t,n,c)}}}),C.cssHooks.marginLeft=eX(m.reliableMarginLeft,function(t,i){if(i)return(parseFloat(eQ(t,"marginLeft"))||t.getBoundingClientRect().left-eW(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}))+"px"}),C.each({margin:"",padding:"",border:"Width"},function(t,i){C.cssHooks[t+i]={expand:function(n){for(var r=0,o={},s="string"==typeof n?n.split(" "):[n];r<4;r++)o[t+em[r]+i]=s[r]||s[r-2]||s[0];return o}},"margin"!==t&&(C.cssHooks[t+i].set=e9)}),C.fn.extend({css:function(t,i){return Z(this,function(t,i,n){var r,o,s={},a=0;if(Array.isArray(i)){for(r=eK(t),o=i.length;a<o;a++)s[i[a]]=C.css(t,i[a],!1,r);return s}return void 0!==n?C.style(t,i,n):C.css(t,i)},t,i,arguments.length>1)}}),C.Tween=te,te.prototype={constructor:te,init:function(t,i,n,r,o,s){this.elem=t,this.prop=n,this.easing=o||C.easing._default,this.options=i,this.start=this.now=this.cur(),this.end=r,this.unit=s||(C.cssNumber[n]?"":"px")},cur:function(){var t=te.propHooks[this.prop];return t&&t.get?t.get(this):te.propHooks._default.get(this)},run:function(t){var i,n=te.propHooks[this.prop];return this.options.duration?this.pos=i=C.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=i=t,this.now=(this.end-this.start)*i+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):te.propHooks._default.set(this),this}},te.prototype.init.prototype=te.prototype,te.propHooks={_default:{get:function(t){var i;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(i=C.css(t.elem,t.prop,""))&&"auto"!==i?i:0},set:function(t){C.fx.step[t.prop]?C.fx.step[t.prop](t):1===t.elem.nodeType&&(C.cssHooks[t.prop]||null!=t.elem.style[e6(t.prop)])?C.style(t.elem,t.prop,t.now+t.unit):t.elem[t.prop]=t.now}}},te.propHooks.scrollTop=te.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},C.easing={linear:function(t){return t},swing:function(t){return .5-Math.cos(t*Math.PI)/2},_default:"swing"},C.fx=te.prototype.init,C.fx.step={};var tt,ti,tn=/^(?:toggle|show|hide)$/,tr=/queueHooks$/;function to(){ti&&(!1===_.hidden&&t.requestAnimationFrame?t.requestAnimationFrame(to):t.setTimeout(to,C.fx.interval),C.fx.tick())}function ts(){return t.setTimeout(function(){tt=void 0}),tt=Date.now()}function ta(t,i){var n,r=0,o={height:t};for(i=+!!i;r<4;r+=2-i)o["margin"+(n=em[r])]=o["padding"+n]=t;return i&&(o.opacity=o.width=t),o}function td(t,i,n){for(var r,o=(tu.tweeners[i]||[]).concat(tu.tweeners["*"]),s=0,a=o.length;s<a;s++)if(r=o[s].call(n,i,t))return r}function tc(t,i,n){var r,o,s,a,d,c,l,u,h="width"in i||"height"in i,p=this,m={},g=t.style,f=t.nodeType&&ev(t),_=es.get(t,"fxshow");for(r in n.queue||(null==(a=C._queueHooks(t,"fx")).unqueued&&(a.unqueued=0,d=a.empty.fire,a.empty.fire=function(){a.unqueued||d()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,C.queue(t,"fx").length||a.empty.fire()})})),i)if(o=i[r],tn.test(o)){if(delete i[r],s=s||"toggle"===o,o===(f?"hide":"show"))if("show"!==o||!_||void 0===_[r])continue;else f=!0;m[r]=_&&_[r]||C.style(t,r)}if(!(!(c=!C.isEmptyObject(i))&&C.isEmptyObject(m)))for(r in h&&1===t.nodeType&&(n.overflow=[g.overflow,g.overflowX,g.overflowY],null==(l=_&&_.display)&&(l=es.get(t,"display")),"none"===(u=C.css(t,"display"))&&(l?u=l:(eb([t],!0),l=t.style.display||l,u=C.css(t,"display"),eb([t]))),("inline"===u||"inline-block"===u&&null!=l)&&"none"===C.css(t,"float")&&(c||(p.done(function(){g.display=l}),null==l&&(l="none"===(u=g.display)?"":u)),g.display="inline-block")),n.overflow&&(g.overflow="hidden",p.always(function(){g.overflow=n.overflow[0],g.overflowX=n.overflow[1],g.overflowY=n.overflow[2]})),c=!1,m)c||(_?"hidden"in _&&(f=_.hidden):_=es.access(t,"fxshow",{display:l}),s&&(_.hidden=!f),f&&eb([t],!0),p.done(function(){for(r in f||eb([t]),es.remove(t,"fxshow"),m)C.style(t,r,m[r])})),c=td(f?_[r]:0,r,p),r in _||(_[r]=c.start,f&&(c.end=c.start,c.start=0))}function tl(t,i){var n,r,o,s,a;for(n in t)if(o=i[r=en(n)],Array.isArray(s=t[n])&&(o=s[1],s=t[n]=s[0]),n!==r&&(t[r]=s,delete t[n]),(a=C.cssHooks[r])&&"expand"in a)for(n in s=a.expand(s),delete t[r],s)n in t||(t[n]=s[n],i[n]=o);else i[r]=o}function tu(t,i,n){var r,o,s=0,a=tu.prefilters.length,d=C.Deferred().always(function(){delete c.elem}),c=function(){if(o)return!1;for(var i=tt||ts(),n=Math.max(0,l.startTime+l.duration-i),r=1-(n/l.duration||0),s=0,a=l.tweens.length;s<a;s++)l.tweens[s].run(r);return(d.notifyWith(t,[l,r,n]),r<1&&a)?n:(a||d.notifyWith(t,[l,1,0]),d.resolveWith(t,[l]),!1)},l=d.promise({elem:t,props:C.extend({},i),opts:C.extend(!0,{specialEasing:{},easing:C.easing._default},n),originalProperties:i,originalOptions:n,startTime:tt||ts(),duration:n.duration,tweens:[],createTween:function(i,n){var r=C.Tween(t,l.opts,i,n,l.opts.specialEasing[i]||l.opts.easing);return l.tweens.push(r),r},stop:function(i){var n=0,r=i?l.tweens.length:0;if(o)return this;for(o=!0;n<r;n++)l.tweens[n].run(1);return i?(d.notifyWith(t,[l,1,0]),d.resolveWith(t,[l,i])):d.rejectWith(t,[l,i]),this}}),u=l.props;for(tl(u,l.opts.specialEasing);s<a;s++)if(r=tu.prefilters[s].call(l,t,u,l.opts))return g(r.stop)&&(C._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return C.map(u,td,l),g(l.opts.start)&&l.opts.start.call(t,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),C.fx.timer(C.extend(c,{elem:t,anim:l,queue:l.opts.queue})),l}C.Animation=C.extend(tu,{tweeners:{"*":[function(t,i){var n=this.createTween(t,i);return ey(n.elem,t,ep.exec(i),n),n}]},tweener:function(t,i){g(t)?(i=t,t=["*"]):t=t.match(q);for(var n,r=0,o=t.length;r<o;r++)n=t[r],tu.tweeners[n]=tu.tweeners[n]||[],tu.tweeners[n].unshift(i)},prefilters:[tc],prefilter:function(t,i){i?tu.prefilters.unshift(t):tu.prefilters.push(t)}}),C.speed=function(t,i,n){var r=t&&"object"==typeof t?C.extend({},t):{complete:n||!n&&i||g(t)&&t,duration:t,easing:n&&i||i&&!g(i)&&i};return C.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in C.fx.speeds?r.duration=C.fx.speeds[r.duration]:r.duration=C.fx.speeds._default),(null==r.queue||!0===r.queue)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&C.dequeue(this,r.queue)},r},C.fn.extend({fadeTo:function(t,i,n,r){return this.filter(ev).css("opacity",0).show().end().animate({opacity:i},t,n,r)},animate:function(t,i,n,r){var o=C.isEmptyObject(t),s=C.speed(i,n,r),a=function(){var i=tu(this,C.extend({},t),s);(o||es.get(this,"finish"))&&i.stop(!0)};return a.finish=a,o||!1===s.queue?this.each(a):this.queue(s.queue,a)},stop:function(t,i,n){var r=function(t){var i=t.stop;delete t.stop,i(n)};return"string"!=typeof t&&(n=i,i=t,t=void 0),i&&this.queue(t||"fx",[]),this.each(function(){var i=!0,o=null!=t&&t+"queueHooks",s=C.timers,a=es.get(this);if(o)a[o]&&a[o].stop&&r(a[o]);else for(o in a)a[o]&&a[o].stop&&tr.test(o)&&r(a[o]);for(o=s.length;o--;)s[o].elem===this&&(null==t||s[o].queue===t)&&(s[o].anim.stop(n),i=!1,s.splice(o,1));(i||!n)&&C.dequeue(this,t)})},finish:function(t){return!1!==t&&(t=t||"fx"),this.each(function(){var i,n=es.get(this),r=n[t+"queue"],o=n[t+"queueHooks"],s=C.timers,a=r?r.length:0;for(n.finish=!0,C.queue(this,t,[]),o&&o.stop&&o.stop.call(this,!0),i=s.length;i--;)s[i].elem===this&&s[i].queue===t&&(s[i].anim.stop(!0),s.splice(i,1));for(i=0;i<a;i++)r[i]&&r[i].finish&&r[i].finish.call(this);delete n.finish})}}),C.each(["toggle","show","hide"],function(t,i){var n=C.fn[i];C.fn[i]=function(t,r,o){return null==t||"boolean"==typeof t?n.apply(this,arguments):this.animate(ta(i,!0),t,r,o)}}),C.each({slideDown:ta("show"),slideUp:ta("hide"),slideToggle:ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,i){C.fn[t]=function(t,n,r){return this.animate(i,t,n,r)}}),C.timers=[],C.fx.tick=function(){var t,i=0,n=C.timers;for(tt=Date.now();i<n.length;i++)(t=n[i])()||n[i]!==t||n.splice(i--,1);n.length||C.fx.stop(),tt=void 0},C.fx.timer=function(t){C.timers.push(t),C.fx.start()},C.fx.interval=13,C.fx.start=function(){ti||(ti=!0,to())},C.fx.stop=function(){ti=null},C.fx.speeds={slow:600,fast:200,_default:400},C.fn.delay=function(i,n){return i=C.fx&&C.fx.speeds[i]||i,n=n||"fx",this.queue(n,function(n,r){var o=t.setTimeout(n,i);r.stop=function(){t.clearTimeout(o)}})},function(){var t=_.createElement("input"),i=_.createElement("select").appendChild(_.createElement("option"));t.type="checkbox",m.checkOn=""!==t.value,m.optSelected=i.selected,(t=_.createElement("input")).value="t",t.type="radio",m.radioValue="t"===t.value}();var th,tp=C.expr.attrHandle;C.fn.extend({attr:function(t,i){return Z(this,C.attr,t,i,arguments.length>1)},removeAttr:function(t){return this.each(function(){C.removeAttr(this,t)})}}),C.extend({attr:function(t,i,n){var r,o,s=t.nodeType;if(3!==s&&8!==s&&2!==s)return void 0===t.getAttribute?C.prop(t,i,n):(1===s&&C.isXMLDoc(t)||(o=C.attrHooks[i.toLowerCase()]||(C.expr.match.bool.test(i)?th:void 0)),void 0!==n)?null===n?void C.removeAttr(t,i):o&&"set"in o&&void 0!==(r=o.set(t,n,i))?r:(t.setAttribute(i,n+""),n):o&&"get"in o&&null!==(r=o.get(t,i))?r:(r=C.find.attr(t,i),null==r?void 0:r)},attrHooks:{type:{set:function(t,i){if(!m.radioValue&&"radio"===i&&T(t,"input")){var n=t.value;return t.setAttribute("type",i),n&&(t.value=n),i}}}},removeAttr:function(t,i){var n,r=0,o=i&&i.match(q);if(o&&1===t.nodeType)for(;n=o[r++];)t.removeAttribute(n)}}),th={set:function(t,i,n){return!1===i?C.removeAttr(t,n):t.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\w+/g),function(t,i){var n=tp[i]||C.find.attr;tp[i]=function(t,i,r){var o,s,a=i.toLowerCase();return r||(s=tp[a],tp[a]=o,o=null!=n(t,i,r)?a:null,tp[a]=s),o}});var tm=/^(?:input|select|textarea|button)$/i,tg=/^(?:a|area)$/i;function tf(t){return(t.match(q)||[]).join(" ")}function t_(t){return t.getAttribute&&t.getAttribute("class")||""}function tv(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(q)||[]}C.fn.extend({prop:function(t,i){return Z(this,C.prop,t,i,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[C.propFix[t]||t]})}}),C.extend({prop:function(t,i,n){var r,o,s=t.nodeType;if(3!==s&&8!==s&&2!==s)return(1===s&&C.isXMLDoc(t)||(i=C.propFix[i]||i,o=C.propHooks[i]),void 0!==n)?o&&"set"in o&&void 0!==(r=o.set(t,n,i))?r:t[i]=n:o&&"get"in o&&null!==(r=o.get(t,i))?r:t[i]},propHooks:{tabIndex:{get:function(t){var i=C.find.attr(t,"tabindex");
vendor: 5,331 bytes, lines 1-2
1return i?parseInt(i,10):tm.test(t.nodeName)||tg.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),m.optSelected||(C.propHooks.selected={get:function(t){var i=t.parentNode;return i&&i.parentNode&&i.parentNode.selectedIndex,null},set:function(t){var i=t.parentNode;i&&(i.selectedIndex,i.parentNode&&i.parentNode.selectedIndex)}}),C.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){C.propFix[this.toLowerCase()]=this}),C.fn.extend({addClass:function(t){var i,n,r,o,s,a;return g(t)?this.each(function(i){C(this).addClass(t.call(this,i,t_(this)))}):(i=tv(t)).length?this.each(function(){if(r=t_(this),n=1===this.nodeType&&" "+tf(r)+" "){for(s=0;s<i.length;s++)o=i[s],0>n.indexOf(" "+o+" ")&&(n+=o+" ");r!==(a=tf(n))&&this.setAttribute("class",a)}}):this},removeClass:function(t){var i,n,r,o,s,a;return g(t)?this.each(function(i){C(this).removeClass(t.call(this,i,t_(this)))}):arguments.length?(i=tv(t)).length?this.each(function(){if(r=t_(this),n=1===this.nodeType&&" "+tf(r)+" "){for(s=0;s<i.length;s++)for(o=i[s];n.indexOf(" "+o+" ")>-1;)n=n.replace(" "+o+" "," ");r!==(a=tf(n))&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,i){var n,r,o,s,a=typeof t,d="string"===a||Array.isArray(t);return g(t)?this.each(function(n){C(this).toggleClass(t.call(this,n,t_(this),i),i)}):"boolean"==typeof i&&d?i?this.addClass(t):this.removeClass(t):(n=tv(t),this.each(function(){if(d)for(o=0,s=C(this);o<n.length;o++)r=n[o],s.hasClass(r)?s.removeClass(r):s.addClass(r);else(void 0===t||"boolean"===a)&&((r=t_(this))&&es.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":es.get(this,"__className__")||""))}))},hasClass:function(t){var i,n,r=0;for(i=" "+t+" ";n=this[r++];)if(1===n.nodeType&&(" "+tf(t_(n))+" ").indexOf(i)>-1)return!0;return!1}});var ty=/\r/g;C.fn.extend({val:function(t){var i,n,r,o=this[0];if(!arguments.length)return o?(i=C.valHooks[o.type]||C.valHooks[o.nodeName.toLowerCase()])&&"get"in i&&void 0!==(n=i.get(o,"value"))?n:"string"==typeof(n=o.value)?n.replace(ty,""):null==n?"":n:void 0;return r=g(t),this.each(function(n){var o;1===this.nodeType&&(null==(o=r?t.call(this,n,C(this).val()):t)?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=C.map(o,function(t){return null==t?"":t+""})),(i=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in i&&void 0!==i.set(this,o,"value")||(this.value=o))})}}),C.extend({valHooks:{option:{get:function(t){var i=C.find.attr(t,"value");return null!=i?i:tf(C.text(t))}},select:{get:function(t){var i,n,r,o=t.options,s=t.selectedIndex,a="select-one"===t.type,d=a?null:[],c=a?s+1:o.length;for(r=s<0?c:a?s:0;r<c;r++)if(((n=o[r]).selected||r===s)&&!n.disabled&&(!n.parentNode.disabled||!T(n.parentNode,"optgroup"))){if(i=C(n).val(),a)return i;d.push(i)}return d},set:function(t,i){for(var n,r,o=t.options,s=C.makeArray(i),a=o.length;a--;)((r=o[a]).selected=C.inArray(C.valHooks.option.get(r),s)>-1)&&(n=!0);return n||(t.selectedIndex=-1),s}}}}),C.each(["radio","checkbox"],function(){C.valHooks[this]={set:function(t,i){if(Array.isArray(i))return t.checked=C.inArray(C(t).val(),i)>-1}},m.checkOn||(C.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})});var tE=t.location,tS={guid:Date.now()},tb=/\?/;C.parseXML=function(i){var n,r;if(!i||"string"!=typeof i)return null;try{n=new t.DOMParser().parseFromString(i,"text/xml")}catch(t){}return r=n&&n.getElementsByTagName("parsererror")[0],(!n||r)&&C.error("Invalid XML: "+(r?C.map(r.childNodes,function(t){return t.textContent}).join(` 2`):i)),n};var tC=/^(?:focusinfocus|focusoutblur)$/,tD=function(t){t.stopPropagation()};C.extend(C.event,{trigger:function(i,n,r,o){var s,a,d,c,l,h,p,m,v=[r||_],y=u.call(i,"type")?i.type:i,E=u.call(i,"namespace")?i.namespace.split("."):[];if((a=m=d=r=r||_,!(3===r.nodeType||8===r.nodeType||tC.test(y+C.event.triggered)))&&(y.indexOf(".")>-1&&(y=(E=y.split(".")).shift(),E.sort()),l=0>y.indexOf(":")&&"on"+y,(i=i[C.expando]?i:new C.Event(y,"object"==typeof i&&i)).isTrigger=o?2:3,i.namespace=E.join("."),i.rnamespace=i.namespace?RegExp("(^|\\.)"+E.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,i.result=void 0,i.target||(i.target=r),n=null==n?[i]:C.makeArray(n,[i]),p=C.event.special[y]||{},o||!p.trigger||!1!==p.trigger.apply(r,n))){if(!o&&!p.noBubble&&!f(r)){for(c=p.delegateType||y,tC.test(c+y)||(a=a.parentNode);a;a=a.parentNode)v.push(a),d=a;d===(r.ownerDocument||_)&&v.push(d.defaultView||d.parentWindow||t)}for(s=0;(a=v[s++])&&!i.isPropagationStopped();)m=a,i.type=s>1?c:p.bindType||y,(h=(es.get(a,"events")||Object.create(null))[i.type]&&es.get(a,"handle"))&&h.apply(a,n),(h=l&&a[l])&&h.apply&&er(a)&&(i.result=h.apply(a,n),!1===i.result&&i.preventDefault());return i.type=y,!o&&!i.isDefaultPrevented()&&(!p._default||!1===p._default.apply(v.pop(),n))&&er(r)&&l&&g(r[y])&&!f(r)&&((d=r[l])&&(r[l]=null),C.event.triggered=y,i.isPropagationStopped()&&m.addEventListener(y,tD),r[y](),i.isPropagationStopped()&&m.removeEventListener(y,tD),C.event.triggered=void 0,d&&(r[l]=d)),i.result}},simulate:function(t,i,n){var r=C.extend(new C.Event,n,{type:t,isSimulated:!0});C.event.trigger(r,null,i)}}),C.fn.extend({trigger:function(t,i){return this.each(function(){C.event.trigger(t,
vendor: 5,704 bytes, lines 2-4
2i,this)})},triggerHandler:function(t,i){var n=this[0];if(n)return C.event.trigger(t,i,n,!0)}});var tT=/\[\]$/,tx=/\r?\n/g,tR=/^(?:submit|button|image|reset|file)$/i,tA=/^(?:input|select|textarea|keygen)/i;function tw(t,i,n,r){var o;if(Array.isArray(i))C.each(i,function(i,o){n||tT.test(t)?r(t,o):tw(t+"["+("object"==typeof o&&null!=o?i:"")+"]",o,n,r)});else if(n||"object"!==E(i))r(t,i);else for(o in i)tw(t+"["+o+"]",i[o],n,r)}C.param=function(t,i){var n,r=[],o=function(t,i){var n=g(i)?i():i;r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!C.isPlainObject(t))C.each(t,function(){o(this.name,this.value)});else for(n in t)tw(n,t[n],i,o);return r.join("&")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=C.prop(this,"elements");return t?C.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!C(this).is(":disabled")&&tA.test(this.nodeName)&&!tR.test(t)&&(this.checked||!eC.test(t))}).map(function(t,i){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,function(t){return{name:i.name,value:t.replace(tx,`\r 3`)}}):{name:i.name,value:n.replace(tx,`\r 4`)}}).get()}});var tI=/%20/g,tk=/#.*$/,tO=/([?&])_=[^&]*/,tN=/^(.*?):[ \t]*([^\r\n]*)$/mg,tP=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,tL=/^(?:GET|HEAD)$/,tM=/^\/\//,tF={},tj={},tV="*/".concat("*"),tB=_.createElement("a");function tU(t){return function(i,n){"string"!=typeof i&&(n=i,i="*");var r,o=0,s=i.toLowerCase().match(q)||[];if(g(n))for(;r=s[o++];)"+"===r[0]?(t[r=r.slice(1)||"*"]=t[r]||[]).unshift(n):(t[r]=t[r]||[]).push(n)}}function t$(t,i,n,r){var o={},s=t===tj;function a(d){var c;return o[d]=!0,C.each(t[d]||[],function(t,d){var l=d(i,n,r);return"string"!=typeof l||s||o[l]?s?!(c=l):void 0:(i.dataTypes.unshift(l),a(l),!1)}),c}return a(i.dataTypes[0])||!o["*"]&&a("*")}function tH(t,i){var n,r,o=C.ajaxSettings.flatOptions||{};for(n in i)void 0!==i[n]&&((o[n]?t:r||(r={}))[n]=i[n]);return r&&C.extend(!0,t,r),t}function tJ(t,i,n){for(var r,o,s,a,d=t.contents,c=t.dataTypes;"*"===c[0];)c.shift(),void 0===r&&(r=t.mimeType||i.getResponseHeader("Content-Type"));if(r){for(o in d)if(d[o]&&d[o].test(r)){c.unshift(o);break}}if(c[0]in n)s=c[0];else{for(o in n){if(!c[0]||t.converters[o+" "+c[0]]){s=o;break}a||(a=o)}s=s||a}if(s)return s!==c[0]&&c.unshift(s),n[s]}function tq(t,i,n,r){var o,s,a,d,c,l={},u=t.dataTypes.slice();if(u[1])for(a in t.converters)l[a.toLowerCase()]=t.converters[a];for(s=u.shift();s;)if(t.responseFields[s]&&(n[t.responseFields[s]]=i),!c&&r&&t.dataFilter&&(i=t.dataFilter(i,t.dataType)),c=s,s=u.shift()){if("*"===s)s=c;else if("*"!==c&&c!==s){if(!(a=l[c+" "+s]||l["* "+s])){for(o in l)if((d=o.split(" "))[1]===s&&(a=l[c+" "+d[0]]||l["* "+d[0]])){!0===a?a=l[o]:!0!==l[o]&&(s=d[0],u.unshift(d[1]));break}}if(!0!==a)if(a&&t.throws)i=a(i);else try{i=a(i)}catch(t){return{state:"parsererror",error:a?t:"No conversion from "+c+" to "+s}}}}return{state:"success",data:i}}tB.href=tE.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tE.href,type:"GET",isLocal:tP.test(tE.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":tV,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,i){return i?tH(tH(t,C.ajaxSettings),i):tH(C.ajaxSettings,t)},ajaxPrefilter:tU(tF),ajaxTransport:tU(tj),ajax:function(i,n){"object"==typeof i&&(n=i,i=void 0),n=n||{};var r,o,s,a,d,c,l,u,h,p,m=C.ajaxSetup({},n),g=m.context||m,f=m.context&&(g.nodeType||g.jquery)?C(g):C.event,v=C.Deferred(),y=C.Callbacks("once memory"),E=m.statusCode||{},S={},b={},D="canceled",T={readyState:0,getResponseHeader:function(t){var i;if(l){if(!a)for(a={};i=tN.exec(s);)a[i[1].toLowerCase()+" "]=(a[i[1].toLowerCase()+" "]||[]).concat(i[2]);i=a[t.toLowerCase()+" "]}return null==i?null:i.join(", ")},getAllResponseHeaders:function(){return l?s:null},setRequestHeader:function(t,i){return null==l&&(S[t=b[t.toLowerCase()]=b[t.toLowerCase()]||t]=i),this},overrideMimeType:function(t){return null==l&&(m.mimeType=t),this},statusCode:function(t){var i;if(t)if(l)T.always(t[T.status]);else for(i in t)E[i]=[E[i],t[i]];return this},abort:function(t){var i=t||D;return r&&r.abort(i),x(0,i),this}};if(v.promise(T),m.url=((i||m.url||tE.href)+"").replace(tM,tE.protocol+"//"),m.type=n.method||n.type||m.method||m.type,m.dataTypes=(m.dataType||"*").toLowerCase().match(q)||[""],null==m.crossDomain){c=_.createElement("a");try{c.href=m.url,c.href=c.href,m.crossDomain=tB.protocol+"//"+tB.host!=c.protocol+"//"+c.host}catch(t){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=C.param(m.data,m.traditional)),t$(tF,m,n,T),l)return T;for(h in(u=C.event&&m.global)&&0==C.active++&&C.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!tL.test(m.type),o=m.url.replace(tk,""),m.hasContent?m.data&&m.processData&&0===(m.contentType||"").indexOf("application/x-www-form-urlencoded")&&(m.data=m.data.replace(tI,"+")):(p=m.url.slice(o.length),m.data&&(m.processData||"string"==typeof m.data)&&(o+=(tb.test(o)?"&":"?")+m.data,delete m.data),!1===m.cache&&(o=o.replace(tO,"$1"),p=(tb.test(o)?"&":"?")+"_="+tS.guid+++p),m.url=o+p),m.ifModified&&(C.lastModified[o]&&T.setRequestHeader("If-Modified-Since",C.lastModified[o]),C.etag[o
vendor: 10,435 bytes, line 4
4]&&T.setRequestHeader("If-None-Match",C.etag[o])),(m.data&&m.hasContent&&!1!==m.contentType||n.contentType)&&T.setRequestHeader("Content-Type",m.contentType),T.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+tV+"; q=0.01":""):m.accepts["*"]),m.headers)T.setRequestHeader(h,m.headers[h]);if(m.beforeSend&&(!1===m.beforeSend.call(g,T,m)||l))return T.abort();if(D="abort",y.add(m.complete),T.done(m.success),T.fail(m.error),r=t$(tj,m,n,T)){if(T.readyState=1,u&&f.trigger("ajaxSend",[T,m]),l)return T;m.async&&m.timeout>0&&(d=t.setTimeout(function(){T.abort("timeout")},m.timeout));try{l=!1,r.send(S,x)}catch(t){if(l)throw t;x(-1,t)}}else x(-1,"No Transport");function x(i,n,a,c){var h,p,_,S,b,D=n;!l&&(l=!0,d&&t.clearTimeout(d),r=void 0,s=c||"",T.readyState=4*(i>0),h=i>=200&&i<300||304===i,a&&(S=tJ(m,T,a)),!h&&C.inArray("script",m.dataTypes)>-1&&0>C.inArray("json",m.dataTypes)&&(m.converters["text script"]=function(){}),S=tq(m,S,T,h),h?(m.ifModified&&((b=T.getResponseHeader("Last-Modified"))&&(C.lastModified[o]=b),(b=T.getResponseHeader("etag"))&&(C.etag[o]=b)),204===i||"HEAD"===m.type?D="nocontent":304===i?D="notmodified":(D=S.state,p=S.data,h=!(_=S.error))):(_=D,(i||!D)&&(D="error",i<0&&(i=0))),T.status=i,T.statusText=(n||D)+"",h?v.resolveWith(g,[p,D,T]):v.rejectWith(g,[T,D,_]),T.statusCode(E),E=void 0,u&&f.trigger(h?"ajaxSuccess":"ajaxError",[T,m,h?p:_]),y.fireWith(g,[T,D]),u&&(f.trigger("ajaxComplete",[T,m]),--C.active||C.event.trigger("ajaxStop")))}return T},getJSON:function(t,i,n){return C.get(t,i,n,"json")},getScript:function(t,i){return C.get(t,void 0,i,"script")}}),C.each(["get","post"],function(t,i){C[i]=function(t,n,r,o){return g(n)&&(o=o||r,r=n,n=void 0),C.ajax(C.extend({url:t,type:i,dataType:o,data:n,success:r},C.isPlainObject(t)&&t))}}),C.ajaxPrefilter(function(t){var i;for(i in t.headers)"content-type"===i.toLowerCase()&&(t.contentType=t.headers[i]||"")}),C._evalUrl=function(t,i,n){return C.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){C.globalEval(t,i,n)}})},C.fn.extend({wrapAll:function(t){var i;return this[0]&&(g(t)&&(t=t.call(this[0])),i=C(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&i.insertBefore(this[0]),i.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return g(t)?this.each(function(i){C(this).wrapInner(t.call(this,i))}):this.each(function(){var i=C(this),n=i.contents();n.length?n.wrapAll(t):i.append(t)})},wrap:function(t){var i=g(t);return this.each(function(n){C(this).wrapAll(i?t.call(this,n):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){C(this).replaceWith(this.childNodes)}),this}}),C.expr.pseudos.hidden=function(t){return!C.expr.pseudos.visible(t)},C.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new t.XMLHttpRequest}catch(t){}};var tG={0:200,1223:204},tz=C.ajaxSettings.xhr();m.cors=!!tz&&"withCredentials"in tz,m.ajax=tz=!!tz,C.ajaxTransport(function(i){var n,r;if(m.cors||tz&&!i.crossDomain)return{send:function(o,s){var a,d=i.xhr();if(d.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(a in i.xhrFields)d[a]=i.xhrFields[a];for(a in i.mimeType&&d.overrideMimeType&&d.overrideMimeType(i.mimeType),i.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)d.setRequestHeader(a,o[a]);n=function(t){return function(){n&&(n=r=d.onload=d.onerror=d.onabort=d.ontimeout=d.onreadystatechange=null,"abort"===t?d.abort():"error"===t?"number"!=typeof d.status?s(0,"error"):s(d.status,d.statusText):s(tG[d.status]||d.status,d.statusText,"text"!==(d.responseType||"text")||"string"!=typeof d.responseText?{binary:d.response}:{text:d.responseText},d.getAllResponseHeaders()))}},d.onload=n(),r=d.onerror=d.ontimeout=n("error"),void 0!==d.onabort?d.onabort=r:d.onreadystatechange=function(){4===d.readyState&&t.setTimeout(function(){n&&r()})},n=n("abort");try{d.send(i.hasContent&&i.data||null)}catch(t){if(n)throw t}},abort:function(){n&&n()}}}),C.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),C.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return C.globalEval(t),t}}}),C.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),C.ajaxTransport("script",function(t){if(t.crossDomain||t.scriptAttrs){var i,n;return{send:function(r,o){i=C("<script>").attr(t.scriptAttrs||{}).prop({charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){i.remove(),n=null,t&&o("error"===t.type?404:200,t.type)}),_.head.appendChild(i[0])},abort:function(){n&&n()}}}});var tK=[],tW=/(=)\?(?=&|$)|\?\?/;C.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=tK.pop()||C.expando+"_"+tS.guid++;return this[t]=!0,t}}),C.ajaxPrefilter("json jsonp",function(i,n,r){var o,s,a,d=!1!==i.jsonp&&(tW.test(i.url)?"url":"string"==typeof i.data&&0===(i.contentType||"").indexOf("application/x-www-form-urlencoded")&&tW.test(i.data)&&"data");if(d||"jsonp"===i.dataTypes[0])return o=i.jsonpCallback=g(i.jsonpCallback)?i.jsonpCallback():i.jsonpCallback,d?i[d]=i[d].replace(tW,"$1"+o):!1!==i.jsonp&&(i.url+=(tb.test(i.url)?"&":"?")+i.jsonp+"="+o),i.converters["script json"]=function(){return a||C.error(o+" was not called"),a[0]},i.dataTypes[0]="json",s=t[o],t[o]=function(){a=arguments},r.always(function(){void 0===s?C(t).removeProp(o):t[o]=s,i[o]&&(i.jsonpCallback=n.jsonpCallback,tK.push(o)),a&&g(s)&&s(a[0]),a=s=void 0}),"script"}),m.createHTMLDocument=function(){var t=_.implementation.createHTMLDocument("").body;return t.innerHTML="<form></form><form></form>",2===t.childNodes.length}(),C.parseHTML=function(t,i,n){var r,o,s;return"string"!=typeof t?[]:("boolean"==typeof i&&(n=i,i=!1),i||(m.createHTMLDocument?((r=(i=_.implementation.createHTMLDocument("")).createElement("base")).href=_.location.href,i.head.appendChild(r)):i=_),o=j.exec(t),s=!n&&[],o)?[i.createElement(o[1])]:(o=eI([t],i,s),s&&s.length&&C(s).remove(),C.merge([],o.childNodes))},C.fn.load=function(t,i,n){var r,o,s,a=this,d=t.indexOf(" ");return d>-1&&(r=tf(t.slice(d)),t=t.slice(0,d)),g(i)?(n=i,i=void 0):i&&"object"==typeof i&&(o="POST"),a.length>0&&C.ajax({url:t,type:o||"GET",dataType:"html",data:i}).done(function(t){s=arguments,a.html(r?C("<div>").append(C.parseHTML(t)).find(r):t)}).always(n&&function(t,i){a.each(function(){n.apply(this,s||[t.responseText,i,t])})}),this},C.expr.pseudos.animated=function(t){return C.grep(C.timers,function(i){return t===i.elem}).length},C.offset={setOffset:function(t,i,n){var r,o,s,a,d,c,l=C.css(t,"position"),u=C(t),h={};"static"===l&&(t.style.position="relative"),d=u.offset(),s=C.css(t,"top"),c=C.css(t,"left"),("absolute"===l||"fixed"===l)&&(s+c).indexOf("auto")>-1?(a=(r=u.position()).top,o=r.left):(a=parseFloat(s)||0,o=parseFloat(c)||0),g(i)&&(i=i.call(t,n,C.extend({},d))),null!=i.top&&(h.top=i.top-d.top+a),null!=i.left&&(h.left=i.left-d.left+o),"using"in i?i.using.call(t,h):u.css(h)}},C.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(i){C.offset.setOffset(this,t,i)});var i,n,r=this[0];if(r)return r.getClientRects().length?(i=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:i.top+n.pageYOffset,left:i.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var t,i,n,r=this[0],o={top:0,left:0};if("fixed"===C.css(r,"position"))i=r.getBoundingClientRect();else{for(i=this.offset(),n=r.ownerDocument,t=r.offsetParent||n.documentElement;t&&(t===n.body||t===n.documentElement)&&"static"===C.css(t,"position");)t=t.parentNode;t&&t!==r&&1===t.nodeType&&(o=C(t).offset(),o.top+=C.css(t,"borderTopWidth",!0),o.left+=C.css(t,"borderLeftWidth",!0))}return{top:i.top-o.top-C.css(r,"marginTop",!0),left:i.left-o.left-C.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===C.css(t,"position");)t=t.offsetParent;return t||eg})}}),C.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var n="pageYOffset"===i;C.fn[t]=function(r){return Z(this,function(t,r,o){var s;if(f(t)?s=t:9===t.nodeType&&(s=t.defaultView),void 0===o)return s?s[i]:t[r];s?s.scrollTo(n?s.pageXOffset:o,n?o:s.pageYOffset):t[r]=o},t,r,arguments.length)}}),C.each(["top","left"],function(t,i){C.cssHooks[i]=eX(m.pixelPosition,function(t,n){if(n)return n=eQ(t,i),eG.test(n)?C(t).position()[i]+"px":n})}),C.each({Height:"height",Width:"width"},function(t,i){C.each({padding:"inner"+t,content:i,"":"outer"+t},function(n,r){C.fn[r]=function(o,s){var a=arguments.length&&(n||"boolean"!=typeof o),d=n||(!0===o||!0===s?"margin":"border");return Z(this,function(i,n,o){var s;return f(i)?0===r.indexOf("outer")?i["inner"+t]:i.document.documentElement["client"+t]:9===i.nodeType?(s=i.documentElement,Math.max(i.body["scroll"+t],s["scroll"+t],i.body["offset"+t],s["offset"+t],s["client"+t])):void 0===o?C.css(i,n,d):C.style(i,n,o,d)},i,a?o:void 0,a)}})}),C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,i){C.fn[i]=function(t){return this.on(i,t)}}),C.fn.extend({bind:function(t,i,n){return this.on(t,null,i,n)},unbind:function(t,i){return this.off(t,null,i)},delegate:function(t,i,n,r){return this.on(i,t,n,r)},undelegate:function(t,i,n){return 1==arguments.length?this.off(t,"**"):this.off(i,t||"**",n)},hover:function(t,i){return this.on("mouseenter",t).on("mouseleave",i||t)}}),C.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,i){C.fn[i]=function(t,n){return arguments.length>0?this.on(i,null,t,n):this.trigger(i)}});var tY=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;C.proxy=function(t,i){var n,r,s;if("string"==typeof i&&(n=t[i],i=t,t=n),g(t))return r=o.call(arguments,2),(s=function(){return t.apply(i||this,r.concat(o.call(arguments)))}).guid=t.guid=t.guid||C.guid++,s},C.holdReady=function(t){t?C.readyWait++:C.ready(!0)},C.isArray=Array.isArray,C.parseJSON=JSON.parse,C.nodeName=T,C.isFunction=g,C.isWindow=f,C.camel
4Case=en,C.type=E,C.now=Date.now,C.isNumeric=function(t){var i=C.type(t);return("number"===i||"string"===i)&&!isNaN(t-parseFloat(t))},C.trim=function(t){return null==t?"":(t+"").replace(tY,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return C});var tQ=t.jQuery,tX=t.$;return C.noConflict=function(i){return t.$===C&&(t.$=tX),i&&t.jQuery===C&&(t.jQuery=tQ),C},void 0===i&&(t.jQuery=t.$=C),C})},775205(module,exports,__webpack_require__){module=__webpack_require__.nmd(module),function(t,i){module.exports=i()}(self,()=>(()=>{var __webpack_modules__={624(t,i,n){"use strict";n.d(i,{A:()=>uK});var r,o={};n.r(o),n.d(o,{AUTHENTICATION_REQUIRED:()=>to,AUTH_ERROR_TYPES:()=>tr,CHAT_ERROR:()=>ts,CONFERENCE_ACCESS_DENIED:()=>tp,CONFERENCE_DESTROYED:()=>td,CONFERENCE_MAX_USERS:()=>tc,CONNECTION_ERROR:()=>tl,DISPLAY_NAME_REQUIRED:()=>tm,FOCUS_DISCONNECTED:()=>tg,FOCUS_LEFT:()=>tf,GRACEFUL_SHUTDOWN:()=>t_,ICE_FAILED:()=>tv,INCOMPATIBLE_SERVER_VERSIONS:()=>ty,JitsiConferenceErrors:()=>tn,MEMBERS_ONLY_ERROR:()=>th,NOT_ALLOWED_ERROR:()=>tu,OFFER_ANSWER_FAILED:()=>tE,PASSWORD_NOT_SUPPORTED:()=>tS,PASSWORD_REQUIRED:()=>tb,RESERVATION_ERROR:()=>tC,SETTINGS_ERROR:()=>ta,VIDEOBRIDGE_NOT_AVAILABLE:()=>tD});var s={};n.r(s),n.d(s,{CONSTRAINT_FAILED:()=>n5,ELECTRON_DESKTOP_PICKER_ERROR:()=>n4,ELECTRON_DESKTOP_PICKER_NOT_FOUND:()=>n9,GENERAL:()=>n7,JitsiTrackErrors:()=>n8,NOT_FOUND:()=>n3,PERMISSION_DENIED:()=>re,SCREENSHARING_GENERIC_ERROR:()=>rt,SCREENSHARING_NOT_SUPPORTED_ERROR:()=>ri,SCREENSHARING_USER_CANCELED:()=>rn,TIMEOUT:()=>rr,TRACK_IS_DISPOSED:()=>ro,TRACK_NO_STREAM_FOUND:()=>rs,TRACK_NO_STREAM_TRACKS_FOUND:()=>rc,TRACK_TOO_MANY_TRACKS_IN_STREAM:()=>rd,UNSUPPORTED_RESOLUTION:()=>ra});var a={};n.r(a),n.d(a,{fixNegotiationNeeded:()=>r8,shimAddTrackRemoveTrack:()=>r2,shimAddTrackRemoveTrackWithNative:()=>r1,shimGetDisplayMedia:()=>rW,shimGetSendersWithDtmf:()=>rX,shimGetStats:()=>rZ,shimGetUserMedia:()=>rK,shimMediaStream:()=>rY,shimOnTrack:()=>rQ,shimPeerConnection:()=>r6,shimSenderReceiverGetStats:()=>r0});var d={};n.r(d),n.d(d,{shimAddTransceiver:()=>on,shimCreateAnswer:()=>os,shimCreateOffer:()=>oo,shimGetDisplayMedia:()=>r4,shimGetParameters:()=>or,shimGetUserMedia:()=>r5,shimOnTrack:()=>r9,shimPeerConnection:()=>r7,shimRTCDataChannel:()=>oi,shimReceiverGetStats:()=>oe,shimRemoveStream:()=>ot,shimSenderGetStats:()=>r3});var c={};n.r(c),n.d(c,{shimAudioContext:()=>og,shimCallbacksAPI:()=>oc,shimConstraints:()=>ou,shimCreateOfferLegacy:()=>om,shimGetUserMedia:()=>ol,shimLocalStreamsAPI:()=>oa,shimRTCIceServerUrls:()=>oh,shimRemoteStreamsAPI:()=>od,shimTrackEventTransceiver:()=>op});var l={};n.r(l),n.d(l,{removeExtmapAllowMixed:()=>oE,shimAddIceCandidateNullOrEmpty:()=>oS,shimConnectionState:()=>oy,shimMaxMessageSize:()=>o_,shimParameterlessSetLocalDescription:()=>ob,shimRTCIceCandidate:()=>of,shimSendThrowTypeError:()=>ov});var u={};n.r(u),n.d(u,{CONFERENCE_REQUEST_FAILED:()=>ak,CONNECTION_DROPPED_ERROR:()=>aO,JitsiConnectionErrors:()=>aI,NOT_LIVE_ERROR:()=>aN,OTHER_ERROR:()=>aP,PASSWORD_REQUIRED:()=>aL,SERVER_ERROR:()=>aM,SHARD_CHANGED_ERROR:()=>aF});var h={};n.r(h),n.d(h,{JitsiTranscriptionStatus:()=>dc,OFF:()=>du,ON:()=>dl});var p={};n.r(p),n.d(p,{ERROR_NO_CONNECTION:()=>lq,ERROR_SESSION_EXISTS:()=>lG,STATE_FAILED:()=>lJ,STATE_OFF:()=>lU,STATE_ON:()=>lB,STATE_PENDING:()=>l$,STATE_RETRYING:()=>lH,STATUS_AVAILABLE:()=>lF,STATUS_BUSY:()=>lV,STATUS_UNDEFINED:()=>lj,VideoSIPGWErrorConstants:()=>lM,VideoSIPGWStateConstants:()=>lL,VideoSIPGWStatusConstants:()=>lP});var m=n(294),g=n.n(m);let f=function(t,i){return t===i||t!=t&&i!=i},_=function(t,i){for(var n=t.length;n--;)if(f(t[n][0],i))return n;return -1};var v=Array.prototype.splice;function y(t){var i=-1,n=null==t?0:t.length;for(this.clear();++i<n;){var r=t[i];this.set(r[0],r[1])}}y.prototype.clear=function(){this.__data__=[],this.size=0},y.prototype.delete=function(t){var i=this.__data__,n=_(i,t);return!(n<0||(n==i.length-1?i.pop():v.call(i,n,1),--this.size,0))},y.prototype.get=function(t){var i=this.__data__,n=_(i,t);return n<0?void 0:i[n][1]},y.prototype.has=function(t){return _(this.__data__,t)>-1}
4,y.prototype.set=function(t,i){var n=this.__data__,r=_(n,t);return r<0?(++this.size,n.push([t,i])):n[r][1]=i,this};let E=y,S="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;var b="object"==typeof self&&self&&self.Object===Object&&self;let C=S||b||Function("return this")(),D=C.Symbol;var T=Object.prototype,x=T.hasOwnProperty,R=T.toString,A=D?D.toStringTag:void 0,w=Object.prototype.toString,I=D?D.toStringTag:void 0;let k=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":I&&I in Object(t)?function(t){var i=x.call(t,A),n=t[A];try{t[A]=void 0;var r=!0}catch(t){}var o=R.call(t);return r&&(i?t[A]=n:delete t[A]),o}(t):function(t){return w.call(t)}(t)},O=function(t){var i=typeof t;return null!=t&&("object"==i||"function"==i)},N=function(t){if(!O(t))return!1;var i=k(t);return"[object Function]"==i||"[object GeneratorFunction]"==i||"[object AsyncFunction]"==i||"[object Proxy]"==i},P=C["__core-js_shared__"];var L,M=(L=/[^.]+$/.exec(P&&P.keys&&P.keys.IE_PROTO||""))?"Symbol(src)_1."+L:"",F=Function.prototype.toString;let j=function(t){if(null!=t){try{return F.call(t)}catch(t){}try{return t+""}catch(t){}}return""};var V=/^\[object .+?Constructor\]$/,B=Object.prototype,U=Function.prototype.toString,$=B.hasOwnProperty,H=RegExp("^"+U.call($).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");let J=function(t){var i;return!(!O(t)||(i=t,M&&M in i))&&(N(t)?H:V).test(j(t))},q=function(t,i){var n=function(t,i){return null==t?void 0:t[i]}(t,i);return J(n)?n:void 0},G=q(C,"Map"),z=q(Object,"create");var K=Object.prototype.hasOwnProperty,W=Object.prototype.hasOwnProperty;function Y(t){var i=-1,n=null==t?0:t.length;for(this.clear();++i<n;){var r=t[i];this.set(r[0],r[1])}}Y.prototype.clear=function(){this.__data__=z?z(null):{},this.size=0},Y.prototype.delete=function(t){var i=this.has(t)&&delete this.__data__[t];return this.size-=!!i,i},Y.prototype.get=function(t){var i=this.__data__;if(z){var n=i[t];return"__lodash_hash_undefined__"===n?void 0:n}return K.call(i,t)?i[t]:void 0},Y.prototype.has=function(t){var i=this.__data__;return z?void 0!==i[t]:W.call(i,t)},Y.prototype.set=function(t,i){var n=this.__data__;return this.size+=+!this.has(t),n[t]=z&&void 0===i?"__lodash_hash_undefined__":i,this};let Q=Y,X=function(t,i){var n,r,o=t.__data__;return("string"==(r=typeof(n=i))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?o["string"==typeof i?"string":"hash"]:o.map};function Z(t){var i=-1,n=null==t?0:t.length;for(this.clear();++i<n;){var r=t[i];this.set(r[0],r[1])}}Z.prototype.clear=function(){this.size=0,this.__data__={hash:new Q,map:new(G||E),string:new Q}},Z.prototype.delete=function(t){var i=X(this,t).delete(t);return this.size-=!!i,i},Z.prototype.get=function(t){return X(this,t).get(t)},Z.prototype.has=function(t){return X(this,t).has(t)},Z.prototype.set=function(t,i){var n=X(this,t),r=n.size;return n.set(t,i),this.size+=+(n.size!=r),this};let ee=Z;function et(t){var i=this.__data__=new E(t);this.size=i.size}et.prototype.clear=function(){this.__data__=new E,this.size=0},et.prototype.delete=function(t){var i=this.__data__,n=i.delete(t);return this.size=i.size,n},et.prototype.get=function(t){return this.__data__.get(t)},et.prototype.has=function(t){return this.__data__.has(t)},et.prototype.set=function(t,i){var n=this.__data__;if(n instanceof E){var r=n.__data__;if(!G||r.length<199)return r.push([t,i]),this.size=++n.size,this;n=this.__data__=new ee(r)}return n.set(t,i),this.size=n.size,this};let ei=et,en=function(){try{var t=q(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),er=function(t,i,n){"__proto__"==i&&en?en(t,i,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[i]=n},eo=function(t,i,n){(void 0===n||f(t[i],n))&&(void 0!==n||i in t)||er(t,i,n)},es=function(t,i,n){for(var r=-1,o=Object(t),s=n(t),a=s.length;a--;){var d=s[++r];if(!1===i(o[d],d,o))break}return t};var ea=exports&&!exports.nodeType&&exports,ed=ea&&module&&!module.nodeType&&module,ec=ed&&ed.exports===ea?C.Buffer:void 0,el=ec?ec.allocUnsafe:void 0;let eu=function(t,i){if(i)return t.slice();var n=t.length,r=el?el(n):new t.constructor(n);return t.copy(r),r},eh=C.Uint8Array,ep=function(t){var i=new t.constructor(t.byteLength);return new eh(i).set(new eh(t)),i},em=function(t,i){var n=i?ep(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)},eg=function(t,i){var n=-1,r=t.length;for(i||(i=Array(r));++n<r;)i[n]=t[n];return i};var ef=Object.create;let e_=function(){function t(){}return function(i){if(!O(i))return{};if(ef)return ef(i);t.prototype=i;var n=new t;return t.prototype=void 0,n}}(),ev=function(t,i){return function(n){return t(i(n))}},ey=ev(Object.getPrototypeOf,Object);var eE=Object.prototype;let eS=function(t){var i=t&&t.constructor;return t===("function"==typeof i&&i.prototype||eE)},eb=function(t){return"function"!=typeof t.constructor||eS(t)?{}:e_(ey(t))},eC=function(t){return null!=t&&"object"==typeof t},eD=function(t){return eC(t)&&"[object Arguments]"==k(t)};var eT=Object.prototype,ex=eT.hasOwnProperty,eR=eT.propertyIsEnumerable;let eA=eD(function(){return arguments}())?eD:function(t){return eC(t)&&ex.call(t,"callee")&&!eR.call(t,"callee")},ew=Array.isArray,eI=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=0x1fffffffffffff},ek=function(t){return null!=t&&eI(t.length)&&!N(t)};var eO=exports&&!exports.nodeType&&exports,eN=eO&&module&&!module.nodeType&&module,eP=eN&&eN.exports===eO?C.Buffer:void 0;let eL=(eP?eP.isBuffer:void 0)||function(){return!1};var eM=Object.prototype,eF=Function.prototype.toString,ej=eM.hasOwnProperty,eV=eF.call(Object),eB={};
4eB["[object Float32Array]"]=eB["[object Float64Array]"]=eB["[object Int8Array]"]=eB["[object Int16Array]"]=eB["[object Int32Array]"]=eB["[object Uint8Array]"]=eB["[object Uint8ClampedArray]"]=eB["[object Uint16Array]"]=eB["[object Uint32Array]"]=!0,eB["[object Arguments]"]=eB["[object Array]"]=eB["[object ArrayBuffer]"]=eB["[object Boolean]"]=eB["[object DataView]"]=eB["[object Date]"]=eB["[object Error]"]=eB["[object Function]"]=eB["[object Map]"]=eB["[object Number]"]=eB["[object Object]"]=eB["[object RegExp]"]=eB["[object Set]"]=eB["[object String]"]=eB["[object WeakMap]"]=!1;let eU=function(t){return function(i){return t(i)}};var e$=exports&&!exports.nodeType&&exports,eH=e$&&module&&!module.nodeType&&module,eJ=eH&&eH.exports===e$&&S.process;let eq=function(){try{return eH&&eH.require&&eH.require("util").types||eJ&&eJ.binding&&eJ.binding("util")}catch(t){}}();var eG=eq&&eq.isTypedArray;let ez=eG?eU(eG):function(t){return eC(t)&&eI(t.length)&&!!eB[k(t)]},eK=function(t,i){if(("constructor"!==i||"function"!=typeof t[i])&&"__proto__"!=i)return t[i]};var eW=Object.prototype.hasOwnProperty;let eY=function(t,i,n){var r=t[i];eW.call(t,i)&&f(r,n)&&(void 0!==n||i in t)||er(t,i,n)},eQ=function(t,i,n,r){var o=!n;n||(n={});for(var s=-1,a=i.length;++s<a;){var d=i[s],c=r?r(n[d],t[d],d,n,t):void 0;void 0===c&&(c=t[d]),o?er(n,d,c):eY(n,d,c)}return n};var eX=/^(?:0|[1-9]\d*)$/;let eZ=function(t,i){var n=typeof t;return!!(i=null==i?0x1fffffffffffff:i)&&("number"==n||"symbol"!=n&&eX.test(t))&&t>-1&&t%1==0&&t<i};var e0=Object.prototype.hasOwnProperty;let e1=function(t,i){var n=ew(t),r=!n&&eA(t),o=!n&&!r&&eL(t),s=!n&&!r&&!o&&ez(t),a=n||r||o||s,d=a?function(t,i){for(var n=-1,r=Array(t);++n<t;)r[n]=i(n);return r}(t.length,String):[],c=d.length;for(var l in t)!i&&!e0.call(t,l)||a&&("length"==l||o&&("offset"==l||"parent"==l)||s&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||eZ(l,c))||d.push(l);return d};var e2=Object.prototype.hasOwnProperty;let e6=function(t){if(!O(t))return function(t){var i=[];if(null!=t)for(var n in Object(t))i.push(n);return i}(t);var i=eS(t),n=[];for(var r in t)("constructor"!=r||!i&&e2.call(t,r))&&n.push(r);return n},e8=function(t){return ek(t)?e1(t,!0):e6(t)},e5=function(t,i,n,r,o,s,a){var d,c=eK(t,n),l=eK(i,n),u=a.get(l);if(u)eo(t,n,u);else{var h=s?s(c,l,n+"",t,i,a):void 0,p=void 0===h;if(p){var m=ew(l),g=!m&&eL(l),f=!m&&!g&&ez(l);h=l,m||g||f?ew(c)?h=c:eC(d=c)&&ek(d)?h=eg(c):g?(p=!1,h=eu(l,!0)):f?(p=!1,h=em(l,!0)):h=[]:function(t){if(!eC(t)||"[object Object]"!=k(t))return!1;var i=ey(t);if(null===i)return!0;var n=ej.call(i,"constructor")&&i.constructor;return"function"==typeof n&&n instanceof n&&eF.call(n)==eV}(l)||eA(l)?(h=c,eA(c)?h=function(t){return eQ(t,e8(t))}(c):O(c)&&!N(c)||(h=eb(l))):p=!1}p&&(a.set(l,h),o(h,l,r,s,a),a.delete(l)),eo(t,n,h)}},e4=function t(i,n,r,o,s){i!==n&&es(n,function(a,d){if(s||(s=new ei),O(a))e5(i,n,d,r,t,o,s);else{var c=o?o(eK(i,d),a,d+"",i,n,s):void 0;void 0===c&&(c=a),eo(i,d,c)}},e8)},e9=function(t){return t};var e7=Math.max,e3=Date.now;let te=(ia=en?function(t,i){var n;return en(t,"toString",{configurable:!0,enumerable:!1,value:(n=i,function(){return n}),writable:!0})}:e9,id=0,ic=0,function(){var t=e3(),i=16-(t-ic);if(ic=t,i>0){if(++id>=800)return arguments[0]}else id=0;return ia.apply(void 0,arguments)}),tt=function(t,i){return te(function(t,i,n){return i=e7(void 0===i?t.length-1:i,0),function(){for(var r=arguments,o=-1,s=e7(r.length-i,0),a=Array(s);++o<s;)a[o]=r[i+o];o=-1;for(var d=Array(i+1);++o<i;)d[o]=r[o];return d[i]=n(a),function(t,i,n){switch(n.length){case 0:return t.call(i);case 1:return t.call(i,n[0]);case 2:return t.call(i,n[0],n[1]);case 3:return t.call(i,n[0],n[1],n[2])}return t.apply(i,n)}(t,this,d)}}(t,i,e9),t+"")},ti=(il=function(t,i,n){e4(t,i,n)},tt(function(t,i){var n=-1,r=i.length,o=r>1?i[r-1]:void 0,s=r>2?i[2]:void 0;for(o=il.length>3&&"function"==typeof o?(r--,o):void 0,s&&function(t,i,n){if(!O(n))return!1;var r=typeof i;return!!("number"==r?ek(n)&&eZ(i,n.length):"string"==r&&i in n)&&f(n[i],t)}(i[0],i[1],s)&&(o=r<3?void 0:o,r=1),t=Object(t);++n<r;){var a=i[n];a&&il(t,a,n)}return t})),tn=function(t){return t.AUTHENTICATION_REQUIRED="conference.authenticationRequired",t.CHAT_ERROR="conference.chatError",t.CONFERENCE_ACCESS_DENIED="conference.connectionError.accessDenied",t.CONFERENCE_DESTROYED="conference.destroyed",t.CONFERENCE_MAX_USERS="conference.max_users",t.CONNECTION_ERROR="conference.connectionError",t.DISPLAY_NAME_REQUIRED="conference.display_name_required",t.FOCUS_DISCONNECTED="conference.focusDisconnected",t.FOCUS_LEFT="conference.focusLeft",t.GRACEFUL_SHUTDOWN="conference.gracefulShutdown",t.ICE_FAILED="conference.iceFailed",t.INCOMPATIBLE_SERVER_VERSIONS="conference.incompatible_server_versions",t.MEMBERS_ONLY_ERROR="conference.connectionError.membersOnly",t.NOT_ALLOWED_ER
4ROR="conference.connectionError.notAllowed",t.OFFER_ANSWER_FAILED="conference.offerAnswerFailed",t.PASSWORD_NOT_SUPPORTED="conference.passwordNotSupported",t.PASSWORD_REQUIRED="conference.passwordRequired",t.RESERVATION_ERROR="conference.reservationError",t.SETTINGS_ERROR="conference.settingsError",t.VIDEOBRIDGE_NOT_AVAILABLE="conference.videobridgeNotAvailable",t}({}),tr=function(t){return t.GENERAL="general",t.NO_MAIN_PARTICIPANTS="no-main-participants",t.NO_VISITORS_LOBBY="no-visitors-lobby",t.PROMOTION_NOT_ALLOWED="promotion-not-allowed",t.ROOM_CREATION_RESTRICTION="room-creation-restriction",t.ROOM_UNAUTHENTICATED_ACCESS_DISABLED="authentication-required",t}({}),to=tn.AUTHENTICATION_REQUIRED,ts=tn.CHAT_ERROR,ta=tn.SETTINGS_ERROR,td=tn.CONFERENCE_DESTROYED,tc=tn.CONFERENCE_MAX_USERS,tl=tn.CONNECTION_ERROR,tu=tn.NOT_ALLOWED_ERROR,th=tn.MEMBERS_ONLY_ERROR,tp=tn.CONFERENCE_ACCESS_DENIED,tm=tn.DISPLAY_NAME_REQUIRED,tg=tn.FOCUS_DISCONNECTED,tf=tn.FOCUS_LEFT,t_=tn.GRACEFUL_SHUTDOWN,tv=tn.ICE_FAILED,ty=tn.INCOMPATIBLE_SERVER_VERSIONS,tE=tn.OFFER_ANSWER_FAILED,tS=tn.PASSWORD_NOT_SUPPORTED,tb=tn.PASSWORD_REQUIRED,tC=tn.RESERVATION_ERROR,tD=tn.VIDEOBRIDGE_NOT_AVAILABLE,tT=function(t){return t.AUDIO_INPUT_STATE_CHANGE="conference.audio_input_state_changed",t.AUDIO_UNMUTE_PERMISSIONS_CHANGED="conference.audio_unmute_permissions_changed",t.AUTH_STATUS_CHANGED="conference.auth_status_changed",t.AV_MODERATION_APPROVED="conference.av_moderation.approved",t.AV_MODERATION_CHANGED="conference.av_moderation.changed",t.AV_MODERATION_PARTICIPANT_APPROVED="conference.av_moderation.participant.approved",t.AV_MODERATION_PARTICIPANT_REJECTED="conference.av_moderation.participant.rejected",t.AV_MODERATION_REJECTED="conference.av_moderation.rejected",t.BEFORE_STATISTICS_DISPOSED="conference.beforeStatisticsDisposed",t.BOT_TYPE_CHANGED="conference.bot_type_changed",t.BREAKOUT_ROOMS_MOVE_TO_ROOM="conference.breakout-rooms.move-to-room",t.BREAKOUT_ROOMS_UPDATED="conference.breakout-rooms.updated",t.BRIDGE_BWE_STATS_RECEIVED="conference.bridgeBweStatsReceived",t.CONFERENCE_CREATED_TIMESTAMP="conference.createdTimestamp",t.CONFERENCE_ERROR="conference.error",t.CONFERENCE_FAILED="conference.failed",t.CONFERENCE_JOINED="conference.joined",t.CONFERENCE_JOIN_IN_PROGRESS="conference.join_in_progress",t.CONFERENCE_LEFT="conference.left",t.CONFERENCE_UNIQUE_ID_SET="conference.unique_id_set",t.CONFERENCE_VISITOR_CODECS_CHANGED="conference.visitor_codecs_changed",t.CONNECTION_ESTABLISHED="conference.connectionEstablished",t.CONNECTION_INTERRUPTED="conference.connectionInterrupted",t.CONNECTION_RESTORED="conference.connectionRestored",t.DATA_CHANNEL_CLOSED="conference.dataChannelClosed",t.DATA_CHANNEL_OPENED="conference.dataChannelOpened",t.DISPLAY_NAME_CHANGED="conference.displayNameChanged",t.DOMINANT_SPEAKER_CHANGED="conference.dominantSpeaker",t.DTMF_SUPPORT_CHANGED="conference.dtmfSupportChanged",t.E2EE_VERIFICATION_AVAILABLE="conference.e2ee.verification.available",t.E2EE_VERIFICATION_COMPLETED="conference.e2ee.verification.completed",t.E2EE_VERIFICATION_READY="conference.e2ee.verification.ready",t.ENCODE_TIME_STATS_RECEIVED="conference.encode_time_stats_received",t.ENDPOINT_MESSAGE_RECEIVED="conference.endpoint_message_received",t.ENDPOINT_STATS_RECEIVED="conference.endpoint_stats_received",t.FILE_SHARING_FILES_RECEIVED="conference.file_sharing.files_received",t.FILE_SHARING_FILE_ADDED="conference.file_sharing.file_added",t.FILE_SHARING_FILE_REMOVED="conference.file_sharing.file_removed",t.FORWARDED_SOURCES_CHANGED="conference.forwardedSourcesChanged",t.INBOUND_VIDEO_STATS_RECEIVED="conference.inbound_video_stats_received",t.KICKED="conference.kicked",t.LAST_N_ENDPOINTS_CHANGED="conference.lastNEndpointsChanged",t.LOBBY_USER_JOINED="conference.lobby.userJoined",t.LOBBY_USER_LEFT="conference.lobby.userLeft",t.LOBBY_USER_UPDATED="conference.lobby.userUpdated",t.LOCK_STATE_CHANGED="conference.lock_state_changed",t.MEMBERS_ONLY_CHANGED="conference.membersOnlyChanged",t.MESSAGE_RECEIVED="conference.messageReceived",t.METADATA_UPDATED="conference.metadata.updated",t.NOISY_MIC="conference.n
4oisy_mic",t.NON_PARTICIPANT_MESSAGE_RECEIVED="conference.non_participant_message_received",t.NO_AUDIO_INPUT="conference.no_audio_input",t.P2P_STATUS="conference.p2pStatus",t.PARTCIPANT_FEATURES_CHANGED="conference.partcipant_features_changed",t.PARTICIPANT_KICKED="conference.participant_kicked",t.PARTICIPANT_PROPERTY_CHANGED="conference.participant_property_changed",t.PARTICIPANT_SOURCE_UPDATED="conference.participant_source_updated",t.PERMISSIONS_RECEIVED="conference.permissions_received",t.PHONE_NUMBER_CHANGED="conference.phoneNumberChanged",t.POLL_ANSWER_RECEIVED="conference.pollAnswerReceived",t.POLL_RECEIVED="conference.pollReceived",t.PRIVATE_MESSAGE_RECEIVED="conference.privateMessageReceived",t.PROPERTIES_CHANGED="conference.propertiesChanged",t.REACTION_RECEIVED="conference.reactionReceived",t.RECORDER_STATE_CHANGED="conference.recorderStateChanged",t.SERVER_REGION_CHANGED="conference.server_region_changed",t.SILENT_STATUS_CHANGED="conference.silentStatusChanged",t.START_MUTED_POLICY_CHANGED="conference.start_muted_policy_changed",t.SUBJECT_CHANGED="conference.subjectChanged",t.SUSPEND_DETECTED="conference.suspendDetected",t.TALK_WHILE_MUTED="conference.talk_while_muted",t.TRACK_ADDED="conference.trackAdded",t.TRACK_AUDIO_LEVEL_CHANGED="conference.audioLevelsChanged",t.TRACK_MUTE_CHANGED="conference.trackMuteChanged",t.TRACK_REMOVED="conference.trackRemoved",t.TRACK_UNMUTE_REJECTED="conference.trackUnmuteRejected",t.TRANSCRIPTION_STATUS_CHANGED="conference.transcriptionStatusChanged",t.USER_JOINED="conference.userJoined",t.USER_LEFT="conference.userLeft",t.USER_ROLE_CHANGED="conference.roleChanged",t.USER_STATUS_CHANGED="conference.statusChanged",t.VIDEO_CODEC_CHANGED="conference.videoCodecChanged",t.VIDEO_SIP_GW_AVAILABILITY_CHANGED="conference.videoSIPGWAvailabilityChanged",t.VIDEO_SIP_GW_SESSION_STATE_CHANGED="conference.videoSIPGWSessionStateChanged",t.VIDEO_UNMUTE_PERMISSIONS_CHANGED="conference.video_unmute_permissions_changed",t.VISITORS_MESSAGE="conference.visitors_message",t.VISITORS_REJECTION="conference.visitors_rejection",t.VISITORS_SUPPORTED_CHANGED="conference.visitorsSupported",t._MEDIA_SESSION_ACTIVE_CHANGED="conference.media_session.active_changed",t._MEDIA_SESSION_STARTED="conference.media_session.started",t}({});function tx(t){var i=-1,n=null==t?0:t.length;for(this.__data__=new ee;++i<n;)this.add(t[i])}tx.prototype.add=tx.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},tx.prototype.has=function(t){return this.__data__.has(t)};let tR=tx,tA=function(t,i){for(var n=-1,r=null==t?0:t.length;++n<r;)if(i(t[n],n,t))return!0;return!1},tw=function(t,i,n,r,o,s){var a=1&n,d=t.length,c=i.length;if(d!=c&&!(a&&c>d))return!1;var l=s.get(t),u=s.get(i);if(l&&u)return l==i&&u==t;var h=-1,p=!0,m=2&n?new tR:void 0;for(s.set(t,i),s.set(i,t);++h<d;){var g=t[h],f=i[h];if(r)var _=a?r(f,g,h,i,t,s):r(g,f,h,t,i,s);if(void 0!==_){if(_)continue;p=!1;break}if(m){if(!tA(i,function(t,i){var a;if(a=i,!m.has(a)&&(g===t||o(g,t,n,r,s)))return m.push(i)})){p=!1;break}}else if(g!==f&&!o(g,f,n,r,s)){p=!1;break}}return s.delete(t),s.delete(i),p},tI=function(t){var i=-1,n=Array(t.size);return t.forEach(function(t,r){n[++i]=[r,t]}),n},tk=function(t){var i=-1,n=Array(t.size);return t.forEach(function(t){n[++i]=t}),n};var tO=D?D.prototype:void 0,tN=tO?tO.valueOf:void 0;let tP=function(t,i){for(var n=-1,r=i.length,o=t.length;++n<r;)t[o+n]=i[n];return t},tL=function(t,i,n){var r=i(t);return ew(t)?r:tP(r,n(t))},tM=function(){return[]};var tF=Object.prototype.propertyIsEnumerable,tj=Object.getOwnPropertySymbols;let tV=tj?function(t){return null==t?[]:function(t,i){for(var n=-1,r=null==t?0:t.length,o=0,s=[];++n<r;){var a=t[n];i(a,n,t)&&(s[o++]=a)}return s}(tj(t=Object(t)),function(i){return tF.call(t,i)})}:tM,tB=ev(Object.keys,Object);var tU=Object.prototype.hasOwnProperty;let t$=function(t){return ek(t)?e1(t):function(t){if(!eS(t))return tB(t);var i=[];for(var n in Object(t))tU.call(t,n)&&"constructor"!=n&&i.push(n);return i}(t)},tH=function(t){return tL(t,t$,tV)};var tJ=Object.prototype.hasOwnProperty;let tq=q(C,"DataView"),tG=q(C,"Promise"),tz=q(C,"Set"),tK=q(C,"WeakMap");var tW="[object Map]",tY="[object Promise]",tQ="[object Set]",tX="[object WeakMap]",tZ="[object DataView]",t0=j(tq),t1=j(G),t2=j(tG),t6=j(tz),t8=j(tK),t5=k;(tq&&t5(new tq(new ArrayBuffer(1)))!=tZ||G&&t5(new G)!=tW||tG&&t5(tG.resolve())!=tY||tz&&t5(new tz)!=tQ||tK&&t5(new tK)!=tX)&&(t5=function(t){var i=k(t),n="[object Object]"==i?t.constructor:void 0,r=n?j(n):"";if(r)switch(r){case t0:return tZ;case t1:return tW;case t2:return tY;case t6:return tQ;case t8:return tX}return i});let t4=t5;var t9="[object Arguments]",t7="[object Array]",t3="[object Object]",ie=Object.prototype.hasOwnProperty;let it=function(t,i,n,r,o,s){var a=ew(t),d=ew(i),c=a?t7:t4(t),l=d?t7:t4(i),u=(c=c==t9?t3:c)==t3,h=(l=l==t9?t3:l)==t3,p=c==l;if(p&&eL(t)){if(!eL(i))return!1;a=!0,u=!1}if(p&&!u)return s||(s=new ei),a||ez(t)?tw(t,i,n,r,o,s):function(t,i,n,r,o,s,a){switch(n){case"[object DataView]":if(t.byteLength!=i.byteLength||t.byteOffset!=i.byteOffset)break;t=t.buffer,i=i.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=i.byteLength||!s(new eh(t),new eh(i)));case"[object Boolean]":case"[object Date]":case"[object Number]":return f(+t,+i);case"[object Error]":return t.name==i.name&&t.message==i.message;case"[object RegExp]":case"[object String]":return t==i+"";case"[object Map]":var d=tI;case"[object Set]":var c=1&r;if(d||(d=tk),t.size!=i.size&&!c)break;var l=a.get(t);if(l)return l==i;r|=2,a.set(t,i);var u=tw(d(t),d(i),r,o,s,a);return a.delete(t),u;case"[object Symbol]":if(tN)return tN.call(t)==tN.call(i)}return!1}(t,i,c,n,r,o,s);if(!(1&n)){var m=u&&ie.call(t,"__wrapped__"),g=h&&ie.call(i,"__wrapped__");
4if(m||g){var _=m?t.value():t,v=g?i.value():i;return s||(s=new ei),o(_,v,n,r,s)}}return!!p&&(s||(s=new ei),function(t,i,n,r,o,s){var a=1&n,d=tH(t),c=d.length;if(c!=tH(i).length&&!a)return!1;for(var l=c;l--;){var u=d[l];if(!(a?u in i:tJ.call(i,u)))return!1}var h=s.get(t),p=s.get(i);if(h&&p)return h==i&&p==t;var m=!0;s.set(t,i),s.set(i,t);for(var g=a;++l<c;){var f=t[u=d[l]],_=i[u];if(r)var v=a?r(_,f,u,i,t,s):r(f,_,u,t,i,s);if(!(void 0===v?f===_||o(f,_,n,r,s):v)){m=!1;break}g||(g="constructor"==u)}if(m&&!g){var y=t.constructor,E=i.constructor;y==E||!("constructor"in t)||!("constructor"in i)||"function"==typeof y&&y instanceof y&&"function"==typeof E&&E instanceof E||(m=!1)}return s.delete(t),s.delete(i),m}(t,i,n,r,o,s))},ii=function t(i,n,r,o,s){return i===n||(null!=i&&null!=n&&(eC(i)||eC(n))?it(i,n,r,o,t,s):i!=i&&n!=n)},ir=function(t,i){return ii(t,i)};var io=n(532);let is=function(t){return t.LOCAL_TRACK_STOPPED="track.stopped",t.NO_AUDIO_INPUT="track.no_audio_input",t.NO_DATA_FROM_SOURCE="track.no_data_from_source",t.TRACK_AUDIO_LEVEL_CHANGED="track.audioLevelsChanged",t.TRACK_AUDIO_OUTPUT_CHANGED="track.audioOutputChanged",t.TRACK_MUTE_CHANGED="track.trackMuteChanged",t.TRACK_OWNER_SET="track.owner_set",t.TRACK_STREAMING_STATUS_CHANGED="track.streaming_status_changed",t.TRACK_VIDEOTYPE_CHANGED="track.videoTypeChanged",t}({});var ia,id,ic,il,iu,ih=n(17);!function(t){t.CHROME="chrome",t.ELECTRON="electron",t.FIREFOX="firefox",t.REACT_NATIVE="react-native",t.SAFARI="safari",t.WEBKIT_BROWSER="webkit-browser"}(iu||(iu={}));let ip={Chrome:iu.CHROME,Firefox:iu.FIREFOX,Safari:iu.SAFARI,Electron:iu.ELECTRON};!function(t){t.BLINK="blink",t.GECKO="gecko",t.WEBKIT="webkit"}(iS||(iS={}));let im={Blink:iS.BLINK,WebKit:iS.WEBKIT,Gecko:iS.GECKO};function ig(t){let i=t.engine,n=t.engineVersion,r=t.name,o=t.version;return{name:ip[r],version:o,engine:i?im[i]:void 0,engineVersion:n}}class i_{constructor(t){this._parser=new ih.UAParser(navigator.userAgent);const i=t?ig(t):function(t){let i=function(){let t,i=navigator.userAgent.match(/\b(react[ \t_-]*native)(?:\/(\S+))?/i);if(i||"ReactNative"===navigator.product){let n=iu.REACT_NATIVE;return t="unknown",i&&i.length>2&&(n=i[1],t=i[2]),{name:n,version:t}}}();if(i)return i;let n=t.getBrowser(),r=n.name,o=n.version,s=t.getEngine();return ig({name:r,version:o,engine:s.name,engineVersion:s.version})}(this._parser),n=i.name,r=i.version,o=i.engine,s=i.engineVersion;this._name=n,this._version=r,this._engine=o,this._engineVersion=s}isChrome(){return this._name===iu.CHROME||this._engine===iS.BLINK}isFirefox(){return this._engine===iS.GECKO}isSafari(){return this._name===iu.SAFARI}isElectron(){return this._name===iu.ELECTRON}isReactNative(){return this._name===iu.REACT_NATIVE}isChromiumBased(){return this._engine===iS.BLINK}isWebKitBased(){return this._engine===iS.WEBKIT}getName(){return this._name?this._name:this._parser.getBrowser().name}getVersion(){return this._version?this._version:this._parser.getBrowser().version}getEngine(){return this._engine}getEngineVersion(){return this._engineVersion}getOS(){return this._parser.getOS().name}getOSVersion(){return this._parser.getOS().version}isVersionGreaterThan(t){return!!this._version&&parseInt(this._version,10)>t}isVersionLessThan(t){return!!this._version&&parseInt(this._version,10)<t}isVersionEqualTo(t){return!!this._version&&parseInt(this._version,10)===t}isEngineVersionGreaterThan(t){return!!this._engineVersion&&parseInt(this._engineVersion,10)>t}isEngineVersionLessThan(t){return!!this._engineVersion&&parseInt(this._engineVersion,10)<t}isEngineVersionEqualTo(t){return!!this._engineVersion&&parseInt(this._engineVersion,10)===t}}let iv=(0,n(116).getLogger)("rtctstats");function iy(t,i){let n=JSON.parse(JSON.stringify(i));Object.keys(n).forEach(i=>{let r=n[i];delete r.id,t[i]&&Object.keys(r).forEach(o=>{r[o]===t[i][o]&&delete n[i][o]})});let r=-1/0;return Object.keys(n).forEach(t=>{let i=n[t];i.timestamp>r&&(r=i.timestamp)}),Object.keys(n).forEach(t=>{let i=n[t];i.timestamp===r&&(i.timestamp=0)}),n.timestamp=r,n}function iE(t){return{id:t.id,tracks:t.getTracks().map(t=>({id:t.id,kind:t.kind,label:t.label,enabled:t.enabled,muted:t.muted,readyState:t.readyState}))}}var iS,ib,iC=new Uint8Array(16);function iD(){if(!ib&&!(ib="u">typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"u">typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ib(iC)}let iT=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var ix=[],iR=0;iR<256;++iR)ix.push((iR+256).toString(16).substr(1));let iA=function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(ix[t[i+0]]+ix[t[i+1]]+ix[t[i+2]]+ix[t[i+3]]+"-"+ix[t[i+4]]+ix[t[i+5]]+"-"+ix[t[i+6]]+ix[t[i+7]]+"-"+ix[t[i+8]]+ix[t[i+9]]+"-"+ix[t[i+10]]+ix[t[i+11]]+ix[t[i+12]]+ix[t[i+13]]+ix[t[i+14]]+ix[t[i+15]]).toLowerCase();if(!function(t){return"string"==typeof t&&iT.test(t)}
4(n))throw TypeError("Stringified UUID is invalid");return n},iw=function(t,i,n){var r=(t=t||{}).random||(t.rng||iD)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,i){n=n||0;for(var o=0;o<16;++o)i[n+o]=r[o];return i}return iA(r)},iI=6e5,ik=[3001,3002];var iO=n(722),iN=n.n(iO);function iP(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}function iL(t){return 0===t.indexOf("[")||-1!==t.indexOf(":")?"x:x:x:x:x:x:x:x":"x.x.x.x"}function iM(t){let i=iN().parseCandidate(t);return"relay"!==i.type&&"ssltcp"!==i.protocol&&(i.ip=iL(i.ip),i.address=iL(i.address)),i.relatedAddress&&(i.relatedAddress=iL(i.relatedAddress)),iN().writeCandidate(i)}function iF(t){var i,n;switch(t[0]){case"addIceCandidate":case"onicecandidate":if(t[2]&&t[2].candidate){let i=t[2];i.candidate=iM(i.candidate),t[2]=i}break;case"setLocalDescription":case"setRemoteDescription":case"createOfferOnSuccess":case"createAnswerOnSuccess":t[2]&&t[2].sdp&&(t[2].sdp=(n=t[2].sdp,`${iN().splitLines(n).map(t=>0===t.indexOf("a=candidate:")?`a=${iM(t)}`:0===t.indexOf("c=")?"c=IN IP4 0.0.0.0":0===t.indexOf("a=rtcp:")?"a=rtcp:9 IN IP4 0.0.0.0":t).join(`\r 5`).trim()}\r 6`));break;case"getStats":case"getstats":t[2]&&Object.keys(i=t[2]).forEach(t=>{let n=i[t];n&&(["ipAddress","ip","address"].forEach(t=>{n[t]&&"relay"!==n.candidateType&&(n[t]=iL(n[t]))}),["googLocalAddress","googRemoteAddress"].forEach(t=>{let i,r,o;if(n[t]){o="["===n[t][0]?"]:":":";var s,a,d=(s=n[t].split(o),a=2,function(t){if(Array.isArray(t))return t}(s)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(s,a)||function(t,i){if(t){if("string"==typeof t)return iP(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?iP(t,i):void 0}}(s,a)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 7In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}());r=d[0],i=d[1],n[t]=`${iL(r)}:${i}`}}))})}}n(177);var ij,iV=n(556);!function(t){t.CHROME="chrome",t.ELECTRON="electron",t.FIREFOX="firefox",t.REACT_NATIVE="react-native",t.SAFARI="safari",t.WEBKIT_BROWSER="webkit-browser"}(ij||(ij={}));let iB={Chrome:ij.CHROME,Firefox:ij.FIREFOX,Safari:ij.SAFARI,Electron:ij.ELECTRON};!function(t){t.BLINK="blink",t.GECKO="gecko",t.WEBKIT="webkit"}(iW||(iW={}));let iU={Blink:iW.BLINK,WebKit:iW.WEBKIT,Gecko:iW.GECKO};function i$(t){let i=t.engine,n=t.engineVersion,r=t.name,o=t.version;return{name:iB[r],version:o,engine:i?iU[i]:void 0,engineVersion:n}}class iH{constructor(t){this._parser=new iV.UAParser(navigator.userAgent);const i=t?i$(t):function(t){let i=function(){let t,i=navigator.userAgent.match(/\b(react[ \t_-]*native)(?:\/(\S+))?/i);if(i||"ReactNative"===navigator.product){let n=ij.REACT_NATIVE;return t="unknown",i&&i.length>2&&(n=i[1],t=i[2]),{name:n,version:t}}}();if(i)return i;let n=t.getBrowser(),r=n.name,o=n.version,s=t.getEngine();return i$({name:r,version:o,engine:s.name,engineVersion:s.version})}(this._parser),n=i.name,r=i.version,o=i.engine,s=i.engineVersion;this._name=n,this._version=r,this._engine=o,this._engineVersion=s}isChrome(){return this._name===ij.CHROME||this._engine===iW.BLINK}isFirefox(){return this._engine===iW.GECKO}isSafari(){return this._name===ij.SAFARI}isElectron(){return this._name===ij.ELECTRON}isReactNative(){return this._name===ij.REACT_NATIVE}isChromiumBased(){return this._engine===iW.BLINK}isWebKitBased(){return this._engine===iW.WEBKIT}getName(){return this._name?this._name:this._parser.getBrowser().name}getVersion(){return this._version?this._version:this._parser.getBrowser().version}getEngine(){return this._engine}getEngineVersion(){return this._engineVersion}getOS(){return this._parser.getOS().name}getOSVersion(){return this._parser.getOS().version}isVersionGreaterThan(t){return!!this._version&&parseInt(this._version,10)>t}isVersionLessThan(t){return!!this._version&&parseInt(this._version,10)<t}isVersionEqualTo(t){return!!this._version&&parseInt(this._version,10)===t}isEngineVersionGreaterThan(t){return!!this._engineVersion&&parseInt(this._engineVersion,10)>t}isEngineVersionLessThan(t){return!!this._engineVersion&&parseInt(this._engineVersion,10)<t}isEngineVersionEqualTo(t){return!!this._engineVersion&&parseInt(this._engineVersion,10)===t}}var iJ=n(550),iq=n.n(iJ);class iG extends iq(){constructor(){super(...arguments),this._storage={}}clear(){this._storage={}}get length(){return Object.keys(this._storage).length}getItem(t){var i;return null!=(i=this._storage[t])?i:null}setItem(t,i){this._storage[t]=i}removeItem(t){delete this._storage[t]}key(t){let i=Object.keys(this._storage);return i.length<=t?null:i[t]}serialize(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(0===t.length)return JSON.stringify(this._storage);let i={...this._storage};return t.forEach(t=>{delete i[t]}),JSON.stringify(i)}}class iz extends iq(){constructor(){let t;super(),this._localStorageDisabled=!1;try{t=window.localStorage,this._localStorageDisabled=!1}catch(t){}t||(console.warn("Local storage is disabled."),t=new iG,this._localStorageDisabled=!0),this._storage=t}isLocalStorageDisabled(){return this._localStorageDisabled}setLocalStorageDisabled(t){this._localStorageDisabled=t;try{this._storage=t?new iG:window.localStorage}catch(t){}this._storage||(this._storage=new iG)}
7clear(){this._storage.clear(),this.emit("changed")}get length(){return this._storage.length}getItem(t){return this._storage.getItem(t)}setItem(t,i){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this._storage.setItem(t,i),n||this.emit("changed")}removeItem(t){this._storage.removeItem(t),this.emit("changed")}key(t){return this._storage.key(t)}serialize(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(this.isLocalStorageDisabled())return this._storage.serialize(t);let i=this._storage.length,n={};for(let r=0;r<i;r++){let i=this._storage.key(r);i&&!t.includes(i)&&(n[i]=this._storage.getItem(i))}return JSON.stringify(n)}}let iK=new iz;var iW,iY,iQ=n(586);function iX(t){return(0,iQ.parse)(t)}!function(t){t.EVENT="event",t.REQUEST="request",t.RESPONSE="response"}(iY||(iY={})),window.opener||window.parent;let iZ=new Uint8Array(16),i0=[];for(let t=0;t<256;++t)i0.push((t+256).toString(16).slice(1));let i1=function(t,i,n){return i||t||!crypto.randomUUID?function(t,i,n){var r,o,s,a;let d=null!=(r=null!=(o=(t=t||{}).random)?o:null==(s=(a=t).rng)?void 0:s.call(a))?r:crypto.getRandomValues(iZ);if(d.length<16)throw Error("Random bytes length must be >= 16");if(d[6]=15&d[6]|64,d[8]=63&d[8]|128,i){if((n=n||0)<0||n+16>i.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let t=0;t<16;++t)i[n+t]=d[t];return i}return function(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(i0[t[i+0]]+i0[t[i+1]]+i0[t[i+2]]+i0[t[i+3]]+"-"+i0[t[i+4]]+i0[t[i+5]]+"-"+i0[t[i+6]]+i0[t[i+7]]+"-"+i0[t[i+8]]+i0[t[i+9]]+"-"+i0[t[i+10]]+i0[t[i+11]]+i0[t[i+12]]+i0[t[i+13]]+i0[t[i+14]]+i0[t[i+15]]).toLowerCase()}(d)}(t,i,n):crypto.randomUUID()};function i2(t,i){return Math.floor(Math.random()*(i-t+1))+t}function i6(t){return t[i2(0,t.length-1)]}function i8(t){let i="";for(let n=0;n<t;n+=1)i+=i6("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");return i}let i5={randomAlphanumStr:i8,randomElement:i6,randomHexDigit:()=>i6("0123456789abcdef"),randomHexString(t){let i="";for(;t--;)i+=this.randomHexDigit();return i},randomInt:i2},i4=["Aaliyah","Aaron","Abagail","Abbey","Abbie","Abbigail","Abby","Abdiel","Abdul","Abdullah","Abe","Abel","Abelardo","Abigail","Abigale","Abigayle","Abner","Abraham","Ada","Adah","Adalberto","Adaline","Adam","Adan","Addie","Addison","Adela","Adelbert","Adele","Adelia","Adeline","Adell","Adella","Adelle","Aditya","Adolf","Adolfo","Adolph","Adolphus","Adonis","Adrain","Adrian","Adriana","Adrianna","Adriel","Adrien","Adrienne","Afton","Aglae","Agnes","Agustin","Agustina","Ahmad","Ahmed","Aida","Aidan","Aiden","Aileen","Aisha","Aiyana","Akeem","Al","Alaina","Alan","Alana","Alanis","Alanna","Alayna","Alba","Albert","Alberta","Albertha","Alberto","Albin","Albina","Alda","Alden","Alec","Aleen","Alejandra","Alejandrin","Alek","Alena","Alene","Alessandra","Alessandro","Alessia","Aletha","Alex","Alexa","Alexander","Alexandra","Alexandre","Alexandrea","Alexandria","Alexandrine","Alexandro","Alexane","Alexanne","Alexie","Alexis","Alexys","Alexzander","Alf","Alfonso","Alfonzo","Alford","Alfred","Alfreda","Alfredo","Ali","Alia","Alice","Alicia","Alisa","Alisha","Alison","Alivia","Aliya","Aliyah","Aliza","Alize","Allan","Allen","Allene","Allie","Allison","Ally","Alphonso","Alta","Althea","Alva","Alvah","Alvena","Alvera","Alverta","Alvina","Alvis","Alyce","Alycia","Alysa","Alysha","Alyson","Alysson","Amalia","Amanda","Amani","Amara","Amari","Amaya","Amber","Ambrose","Amelia","Amelie","Amely","America","Americo","Amie","Amina","Amir","Amira","Amiya","Amos","Amparo","Amy","Amya","Ana","Anabel","Anabelle","Anahi","Anais","Anastacio","Anastasia","Anderson","Andre","Andreane","Andreanne","Andres","Andrew","Andy","Angel","Angela","Angelica","Angelina","Angeline","Angelita","Angelo","Angie","Angus","Anibal","Anika","Anissa","Anita","Aniya","Aniyah","Anjali","Anna","Annabel","Annabell","Annabelle","Annalise","Annamae","Annamarie","Anne","Annetta","Annette","Annie","Ansel","Ansley","Anthony","Antoinette","Antone","Antonetta","Antonette","Antonia","Antonietta","Antonina","Antonio","Antwan","Antwon","Anya","April","Ara","Araceli","Aracely","Arch","Archibald","Ardella","Arde
7n","Ardith","Arely","Ari","Ariane","Arianna","Aric","Ariel","Arielle","Arjun","Arlene","Arlie","Arlo","Armand","Armando","Armani","Arnaldo","Arne","Arno","Arnold","Arnoldo","Arnulfo","Aron","Art","Arthur","Arturo","Arvel","Arvid","Arvilla","Aryanna","Asa","Asha","Ashlee","Ashleigh","Ashley","Ashly","Ashlynn","Ashton","Ashtyn","Asia","Assunta","Astrid","Athena","Aubree","Aubrey","Audie","Audra","Audreanne","Audrey","August","Augusta","Augustine","Augustus","Aurelia","Aurelie","Aurelio","Aurore","Austen","Austin","Austyn","Autumn","Ava","Avery","Avis","Axel","Ayana","Ayden","Ayla","Aylin","Baby","Bailee","Bailey","Barbara","Barney","Baron","Barrett","Barry","Bart","Bartholome","Barton","Baylee","Beatrice","Beau","Beaulah","Bell","Bella","Belle","Ben","Benedict","Benjamin","Bennett","Bennie","Benny","Benton","Berenice","Bernadette","Bernadine","Bernard","Bernardo","Berneice","Bernhard","Bernice","Bernie","Berniece","Bernita","Berry","Bert","Berta","Bertha","Bertram","Bertrand","Beryl","Bessie","Beth","Bethany","Bethel","Betsy","Bette","Bettie","Betty","Bettye","Beulah","Beverly","Bianka","Bill","Billie","Billy","Birdie","Blair","Blaise","Blake","Blanca","Blanche","Blaze","Bo","Bobbie","Bobby","Bonita","Bonnie","Boris","Boyd","Brad","Braden","Bradford","Bradley","Bradly","Brady","Braeden","Brain","Brandi","Brando","Brandon","Brandt","Brandy","Brandyn","Brannon","Branson","Brant","Braulio","Braxton","Brayan","Breana","Breanna","Breanne","Brenda","Brendan","Brenden","Brendon","Brenna","Brennan","Brennon","Brent","Bret","Brett","Bria","Brian","Briana","Brianne","Brice","Bridget","Bridgette","Bridie","Brielle","Brigitte","Brionna","Brisa","Britney","Brittany","Brock","Broderick","Brody","Brook","Brooke","Brooklyn","Brooks","Brown","Bruce","Bryana","Bryce","Brycen","Bryon","Buck","Bud","Buddy","Buford","Bulah","Burdette","Burley","Burnice","Buster","Cade","Caden","Caesar","Caitlyn","Cale","Caleb","Caleigh","Cali","Calista","Callie","Camden","Cameron","Camila","Camilla","Camille","Camren","Camron","Camryn","Camylle","Candace","Candelario","Candice","Candida","Candido","Cara","Carey","Carissa","Carlee","Carleton","Carley","Carli","Carlie","Carlo","Carlos","Carlotta","Carmel","Carmela","Carmella","Carmelo","Carmen","Carmine","Carol","Carolanne","Carole","Carolina","Caroline","Carolyn","Carolyne","Carrie","Carroll","Carson","Carter","Cary","Casandra","Casey","Casimer","Casimir","Casper","Cassandra","Cassandre","Cassidy","Cassie","Catalina","Caterina","Catharine","Catherine","Cathrine","Cathryn","Cathy","Cayla","Ceasar","Cecelia","Cecil","Cecile","Cecilia","Cedrick","Celestine","Celestino","Celia","Celine","Cesar","Chad","Chadd","Chadrick","Chaim","Chance","Chandler","Chanel","Chanelle","Charity","Charlene","Charles","Charley","Charlie","Charlotte","Chase","Chasity","Chauncey","Chaya","Chaz","Chelsea","Chelsey","Chelsie","Chesley","Chester","Chet","Cheyanne","Cheyenne","Chloe","Chris","Christ","Christa","Christelle","Christian","Christiana","Christina","Christine","Christop","Christophe","Christopher","Christy","Chyna","Ciara","Cicero","Cielo","Cierra","Cindy","Citlalli","Clair","Claire","Clara","Clarabelle","Clare","Clarissa","Clark","Claud","Claude","Claudia","Claudie","Claudine","Clay","Clemens","Clement","Clementina","Clementine","Clemmie","Cleo","Cleora","Cleta","Cletus","Cleve","Cleveland","Clifford","Clifton","Clint","Clinton","Clotilde","Clovis","Cloyd","Clyde","Coby","Cody","Colby","Cole","Coleman","Colin","Colleen","Collin","Colt","Colten","Colton","Columbus","Concepcion","Conner","Connie","Connor","Conor","Conrad","Constance","Constantin","Consuelo","Cooper","Cora","Coralie","Corbin","Cordelia","Cordell","Cordia","Cordie","Corene","Corine","Cornelius","Cornell","Corrine","Cortez","Cortney","Cory","Coty","Courtney","Coy","Craig","Crawford","Creola","Cristal","Cristian","Cristina","Cristobal","Cristopher","Cruz","Crystal","Crystel","Cullen","Curt","Curtis","Cydney","Cynthia","Cyril","Cyrus","Dagmar","Dahlia","Daija","Daisha","Daisy","Dakota","Dale","Dallas","Dallin","Dalton","Damaris","Dameon","Damian","Damien","Damion","Damon","Dan","Dana","Dandre","Dane","D'angelo","Dangelo","Danial","Daniela","Daniella","Danielle","Danika","Dannie","Danny","Dante","Danyka","Daphne","Daphnee","Daphney","Darby","Daren","Darian","Dariana","Darien","Dario","Darion","Darius","Darlene","Daron","Darrel","Darrell","Darren","Darrick","Darrin","Darrion","Darron","Darryl","Darwin","Daryl","Dashawn","Dasia","Dave","David","Davin","Davion","Davon","Davonte","Dawn","Dawson","Dax","Dayana","Dayna","Dayne","Dayton","Dean","Deangelo","Deanna","Deborah","Declan","Dedric","Dedrick","Dee","Deion","Deja","Dejah","Dejon","Dejuan","Delaney","Delbert","Delfina","Delia","Delilah","Dell","Della","Delmer","Delores","Delpha","Delphia","Delphine","Delta","Demarco","Demarcus","Demario","Demetris","Demetrius","Demond","Dena","Denis","Dennis","Deon","Deondre","Deontae","Deonte","Dereck","Derek","Derick","Deron","Derrick","Deshaun","Deshawn","Desiree","Desmond","Dessie","Destany","Destin","Destinee","Destiney","Destini","Destiny","Devan","Devante","Deven","Devin","Devon","Devonte","Devyn","Dewayne","Dewitt","Dexter","Diamond","Diana","Dianna","Diego","Dillan","Dillon","Dimitri","Dina","Dino","Dion","Dixie","Dock","Dolly","Dolores","Domenic","Domenica","Domenick","Domenico","Domingo","Dominic","Dominique","Don","Donald","Donato","Donavon","Donna","Donnell","Donnie","Donny","Dora","Dorcas","Dorian","Doris","Dorothea","Dorothy","Dorris","Dortha","Dorthy","Doug","Douglas","Dovie","Doyle","Drake","Drew","Duane","Dudley","Dulce","Duncan","Durward","Dustin","Dusty","Dwight","Dylan","Earl","Earlene","Earline","Earnest","Earnestine","Easter","Easton","Ebba","Ebony","Ed","Eda","E
7dd","Eddie","Eden","Edgar","Edgardo","Edison","Edmond","Edmund","Edna","Eduardo","Edward","Edwardo","Edwin","Edwina","Edyth","Edythe","Effie","Efrain","Efren","Eileen","Einar","Eino","Eladio","Elaina","Elbert","Elda","Eldon","Eldora","Eldred","Eldridge","Eleanora","Eleanore","Eleazar","Electa","Elena","Elenor","Elenora","Eleonore","Elfrieda","Eli","Elian","Eliane","Elias","Eliezer","Elijah","Elinor","Elinore","Elisa","Elisabeth","Elise","Eliseo","Elisha","Elissa","Eliza","Elizabeth","Ella","Ellen","Ellie","Elliot","Elliott","Ellis","Ellsworth","Elmer","Elmira","Elmo","Elmore","Elna","Elnora","Elody","Eloisa","Eloise","Elouise","Eloy","Elroy","Elsa","Else","Elsie","Elta","Elton","Elva","Elvera","Elvie","Elvis","Elwin","Elwyn","Elyse","Elyssa","Elza","Emanuel","Emelia","Emelie","Emely","Emerald","Emerson","Emery","Emie","Emil","Emile","Emilia","Emiliano","Emilie","Emilio","Emily","Emma","Emmalee","Emmanuel","Emmanuelle","Emmet","Emmett","Emmie","Emmitt","Emmy","Emory","Ena","Enid","Enoch","Enola","Enos","Enrico","Enrique","Ephraim","Era","Eriberto","Eric","Erica","Erich","Erick","Ericka","Erik","Erika","Erin","Erling","Erna","Ernest","Ernestina","Ernestine","Ernesto","Ernie","Ervin","Erwin","Eryn","Esmeralda","Esperanza","Esta","Esteban","Estefania","Estel","Estell","Estella","Estelle","Estevan","Esther","Estrella","Etha","Ethan","Ethel","Ethelyn","Ethyl","Ettie","Eudora","Eugene","Eugenia","Eula","Eulah","Eulalia","Euna","Eunice","Eusebio","Eva","Evalyn","Evan","Evangeline","Evans","Eve","Eveline","Evelyn","Everardo","Everett","Everette","Evert","Evie","Ewald","Ewell","Ezekiel","Ezequiel","Ezra","Fabian","Fabiola","Fae","Fannie","Fanny","Fatima","Faustino","Fausto","Favian","Fay","Faye","Federico","Felicia","Felicita","Felicity","Felipa","Felipe","Felix","Felton","Fermin","Fern","Fernando","Ferne","Fidel","Filiberto","Filomena","Finn","Fiona","Flavie","Flavio","Fleta","Fletcher","Flo","Florence","Florencio","Florian","Florida","Florine","Flossie","Floy","Floyd","Ford","Forest","Forrest","Foster","Frances","Francesca","Francesco","Francis","Francisca","Francisco","Franco","Frank","Frankie","Franz","Fred","Freda","Freddie","Freddy","Frederic","Frederick","Frederik","Frederique","Fredrick","Fredy","Freeda","Freeman","Freida","Frida","Frieda","Friedrich","Fritz","Furman","Gabe","Gabriel","Gabriella","Gabrielle","Gaetano","Gage","Gail","Gardner","Garett","Garfield","Garland","Garnet","Garnett","Garret","Garrett","Garrick","Garrison","Garry","Garth","Gaston","Gavin","Gay","Gayle","Gaylord
vendor: 16,636 bytes, line 7
7","Gene","General","Genesis","Genevieve","Gennaro","Genoveva","Geo","Geoffrey","George","Georgette","Georgiana","Georgianna","Geovanni","Geovanny","Geovany","Gerald","Geraldine","Gerard","Gerardo","Gerda","Gerhard","Germaine","German","Gerry","Gerson","Gertrude","Gia","Gianni","Gideon","Gilbert","Gilberto","Gilda","Giles","Gillian","Gina","Gino","Giovani","Giovanna","Giovanni","Giovanny","Gisselle","Giuseppe","Gladyce","Gladys","Glen","Glenda","Glenna","Glennie","Gloria","Godfrey","Golda","Golden","Gonzalo","Gordon","Grace","Gracie","Graciela","Grady","Graham","Grant","Granville","Grayce","Grayson","Green","Greg","Gregg","Gregoria","Gregorio","Gregory","Greta","Gretchen","Greyson","Griffin","Grover","Guadalupe","Gudrun","Guido","Guillermo","Guiseppe","Gunnar","Gunner","Gus","Gussie","Gust","Gustave","Guy","Gwen","Gwendolyn","Hadley","Hailee","Hailey","Hailie","Hal","Haleigh","Haley","Halie","Halle","Hallie","Hank","Hanna","Hannah","Hans","Hardy","Harley","Harmon","Harmony","Harold","Harrison","Harry","Harvey","Haskell","Hassan","Hassie","Hattie","Haven","Hayden","Haylee","Hayley","Haylie","Hazel","Hazle","Heath","Heather","Heaven","Heber","Hector","Heidi","Helen","Helena","Helene","Helga","Hellen","Helmer","Heloise","Henderson","Henri","Henriette","Henry","Herbert","Herman","Hermann","Hermina","Herminia","Herminio","Hershel","Herta","Hertha","Hester","Hettie","Hilario","Hilbert","Hilda","Hildegard","Hillard","Hillary","Hilma","Hilton","Hipolito","Hiram","Hobart","Holden","Hollie","Hollis","Holly","Hope","Horace","Horacio","Hortense","Hosea","Houston","Howard","Howell","Hoyt","Hubert","Hudson","Hugh","Hulda","Humberto","Hunter","Hyman","Ian","Ibrahim","Icie","Ida","Idell","Idella","Ignacio","Ignatius","Ike","Ila","Ilene","Iliana","Ima","Imani","Imelda","Immanuel","Imogene","Ines","Irma","Irving","Irwin","Isaac","Isabel","Isabell","Isabella","Isabelle","Isac","Isadore","Isai","Isaiah","Isaias","Isidro","Ismael","Isobel","Isom","Israel","Issac","Itzel","Iva","Ivah","Ivory","Ivy","Izabella","Izaiah","Jabari","Jace","Jacey","Jacinthe","Jacinto","Jack","Jackeline","Jackie","Jacklyn","Jackson","Jacky","Jaclyn","Jacquelyn","Jacques","Jacynthe","Jada","Jade","Jaden","Jadon","Jadyn","Jaeden","Jaida","Jaiden","Jailyn","Jaime","Jairo","Jakayla","Jake","Jakob","Jaleel","Jalen","Jalon","Jalyn","Jamaal","Jamal","Jamar","Jamarcus","Jamel","Jameson","Jamey","Jamie","Jamil","Jamir","Jamison","Jammie","Jan","Jana","Janae","Jane","Janelle","Janessa","Janet","Janice","Janick","Janie","Janis","Janiya","Jannie","Jany","Jaquan","Jaquelin","Jaqueline","Jared","Jaren","Jarod","Jaron","Jarred","Jarrell","Jarret","Jarrett","Jarrod","Jarvis","Jasen","Jasmin","Jason","Jasper","Jaunita","Javier","Javon","Javonte","Jay","Jayce","Jaycee","Jayda","Jayde","Jayden","Jaydon","Jaylan","Jaylen","Jaylin","Jaylon","Jayme","Jayne","Jayson","Jazlyn","Jazmin","Jazmyn","Jazmyne","Jean","Jeanette","Jeanie","Jeanne","Jed","Jedediah","Jedidiah","Jeff","Jefferey","Jeffery","Jeffrey","Jeffry","Jena","Jenifer","Jennie","Jennifer","Jennings","Jennyfer","Jensen","Jerad","Jerald","Jeramie","Jeramy","Jerel","Jeremie","Jeremy","Jermain","Jermaine","Jermey","Jerod","Jerome","Jeromy","Jerrell","Jerrod","Jerrold","Jerry","Jess","Jesse","Jessica","Jessie","Jessika","Jessy","Jessyca","Jesus","Jett","Jettie","Jevon","Jewel","Jewell","Jillian","Jimmie","Jimmy","Jo","Joan","Joana","Joanie","Joanne","Joannie","Joanny","Joany","Joaquin","Jocelyn","Jodie","Jody","Joe","Joel","Joelle","Joesph","Joey","Johan","Johann","Johanna","Johathan","John","Johnathan","Johnathon","Johnnie","Johnny","Johnpaul","Johnson","Jolie","Jon","Jonas","Jonatan","Jonathan","Jonathon","Jordan","Jordane","Jordi","Jordon","Jordy","Jordyn","Jorge","Jose","Josefa","Josefina","Joseph","Josephine","Josh","Joshua","Joshuah","Josiah","Josiane","Josianne","Josie","Josue","Jovan","Jovani","Jovanny","Jovany","Joy","Joyce","Juana","Juanita","Judah","Judd","Jude","Judge","Judson","Judy","Jules","Julia","Julian","Juliana","Julianne","Julie","Julien","Juliet","Julio","Julius","June","Junior","Junius","Justen","Justice","Justina","Justine","Juston","Justus","Justyn","Juvenal","Juwan","Kacey","Kaci","Kacie","Kade","Kaden","Kadin","Kaela","Kaelyn","Kaia","Kailee","Kailey","Kailyn","Kaitlin","Kaitlyn","Kale","Kaleb","Kaleigh","Kaley","Kali","Kallie","Kameron","Kamille","Kamren","Kamron","Kamryn","Kane","Kara","Kareem","Karelle","Karen","Kari","Kariane","Karianne","Karina","Karine","Karl","Karlee","Karley","Karli","Karlie","Karolann","Karson","Kasandra","Kasey","Kassandra","Katarina","Katelin","Katelyn","Katelynn","Katharina","Katherine","Katheryn","Kathleen","Kathlyn","Kathryn","Kathryne","Katlyn","Katlynn","Katrina","Katrine","Kattie","Kavon","Kay","Kaya","Kaycee","Kayden","Kayla","Kaylah","Kaylee","Kayleigh","Kayley","Kayli","Kaylie","Kaylin","Keagan","Keanu","Keara","Keaton","Keegan","Keeley","Keely","Keenan","Keira","Keith","Kellen","Kelley","Kelli","Kellie","Kelly","Kelsi","Kelsie","Kelton","Kelvin","Ken","Kendall","Kendra","Kendrick","Kenna","Kennedi","Kennedy","Kenneth","Kennith","Kenny","Kenton","Kenya","Kenyatta","Kenyon","Keon","Keshaun","Keshawn","Keven","Kevin","Kevon","Keyon","Keyshawn","Khalid","Khalil","Kian","Kiana","Kianna","Kiara","Kiarra","Kiel","Kiera","Kieran","Kiley","Kim","Kimberly","King","Kip","Kira","Kirk","Kirsten","Kirstin","Kitty","Kobe","Koby","Kody","Kolby","Kole","Korbin","Korey","Kory","Kraig","Kris","Krista","Kristian","Kristin","Kristina","Kristofer","Kristoffer","Kristopher","Kristy","Krystal","Krystel","Krystina","Kurt","Kurtis","Kyla","Kyle","Kylee","Kyleigh","Kyler","Kylie","Kyra","Lacey","Lacy","Ladarius","Lafayette","Laila","Laisha","Lamar","Lambert","Lamont","Lance","Landen","Lane","Laney","Larissa","Laron","Larry","Larue","Laura","Laurel","Lauren","Laurence","Lauretta","Lauriane","Laurianne","Laurie","Laurine","Laury","Lauryn","Lavada","Lavern","Laverna","Laverne","Lavina","Lavinia","Lavon","Lavonne","Lawrence","Lawson","Layla","Layne","Lazaro","Lea","Leann","Leanna","Leanne","Leatha","Leda","Lee","Leif","Leila","Leilani","Lela","Lelah","Leland","Lelia","Lempi","Lemuel","Lenna","Lennie","Lenny","Lenora","Lenore","Leo","Leola","Leon","Leonard","Leonardo","Leone","Leonel","Leonie","Leonor","Leonora","Leopold","Leopoldo","Leora","Lera","Lesley","Leslie","Lesly","Lessie","Lester","Leta","Letha","Letitia","Levi","Lew","Lewis","Lexi","Lexie","Lexus","Lia","Liam","Liana","Libbie","Libby","Lila","Lilian","Liliana","Liliane","Lilla","Lillian","Lilliana","Lillie","Lilly","Lily","Lilyan","Lina","Lincoln","Linda","Lindsay","Lindsey","Linnea","Linnie","Linwood","Lionel","Lisa","Lisandro","Lisette","Litzy","Liza","Lizeth","Lizzie","Llewellyn","Lloyd","Logan","Lois","Lola","Lolita","Loma","Lon","London","Lonie","Lonnie","Lonny","Lonzo","Lora","Loraine","Loren","Lorena","Lorenz","Lorenza","Lorenzo","Lori","Lorine","Lorna","Lottie","Lou","Louie","Louisa","Lourdes","Louvenia","Lowell","Loy","Loyal","Loyce","Lucas","Luciano","Lucie","Lucienne","Lucile","Lucinda","Lucio","Lucious","Lucius","Lucy","Ludie","Ludwig","Lue","Luella","Luigi","Luis","Luisa","Lukas","Lula","Lulu","Luna","Lupe","Lura","Lurline","Luther","Luz","Lyda","Lydia","Lyla","Lynn","Lyric","Lysanne","Mabel","Mabelle","Mable","Mac","Macey","Maci","Macie","Mack","Mackenzie","Macy","Madaline","Madalyn","Maddison","Madeline","Madelyn","Madelynn","Madge","Madie","Madilyn","Madisen","Madison","Madisyn","Madonna","Madyson","Mae","Maegan","Maeve","Mafalda","Magali","Magdalen","Magdalena","Maggie","Magnolia","Magnus","Maia","Maida","Maiya","Major","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malika","Malinda","Mallie","Mallory","Malvina","Mandy","Manley","Manuel","Manuela","Mara","Marc","Marcel","Marcelina","Marcelino","Marcella","Marcelle","Marcellus","Marcelo","Marcia","Marco","Marcos","Marcus","Margaret","Margarete","Margarett","Margaretta","Margarette","Margarita","Marge","Margie","Margot","Margret","Marguerite","Maria","Mariah","Mariam","Marian","Mariana","Mariane","Marianna","Marianne","Mariano","Maribel","Marie","Mariela","Marielle","Marietta","Marilie","Marilou","Marilyne","Marina","Mario","Marion","Marisa","Marisol","Maritza","Marjolaine","Marjorie","Marjory","Mark","Markus","Marlee","Marlen","Marlene","Marley","Marlin","Marlon","Marques","Marquis","Marquise","Marshall","Marta","Martin","Martina","Martine","Marty","Marvin","Mary","Maryam","Maryjane","Maryse","Mason","Mateo","Mathew","Mathias","Mathilde","Matilda","Matilde","Matt","Matteo","Mattie","Maud","Maude","Maudie","Maureen","Maurice","Mauricio","Maurine","Maverick","Mavis","Max","Maxie","Maxime","Maximilian","Maximillia","Maximillian","Maximo","Maximus","Maxine","Maxwell","May","Maya","Maybell","Maybelle","Maye","Maymie","Maynard","Mayra","Mazie","Mckayla","Mckenna","Mckenzie","Meagan","Meaghan","Meda","Megane","Meggie","Meghan","Mekhi","Melany","Melba","Melisa","Melissa","Mellie","Melody","Melvin","Melvina","Melyna","Melyssa","Mercedes","Meredith","Merl","Merle","Merlin","Merritt","Mertie","Mervin","Meta","Mia","Micaela","Micah","Michael","Michaela","Michale","Micheal","Michel","Michele","Michelle","Miguel","Mikayla","Mike","Mikel","Milan","Miles","Milford","Miller","Millie","Milo","Milton","Mina","Minerva","Minnie","Miracle","Mireille","Mireya","Misael","Missouri","Misty","Mitchel","Mitchell","Mittie","Modesta","Modesto","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica","Monique","Monroe","Monserrat","Monserrate","Montana","Monte","Monty","Morgan","Moriah","Morris","Mortimer","Morton","Mose","Moses","Moshe","Mossie","Mozell","Mozelle","Muhammad","Muriel","Murl","Murphy","Murray","Mustafa","Mya","Myah","Mylene","Myles","Myra","Myriam","Myrl","Myrna","Myron","Myrtice","Myrtie","Myrtis","Myrtle","Nadia","Nakia","Name","Nannie","Naomi","Naomie","Napoleon","Narciso","Nash","Nasir","Nat","Natalia","Natalie","Natasha","Nathan","Nathanael","Nathanial","Nathaniel","Nathen","Nayeli","Neal","Ned","Nedra","Neha","Neil","Nelda","Nella","Nelle","Nellie","Nels","Nelson","Neoma","Nestor","Nettie","Neva","Newell","Newton","Nia","Nicholas","Nicholaus","Nichole","Nick","Nicklaus","Nickolas","Nico","Nicola","Nicolas","Nicole","Nicolette","Nigel","Nikita","Nikki","Nikko","Niko","Nikolas","Nils","Nina","Noah","Noble","Noe","Noel","Noelia","Noemi","Noemie","Noemy","Nola","Nolan","Nona","Nora","Norbert","Norberto","Norene","Norma","Norris","Norval","Norwood","Nova","Novella","Nya","Nyah","Nyasia","Obie","Oceane","Ocie","Octavia","Oda","Odell","Odessa","Odie","Ofelia","Okey","Ola","Olaf","Ole","Olen","Oleta","Olga","Olin","Oliver","Ollie","Oma","Omari","Omer","Ona","Onie","Opal","Ophelia","Ora","Oral","Oran","Oren","Orie","Orin","Orion","Orland","Orlando","Orlo","Orpha","Orrin","Orval","Orville","Osbaldo","Osborne","Oscar","Osvaldo","Oswald","Oswaldo","Otha","Otho","Otilia","Otis","Ottilie","Ottis","Otto","Ova","Owen","Ozella","Pablo","Paige","Palma","Pamela","Pansy","Paolo","Paris","Parker","Pascale","Pasquale","Pat","Patience","Patricia","Patrick","Patsy","Pattie","Paul","Paula","Pauline","Paxton","Payton","Pearl","Pearlie","Pearline","Pedro","Peggie","Penelope","Percival","Percy","Perry","Pete","Peter","Petra","Peyton","Philip","Phoebe","Phyllis","Pierce","Pierre","Pietro","Pink","Pinkie","Piper","Polly","Porter","Precious","Presley","Preston","Price","Prince","Princess","Priscilla","Providenci","Prudence","Queen","Queenie","Quentin","Quincy","Quinn","Quinten","Quinton","Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafaela","Raheem","Rahsaan","Rahul","Raina","Raleigh","Ralph","Ramiro","Ramon","Ramona","Randal","Randall","Randi","Randy","Ransom","Raoul","Raphael","Raphaelle","Raquel","Rashad","Rashawn","Rasheed","Raul","Raven","Ray","Raymond","Raymundo","Reagan","Reanna","Reba","Rebeca","Rebecca","Rebeka","Rebekah","Reece","Reed","Reese","Regan","Reggie","Reginald","Reid","Reilly","Reina","Reinhold","Remington","Rene","Renee","Ressie","Reta","Retha","Retta","Reuben","Reva","Rex","Rey","Reyes","Reymundo","Reyna","Reynold","Rhea","Rhett","Rhianna","Rhiannon","Rhoda","Ricardo","Richard","Richie","Richmond","Rick","Rickey","Rickie","Ricky","Rico","Rigoberto","Riley","Rita","River","Robb","Robbie","Robert","Roberta","Roberto","Robin","Robyn","Rocio","Rocky","Rod","Roderick","Rodger","Rodolfo","Rodrick","Rodrigo","Roel","Rogelio","Roger","Rogers","Rolando","Rollin","Roma","Romaine","Roman","Ron","Ronaldo","Ronny","Roosevelt","Rory","Rosa","Rosalee","Rosalia","Rosalind","Rosalinda","Rosalyn","Rosamond","Rosanna","Rosario","Roscoe","Rose","Rosella","Roselyn","Rosemarie","Rosemary","Rosendo","Rosetta","Rosie","Rosina","Roslyn","Ross","Rossie","Rowan","Rowena","Rowland","Roxane","Roxanne","Roy","Royal","Royce","Rozella","Ruben","Rubie","Ruby","Rubye","Rudolph","Rudy","Rupert","Russ","Russel","Russell","Rusty","Ruth","Ruthe","Ruthie","Ryan","Ryann","Ryder","Rylan","Rylee","Ryleigh","Ryley","Sabina","Sabrina","Sabryna","Sadie","Sadye","Sage","Saige","Sallie","Sally","Salma","Salvador","Salvatore","Sam","Samanta","Samantha","Samara","Samir","Sammie","Sammy","Samson","Sandra","Sandrine","Sandy","Sanford","Santa","Santiago","Santina","Santino","Santos","Sarah","Sarai","Sarina","Sasha","Saul","Savanah","Savanna","Savannah","Savion","Scarlett","Schuyler","Scot","Scottie","Scotty","Seamus","Sean","Sebastian","Sedrick","Selena","Selina","Selmer","Serena","Serenity","Seth","Shad","Shaina","Shakira","Shana","Shane","Shanel","Shanelle","Shania","Shanie","Shaniya","Shanna","Shannon","Shanny","Shanon","Shany","Sharon","Shaun","Shawn","Shawna","Shaylee","Shayna","Shayne","Shea","Sheila","Sheldon","Shemar","Sheridan","Sherman","Sherwood","Shirley","Shyann","Shyanne","Sibyl","Sid","Sidney","Sienna","Sierra","Sigmund","Sigrid","Sigurd","Silas","Sim","Simeon","Simone","Sincere","Sister","Skye","Skyla","Skylar","Sofia","Soledad","Solon","Sonia","Sonny","Sonya","Sophia","Sophie","Spencer","Stacey","Stacy","Stan","Stanford","Stanley","Stanton","Stefan","Stefanie","Stella","Stephan","Stephania","Stephanie","Stephany","Stephen","Stephon","Sterling","Steve","Stevie","Stewart","Stone","Stuart","Summer","Sunny","Susan","Susana","Susanna","Susie","Suzanne","Sven","Syble","Sydnee","Sydney","Sydni","Sydnie","Sylvan","Sylvester","Sylvia","Tabitha","Tad","Talia","Talon","Tamara","Tamia","Tania","Tanner","Tanya","Tara","Taryn","Tate","Tatum","Tatyana","Taurean","Tavares","Taya","Taylor","Teagan","Ted","Telly","Terence","Teresa","Terrance","Terrell","Terrence","Terrill","Terry","Tess","Tessie","Tevin","Thad","Thaddeus","Thalia","Thea","Thelma","Theo","Theodora","Theodore","Theresa","Therese","Theresia","Theron","Thomas","Thora","Thurman","Tia","Tiana","Tianna","Tiara","Tierra","Tiffany","Tillman","Timmothy","Timmy","Timothy","Tina","Tito","Titus","Tobin","Toby","Tod","Tom","Tomas","Tomasa","Tommie","Toney","Toni","Tony","Torey","Torrance","Torrey","Toy","Trace","Tracey","Tracy","Travis","Travon","Tre","Tremaine","Tremayne","Trent","Trenton","Tressa","Tressie","Treva","Trever","Trevion","Trevor","Trey","Trinity","Trisha","Tristian","Tristin","Triston","Troy","Trudie","Trycia","Trystan","Turner","Twila","Tyler","Tyra","Tyree","Tyreek","Tyrel","Tyrell","Tyrese","Tyrique","Tyshawn","Tyson","Ubaldo","Ulices","Ulises","Una","Unique","Urban","Uriah","Uriel","Ursula","Vada","Valentin","Valentina","Valentine","Valerie","Vallie","Van","Vance","Vanessa","Vaughn","Veda","Velda","Vella","Velma","Velva","Vena","Verda","Verdie","Vergie","Verla","Verlie","Vern","Verna","Verner","Vernice","Vernie","Vernon","Verona","Veronica","Vesta","Vicenta","Vicente","Vickie","Vicky","Victor","Victoria","Vida","Vidal","Vilma","Vince","Vincent","Vincenza","Vincenzo","Vinnie","Viola","Violet","Violette","Virgie","Virgil","Virginia","Virginie","Vita","Vito","Viva","Vivian","Viviane","Vivianne","Vivien","Vivienne","Vladimir","Wade","Waino","Waldo","Walker","Wallace","Walter","Walton","Wanda","Ward","Warren","Watson","Wava","Waylon","Wayne","Webster","Weldon","Wellington","Wendell","Wendy","Werner","Westley","Weston","Whitney","Wilber","Wilbert","Wilburn","Wiley","Wilford","Wilfred","Wilfredo","Wilfrid","Wilhelm","Wilhelmine","Will","Willa","Willard","William","Willie","Willis","Willow","Willy","Wilma","Wilmer","Wilson","Wilton","Winfield","Winifred","Winnifred","Winona","Winston","Woodrow","Wyatt","Wyman","Xander","Xavier","Xzavier","Yadira","Yasmeen","Yasmin","Yasmine","Yazmin","Yesenia","Yessenia","Yolanda","Yoshiko","Yvette","Yvonne","Zachariah","Zachary","Zachery","Zack","Zackary","Zackery","Zakary","Zander","Zane","Zaria","Zechariah","Zelda","Zella","Zelma","Zena","Zetta","Zion","Zita","Zoe","Zoey","Zoie","Zoila","Zola","Zora","Zula"],
7i9=(0,m.getLogger)("settings:Settings"),i7=null,i3=null,ne={_storage:iK,get callStatsUserName(){return i7||(i7=this._storage.getItem("callStatsUserName"))||(i7=function(){let t=`${i6(i4)}-${i8(3)}`;return i9.info("generated stats id",t),t}(),this._storage.setItem("callStatsUserName",i7)),i7},init(t){this._storage=t||iK},get machineId(){if(!i3){let t=this._storage.getItem("billingId");i3=t||this._storage.getItem("jitsiMeetId"),t?this._storage.setItem("jitsiMeetId",t):i3||(i3=function(){let t=i1().replaceAll("-","");return i9.info("generated id",t),t}(),this._storage.setItem("jitsiMeetId",i3))}return i3},get sessionId(){return this._storage.getItem("sessionId")||""},set sessionId(e){e?this._storage.setItem("sessionId",e):this._storage.removeItem("sessionId")}};class nt extends iJ.EventEmitter{constructor(){super(),this.addEventListener=this.addListener,this.removeEventListener=this.removeListener}}let ni=function(t){return t.AUDIO_MUTE_CHANGED_EVENT="audioMutedChanged",t.CODEC_CHANGED_EVENT="codecChanged",t.CONFERENCE_START_TIMESTAMP_EVENT="conferenceStartTimestamp",t.DOMINANT_SPEAKER_CHANGED_EVENT="dominantSpeakerChanged",t.ENCODER_CPU_RESTRICTED_EVENT="cpuRestricted",t.GET_USER_MEDIA_ERROR_EVENT="getUserMediaError",t.JVB_ICE_RESTARTED_EVENT="jvbIceRestarted",t.LOG_EVENT="logs",t.REMOTE_SOURCE_INTERRUPTED_EVENT="remoteSourceInterrupted",t.REMOTE_SOURCE_SUSPENDED_EVENT="remoteSourceSuspended",t.REMOTE_VIDEO_DECODING_EVENT="remoteVideoDecoding",t.RTC_STATS_PC_EVENT="rtstats_pc_event",t.RTC_STATS_WC_DISCONNECTED="rtcstats_ws_disconnected",t.SCREENSHARE_MUTE_CHANGED_EVENT="screenshareToggled",t.STROPHE_DISCONNECTED_EVENT="stropheDisconnected",t.STROPHE_ERROR_EVENT="strophe.error",t.STROPHE_RECONNECTED_EVENT="stropheReconnected",t.VIDEO_MUTE_CHANGED_EVENT="videoMutedChanged",t}({});class nn{constructor(t){this.rtcStats=t}isReady(){return this.rtcStats.isTraceAvailable()}storeLogs(t){ns.sendStatsEntry(ni.LOG_EVENT,null,t)}}function nr(t,i,n){return(i=function(t){var i=function(t){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,"string");if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof i?i:i+""}(i))in t?Object.defineProperty(t,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[i]=n,t}let no=(0,m.getLogger)("analytics:RTCStats"),ns=new class{constructor(){nr(this,"_defaultLogCollector",null),nr(this,"_initialized",!1),nr(this,"_startedWithNewConnection",!0),nr(this,"_trace",null),nr(this,"events",new nt)}isTraceAvailable(){return null!==this._trace}startWithConnection(t){var i,n;let r=t.options,o=null!=(i=null==r?void 0:r.name)?i:"",s=r.analytics,a=void 0===s?{}:s,d=a.rtcstatsEndpoint,c=void 0===d?"":d,l=a.rtcstatsEnabled,u=void 0!==l&&l,h=a.rtcstatsPollInterval,p=void 0===h?1e4:h,m=a.rtcstatsSendSdp,g=void 0!==m&&m;if(!u)return;this._initialized||(function(t,i){let n=t.statsEntry,r=i.connectionFilter,o=i.pollInterval,s=i.useLegacy,a=i.sendSdp,d=void 0!==a&&a,c=i.prefixesToWrap,l=void 0===c?[""]:c,u=i.eventCallback,h=0,p=new i_,m=p.isFirefox(),g=p.isChromiumBased(),f=p.isWebKitBased(),_=p.isReactNative();if(m||g||f||_){if(l.forEach(t=>{if(!window[`${t}RTCPeerConnection`])return;let i=window[`${t}RTCPeerConnection`],a=function(t){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d={...t},c=a.optional,l=void 0===c?[]:c,p=!1;try{l.some(t=>!0===t.rtcStatsSFUP2P)&&(p=!0);let d=new i(t,a);if(r&&r(t))return d;let c="PC_"+h++;d.__rtcStatsId=c,t||(t={nullConfig:!0}),((t=JSON.parse(JSON.stringify(t)))&&t.iceServers||[]).forEach(t=>{delete t.credential}),t.browserType=m?"moz":"webkit",n("create",c,t),d.__dtlsTransport=null,n("constraints",c,a),d.addEventListener("icecandidate",t=>{n("onicecandidate",c,t.candidate)}),d.addEventListener("addstream",t=>{n("onaddstream",c,`${t.stream.id} ${t.stream.getTracks().map(t=>`${t.kind}:${t.id}`)}`)}),d.addEventListener("track",t=>{n("ontrack",c,`${t.track.kind}:${t.track.id} ${t.streams.map(t=>`stream:${t.id}`)}`)}),d.addEventListener("removestream",t=>{n("onremovestream",c,`${t.stream.id} ${t.stream.getTracks().map(t=>`${t.kind}:${t.id}`)}`)}),d.addEventListener("signalingstatechange",()=>{n("onsignalingstatechange",c,d.signalingState)}),d.addEventListener("iceconnectionstatechange",()=>{let t=d.iceConnectionState;n("oniceconnectionstatechange",c,t),null==u||u({type:"iceconnectionstatechange",body:{pcId:c,isP2P:p,state:t}})}),d.addEventListener("icegatheringstatechange",()=>{n("onicegatheringstatechange",c,d.iceGatheringState)}),d.addEventListener("connectionstatechange",()=>{let t=d.connectionState;n("onconnectionstatechange",c,d.connectionState),null==u||u({type:"connectionstatechange",body:{pcId:c,isP2P:p,state:t}})}),d.addEventListener("negotiationneeded",()=>{n("onnegotiationneeded",c,void 0)}
7),d.addEventListener("datachannel",t=>{n("ondatachannel",c,[t.channel.id,t.channel.label])});let v={},y=function(){m||f||_||g&&!s?d.getStats(null).then(t=>{let i=function(t){if(!t.entries)return t;let i={};return t.forEach((t,n)=>{i[n]=t}),i}(t),r=JSON.parse(JSON.stringify(i));n("getstats",c,iy(v,i)),v=r}):g&&d.getStats(t=>{let i=function(t){let i={};return t.result().forEach(t=>{let n={id:t.id,timestamp:t.timestamp.getTime(),type:t.type};t.names().forEach(i=>{n[i]=t.stat(i)}),i[n.id]=n}),i}(t),r=JSON.parse(JSON.stringify(i));n("getstats",c,iy(v,i)),v=r})};if(o){let t=window.setInterval(()=>{"closed"!==d.signalingState&&"closed"!==d.iceConnectionState?y():window.clearInterval(t)},o)}return d.addEventListener("connectionstatechange",()=>{["connected","failed"].includes(d.connectionState)&&y()}),d}catch(t){return console.error("RTCStats PeerConnection bind failed: ",t),new i(d,a)}};["createDataChannel","close"].forEach(t=>{let r=i.prototype[t];r&&(i.prototype[t]=function(){try{n(t,this.__rtcStatsId,arguments)}catch(i){console.error(`RTCStats ${t} bind failed: `,i)}return r.apply(this,arguments)})}),["addStream","removeStream"].forEach(t=>{let r=i.prototype[t];r&&(i.prototype[t]=function(){try{let i=arguments[0],r=i.getTracks().map(t=>`${t.kind}:${t.id}`).join(",");n(t,this.__rtcStatsId,`${i.id} ${r}`)}catch(i){console.error(`RTCStats ${t} bind failed: `,i)}return r.apply(this,arguments)})}),["addTrack"].forEach(t=>{let r=i.prototype[t];r&&(i.prototype[t]=function(){try{let i=arguments[0],r=[].slice.call(arguments,1);n(t,this.__rtcStatsId,`${i.kind}:${i.id} ${r.map(t=>`stream:${t.id}`).join(";")||"-"}`)}catch(i){console.error(`RTCStats ${t} bind failed: `,i)}return r.apply(this,arguments)})}),["removeTrack"].forEach(t=>{let r=i.prototype[t];r&&(i.prototype[t]=function(){try{let i=arguments[0].track;n(t,this.__rtcStatsId,i?`${i.kind}:${i.id}`:"null")}catch(i){console.error(`RTCStats ${t} bind failed: `,i)}return r.apply(this,arguments)})}),["addTransceiver"].forEach(t=>{let r=i.prototype[t];r&&(i.prototype[t]=function(){try{let i,r=arguments[0];i="string"==typeof r?r:`${r.kind}:${r.id}`,2==arguments.length&&"object"==typeof arguments[1]&&(i+=` ${JSON.stringify(arguments[1])}`),n(t,this.__rtcStatsId,i)}catch(i){console.error(`RTCStats ${t} bind failed: `,i)}return r.apply(this,arguments)})}),["createOffer","createAnswer"].forEach(t=>{let r=i.prototype[t];r&&(i.prototype[t]=function(){let i,o=this.__rtcStatsId,s=arguments;1==arguments.length&&"object"==typeof arguments[0]?i=arguments[0]:3==arguments.length&&"object"==typeof arguments[2]&&(i=arguments[2]);try{n(t,this.__rtcStatsId,i)}catch(i){console.error(`RTCStats ${t} bind failed: `,i)}return r.apply(this,i?[i]:void 0).then(i=>{try{n(`${t}OnSuccess`,o,d?i:"")}catch(i){console.error(`RTCStats ${t} promise success bind failed: `,i)}if(!(s.length>0&&"function"==typeof s[0]))return i;s[0].apply(null,[i])},i=>{try{n(`${t}OnFailure`,o,i.toString())}catch(i){console.error(`RTCStats ${t} promise failure bind failed: `,i)}if(!(s.length>1&&"function"==typeof s[1]))throw i;s[1].apply(null,[i])})})}),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(t=>{let r=i.prototype[t];r&&(i.prototype[t]=function(){let i=this.__rtcStatsId,o=arguments;try{let i=d?o[0]:"";n(t,this.__rtcStatsId,i)}catch(i){console.error(`RTCStats ${t} bind failed: `,i)}return r.apply(this,[o[0]]).then(()=>{try{n(`${t}OnSuccess`,i,void 0)}catch(i){console.error(`RTCStats ${t} promise success bind failed: `,i)}this.__dtlsTransport||!t.endsWith("Description")||_||this.getSenders().forEach(t=>{!this.__dtlsTransport&&t.transport&&(this.__dtlsTransport=t.transport,t.transport.addEventListener("error",t=>{n("ondtlserror",i,t)}),t.transport.addEventListener("statechange",()=>{n("ondtlsstatechange",i,t.transport.state)}))}),o.length>=2&&"function"==typeof o[1]&&o[1].apply(null,[])},r=>{try{n(`${t}OnFailure`,i,r.toString())}catch(i){console.error(`RTCStats ${t} promise failure bind failed: `,i)}if(!(o.length>=3&&"function"==typeof o[2]))throw r;o[2].apply(null,[r])})})}),i.generateCertificate&&Object.defineProperty(a,"generateCertificate",{get(){return arguments.length?i.generateCertificate.apply(null,arguments):i.generateCertificate}}),window[`${t}RTCPeerConnection`]=a,window[`${t}RTCPeerConnection`].prototype=i.prototype}),l.forEach(t=>{let i=t+(t.length?"GetUserMedia":"getUserMedia");if(!navigator[i])return;let r=navigator[i].bind(navigator);navigator[i]=(function(){try{n("getUserMedia",null,arguments[0])}catch(t){console.error("RTCStats getUserMedia bind failed: ",t)}let t=arguments[1],i=arguments[2];r(arguments[0],i=>{try{n("getUserMediaOnSuccess",null,iE(i))}catch(t){console.error("RTCStats getUserMediaOnSuccess bind failed: ",t)}t&&t(i)},t=>{try{n("getUserMediaOnFailure",null,t.name)}catch(t){console.error("RTCStats getUserMediaOnFailure bind failed: ",t)}i&&i(t)})}).bind(navigator)}),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){let t=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices),i=function(){try{n("navigator.mediaDevices.getUserMedia",null,arguments[0])}catch(t){console.error("RTCStats navigator.mediaDevices.getUserMedia bind failed: ",t)}return t.apply(navigator.mediaDevices,arguments).then(t=>{try{n("navigator.mediaDevices.getUserMediaOnSuccess",null,iE(t))}catch(t){console.error("RTCStats navigator.mediaDevices.getUserMediaOnSuccess bind failed: ",t)}return t},t=>{try{n("navigator.mediaDevices.getUserMediaOnFailure",null,t.name)}catch(t){console.error("RTCStats navigator.mediaDevices.getUserMediaOnFailure bind failed: ",t)}return Promise.reject(t)})};navigator.mediaDevices.getUserMedia=i.bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){let t=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices),i=function(){try{n("navigator.mediaDevices.getDisplayMedia",null,arguments[0])}catch(t){console.error("RTCStats navigator.mediaDevices.getDisplayMedia bind failed: ",t)}return t.apply(navigator.mediaDevices,arguments).then(t=>{try{n("navigator.mediaDevices.getDisplayMediaOnSuccess",null,iE(t))}catch(t){console.error("RTCStats navigator.mediaDevices.getDisplayMediaOnSuccess bind failed: ",t)}return t},t=>{try{n("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name)}catch(t){console.error("RTCStats navigator.mediaDevices.getDisplayMediaOnFailure bind failed: ",t)}return Promise.reject(t)})};navigator.mediaDevices.getDisplayMedia=i.bind(navigator.mediaDevices)}}else iv.warn("RTCStats unsupported browser.")}({statsEntry:this.sendStatsEntry.bind(this)},{eventCallback:t=>this.events.emit(ni.RTC_STATS_PC_EVENT,t),pollInterval:p,sendSdp:g,useLegacy:!1}
7),this._initialized=!0);let f={endpoint:c,isBreakoutRoom:!1,meetingFqn:o};this._connectTrace(f),null==(n=this._defaultLogCollector)||n.flush(),this.sendIdentity({confName:o,...r}),this._startedWithNewConnection=!0}attachToConference(t){var i;let n=t.options,r=void 0===n?{}:n,o=r.config,s=void 0===o?{}:o,a=r.name,d=void 0===a?"":a,c=t._statsCurrentId,l=void 0===c?"":c,u=s.analytics,h=void 0===u?{}:u,p=h.rtcstatsEnabled,m=void 0!==p&&p,g=h.rtcstatsEndpoint,f=void 0===g?"":g,_=null!=(i=null==ne?void 0:ne.callStatsUserName)?i:"";m&&(this._initialized?(t.once(tT.CONFERENCE_JOINED,()=>{var i,n;let r=!!(null==(i=t.getBreakoutRooms())?void 0:i.isBreakoutRoom()),o=t.myUserId(),a=t.getMeetingUniqueId();if(!this._startedWithNewConnection){let t={endpoint:f,isBreakoutRoom:r,meetingFqn:d};this._connectTrace(t),null==(n=this._defaultLogCollector)||n.flush()}let c={...s,confName:d,displayName:l,endpointId:o,isBreakoutRoom:r,localId:_,meetingUniqueId:a};this.sendIdentity(c),this._startedWithNewConnection=!1}),t.once(tT.CONFERENCE_UNIQUE_ID_SET,t=>{this.sendIdentity({meetingUniqueId:t})}),t.once(tT.CONFERENCE_LEFT,()=>{this.reset()}),t.once(tT.CONFERENCE_CREATED_TIMESTAMP,t=>{this.sendStatsEntry(ni.CONFERENCE_START_TIMESTAMP_EVENT,null,t)}),t.once(tT.BEFORE_STATISTICS_DISPOSED,()=>{var t;return null==(t=this._defaultLogCollector)?void 0:t.flush()})):no.error("Calling attachToConference before RTCStats proxy module is initialized."))}_connectTrace(t){let i={...t,onCloseCallback:t=>this.events.emit(ni.RTC_STATS_WC_DISCONNECTED,t),useLegacy:!1},n=i.isBreakoutRoom;this.reset(),this._trace=function(t){let i,n,r,o,s=t.endpoint,a=t.meetingFqn,d=t.onCloseCallback,c=t.useLegacy,l=t.obfuscate,u=void 0===l||l,h=t.pingInterval,p=void 0===h?3e4:h,m=[],g=iw(),f=0,_=0,v=!1,y=1,E=c?"3.1_LEGACY":"3.1_STANDARD",S=t=>{t.push((new Date).getTime()),t.push(y++)},b=t=>{let i=Object.assign({},t);"identity"!==i.type&&i.data&&(i.data=JSON.stringify(i.data)),n&&n.readyState===WebSocket.OPEN&&v&&n.send(JSON.stringify(i))},C=function(t){b(t),m.length<1e3&&t.data&&m.push(t)};return C.isConnected=function(){return!!n&&n.readyState===WebSocket.OPEN},C.isClosed=function(){return!n||n.readyState===WebSocket.CLOSED},C.identity=function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];S(n),i&&(n[2].parentStatsSessionId=i),C({statsSessionId:g,type:"identity",data:n})},C.statsEntry=function(){for(var t=arguments.length,i=Array(t),n=0;n<t;n++)i[n]=arguments[n];let r=i;if(u){switch(i[0]){case"addIceCandidate":case"onicecandidate":case"setLocalDescription":case"setRemoteDescription":r=JSON.parse(JSON.stringify(r))}iF(r)}S(r),C({statsSessionId:g,type:"stats-entry",data:r})},C.keepAlive=function(){C({statsSessionId:g,type:"keepalive"})},C.close=function(){n&&n.close(3001)},C.connect=function(t){let c=arguments.length>1&&void 0!==arguments[1]&&arguments[1];t&&!i&&(i=g),i&&(g=iw(),m.forEach(t=>{t.statsSessionId=g})),n&&n.close(),(n=new WebSocket(`${s}/${a}?statsSessionId=${g}&isReconnect=${c}`,E,{headers:{"User-Agent":navigator.userAgent}})).onclose=function(i){if(r&&clearInterval(r),v&&(v=!1),d({code:i.code,reason:i.reason}),!ik.includes(i.code)&&f<iI){let i=function(t){return 2**t*1e3+Math.floor(1e4*Math.random())}(_),n=f+i<iI?i:iI-f;_++,f+=n,o=setTimeout(()=>C.connect(t,!0),n)}},n.onopen=function(){r=setInterval(C.keepAlive,p)},n.onmessage=async function(t){let i=JSON.parse(t.data),r=i.type,s=i.body;if("sn"===r){let t=s.value,i=s.state;if(m.length){let i=m[0].data[4],r=m[m.length-1].data[4];if(t<i-1&&t>r)return void(n&&n.close(3002));let o=m.findIndex(i=>i.data[4]===t);m=m.slice(o+1)}if("initial"===i){o&&clearTimeout(o),f=0,_=0,v=!0;for(let t=0;t<m.length;t++)b(m[t])}}}},C}(i),this._trace.connect(n)}sendIdentity(t){var i;null==(i=this._trace)||i.identity("identity",null,t)}reset(){var t,i;this._trace&&(null==(t=this._defaultLogCollector)||t.flush()),null==(i=this._trace)||i.close(),this._trace=null}sendStatsEntry(t,i,n){var r;null==(r=this._trace)||r.statsEntry(t,i,n)}getDefaultLogCollector(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e4;return this._defaultLogCollector||(this._defaultLogCollector=new(g()).LogCollector(new nn(this),{maxEntryLength:t}),this._defaultLogCollector.start()),this._defaultLogCollector}},na=function(t){return t.ACTION_JINGLE_RESTART="restart",t.ACTION_JINGLE_SA_TIMEOUT="session-accept.timeout",t.ACTION_JINGLE_SI_RECEIVED="session-initiate.received",t.ACTION_JINGLE_SI_TIMEOUT="session-initiate.timeout",t.ACTION_JINGLE_TERMINATE="terminate",t.ACTION_JVB_ICE_FAILED="jvb.ice.failed",t.ACTION_P2P_DECLINED="decline",t.ACTION_P2P_ESTABLISHED="established",t.ACTION_P2P_FAILED="failed",t.ACTION_P2P_SWITCH_TO_JVB="switch.to.jvb",t.A
7VAILABLE_DEVICE="available.device",t.CONNECTION_DISCONNECTED="connection.disconnected",t.FEEDBACK="feedback",t.ICE_DURATION="ice.duration",t.ICE_ESTABLISHMENT_DURATION_DIFF="ice.establishment.duration.diff",t.ICE_STATE_CHANGED="ice.state.changed",t.NO_BYTES_SENT="track.no-bytes-sent",t.REMOTE_VIDEO_DECODING="remote.video.decoding",t.TRACK_UNMUTED="track.unmuted",t.TYPE_OPERATIONAL="operational",t.TYPE_PAGE="page",t.TYPE_TRACK="track",t.TYPE_UI="ui",t.VIDEO_CODEC_CHANGED="quality.video-codec-changed",t}({}),nd=(t,i)=>({action:t,attributes:i,source:"conference",type:na.TYPE_OPERATIONAL}),nc=(t,i)=>({action:"connection.stage.reached",actionSubject:t,attributes:i,source:"connection.stage.reached",type:na.TYPE_OPERATIONAL}),nl=function(t){return{action:t,attributes:arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},source:"get.user.media",type:na.TYPE_OPERATIONAL}},nu=function(t){return{action:t,attributes:arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},source:"jingle",type:na.TYPE_OPERATIONAL}},nh=function(t){return{action:t,attributes:arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},source:"p2p",type:na.TYPE_OPERATIONAL}},np=t=>({action:"remotely.muted",mediaType:t,type:na.TYPE_OPERATIONAL}),nm=t=>({action:"rtp.stats",attributes:t,type:na.TYPE_OPERATIONAL}),ng=function(t){return t.AUDIO_LEVEL="statistics.audioLevel",t.BEFORE_DISPOSED="statistics.before_disposed",t.BYTE_SENT_STATS="statistics.byte_sent_stats",t.CONNECTION_STATS="statistics.connectionstats",t.ENCODE_TIME_STATS="statistics.encode_time_stats",t.INBOUND_VIDEO_STATS="statistics.inbound_video_stats",t}({}),nf=new class extends iH{_getIOSVersion(){return this.isWebKitBased()?Number.parseInt(this.getOSVersion(),10):-1}_getSafariVersion(){return this.isSafari()?Number.parseInt(this.getVersion(),10):-1}doesVideoMuteByStreamRemove(){return this.isChromiumBased()||this.isWebKitBased()||this.isFirefox()}isAndroidBrowser(){return!this.isReactNative()&&"Android"===this.getOS()}isIosBrowser(){return!this.isReactNative()&&"iOS"===this.getOS()}isMobileDevice(){return this.isAndroidBrowser()||this.isIosBrowser()||this.isReactNative()}isTwa(){return"matchMedia"in window&&window.matchMedia("(display-mode:standalone)").matches}isSupported(){var t,i;return!("u"<typeof RTCPeerConnection||null==(t=navigator)||null==(t=t.mediaDevices)||!t.enumerateDevices||null==(i=navigator)||null==(i=i.mediaDevices)||!i.getUserMedia)&&!(this.isSafari()&&14>this._getSafariVersion())&&(this.isChromiumBased()&&this.isEngineVersionGreaterThan(71)||this.isFirefox()&&this.isVersionGreaterThan(90)||this.isReactNative()||this.isWebKitBased())}isSupportedAndroidBrowser(){return this.isChromiumBased()||this.isFirefox()}isSupportedIOSBrowser(){return!(this.isSafari()||!this.isWebKitBased()||"10.15.7"!==this.getOSVersion())||this._getSafariVersion()>=14||this._getIOSVersion()>=14}isUserInteractionRequiredForUnmute(){return this.isFirefox()&&this.isVersionLessThan(68)}supportsVideoMuteOnConnInterrupted(){return this.isChromiumBased()&&this.isVersionLessThan(144)||this.isReactNative()}supportsBandwidthStatistics(){return!this.isFirefox()&&!this.isWebKitBased()}supportsCodecPreferences(){var t,i;return!!("setCodecPreferences"in(null==(t=window.RTCRtpTransceiver)?void 0:t.prototype)&&void 0!==(null==(i=window.RTCRtpReceiver)?void 0:i.getCapabilities))&&!this.isWebKitBased()&&!this.isFirefox()}supportsCodecSelectionAPI(){return this.isChromiumBased()&&this.isEngineVersionGreaterThan(125)}supportsDDExtHeaders(){return!(this.isFirefox()&&this.isVersionLessThan(136))}supportsDeviceChangeEvent(){var t,i;return void 0!==(null==(t=navigator.mediaDevices)?void 0:t.ondevicechange)&&void 0!==(null==(i=navigator.mediaDevices)?void 0:i.addEventListener)}supportsReceiverStats(){return void 0!==window.RTCRtpReceiver&&Object.keys(RTCRtpReceiver.prototype).indexOf("getSynchronizationSources")>-1}supportsRTTStatistics(){return!this.isFirefox()}supportsEncodingsConfig(){return this.isFirefox()&&this.isVersionGreaterThan(109)}supportsScalabilityModeAPI(){return this.isChromiumBased()&&this.isEngineVersionGreaterThan(112)}supportsTrackBasedStats(){return this.isChromiumBased()&&this.isEngineVersionLessThan(112)}supportsVP9(){return!(this.isWebKitBased()||this.isFirefox()&&this.isVersionLessThan(151))}supportsSVC(){return!this.isFirefox()}usesSdpMungingForSimulcast(){return this.isChromiumBased()||this.isReactNative()||this.isWebKitBased()}usesRidsForSimulcast(){return!1}supportsGetDisplayMedia(){var t;return void 0!==navigator.getDisplayMedia||void 0!==(null==(t=navigator.mediaDevices)?void 0:t.getDisplayMedia)}supportsEncodedTransform(){return!!window.RTCRtpScriptTransform}supportsInsertableStreams(){var t;if(null==(t=window.RTCRtpSender)||!t.prototype.createEncodedStreams)return!1;let i=new ReadableStream;try{return window.postMessage(i,"*",[i]),!0}catch{return!1}}supportsAudioRed(){var t,i;return!!((null==(t=window.RTCRtpSender)||null==(t=t.getCapabilities("audio"))?void 0:t.codecs.some(t=>"audio/red"===t.mimeType))&&(null==(i=window.RTCRtpReceiver)||null==(i=i.getCapabilities("audio"))?void 0:i.codecs.some(t=>"audio/red"===t.mimeType)))}supportsVADDetection(){return this.isChromiumBased()}supportsRTX(){return!(this.isFirefox()&&this.isVersionLessThan(96))}};var n_=n(201),nv=n.n(n_);let ny=g().getLogger("analytics:WatchRTC"),nE=new class{init(t){if(function(t){var i;let n=t.analytics;return null!=(i=null==n?void 0:n.watchRTCEnabled)&&i}(t)){if(nf.isReactNative())return void ny.warn("Cannot initialize WatchRTC in a react native environment!");if(!function(t){let i=t.analytics,n=t.disableThirdPartyRequests;return!(null!=i&&i.disabled||n)}
7(t))return void ny.error("Cannot initialize WatchRTC when analytics or third party requests are disabled.");try{var i;null!=t&&null!=(i=t.watchRTCConfigParams)&&i.rtcApiKey?(nv().init({rtcApiKey:t.watchRTCConfigParams.rtcApiKey}),this.options=t.watchRTCConfigParams,ny.info("WatchRTC initialized.")):ny.error("WatchRTC is enabled but missing API key.")}catch(t){ny.error("Failed to initialize WatchRTC: ",t)}}}start(t,i){try{this.options&&(this.options.rtcRoomId=this.options.rtcRoomId?this.options.rtcRoomId:t,this.options.rtcPeerId=this.options.rtcPeerId?this.options.rtcPeerId:i,nv().setConfig(this.options),ny.info("WatchRTC setConfig."))}catch(t){ny.error("Failed to start WatchRTC session: ",t)}}},nS=(0,m.getLogger)("stats:AnalyticsAdapter"),nb=new class{constructor(){this.reset()}_maybeCacheEvent(t){return!!this.cache&&(this.cache.push(t),this.cache.length>100&&this.cache.splice(0,1),!0)}_sendEvent(t){this._maybeCacheEvent(t)||this.analyticsHandlers.forEach(i=>{try{i.sendEvent(t)}catch(t){nS.warn(`Error sending analytics event: ${t}`)}})}_setUserProperties(){this.analyticsHandlers.forEach(t=>{try{t.setUserProperties(this.permanentProperties)}catch(t){nS.warn(`Error in setUserProperties method of one of the analytics handlers: ${t}`)}})}_verifyRequiredFields(t){if(!t)return!1;t.type||(t.type=na.TYPE_OPERATIONAL);let i=t.type;return i!==na.TYPE_OPERATIONAL&&i!==na.TYPE_PAGE&&i!==na.TYPE_UI&&i!==na.TYPE_TRACK?(nS.error(`Unknown event type: ${i}`),!1):i===na.TYPE_PAGE?!!t.name:(t.action=t.action||t.name||t.actionSubject,t.actionSubject=t.actionSubject||t.name||t.action,t.source=t.source||t.name||t.action||t.actionSubject,t.action&&t.actionSubject&&t.source?!!(i!==na.TYPE_TRACK||(t.objectType=t.objectType||"generic-object-type",t.containerType=t.containerType||"conference","conference"!==t.containerType||t.containerId||(t.containerId=this.conferenceName),t.objectType&&t.objectId&&t.containerType&&t.containerId))||(nS.error("Required field missing (containerId, containerType, objectId or objectType)"),!1):(nS.error("Required field missing (action, actionSubject or source)"),!1))}addPermanentProperties(t){this.permanentProperties={...this.permanentProperties,...t},this._setUserProperties()}dispose(){nS.debug("Disposing of analytics adapter."),this.analyticsHandlers&&this.analyticsHandlers.size>0&&this.analyticsHandlers.forEach(t=>{"function"==typeof t.dispose&&t.dispose()}),this.setAnalyticsHandlers([]),this.disposed=!0}reset(){this.disposed=!1,this.analyticsHandlers=new Set,this.cache=[],this.permanentProperties={},this.conferenceName="",this.addPermanentProperties({browser_name:nf.getName(),user_agent:navigator.userAgent})}sendEvent(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.disposed)return;let n=null;"string"==typeof t?n={action:t,actionSubject:t,attributes:i,source:t,type:na.TYPE_OPERATIONAL}:"object"==typeof t&&(n=t),this._verifyRequiredFields(n)?this._sendEvent(n):nS.error(`Dropping a mis-formatted event: ${JSON.stringify(n)}`)}setAnalyticsHandlers(t){if(this.disposed)return;this.analyticsHandlers=new Set(t),this._setUserProperties();let i=this.cache;this.cache=null,i&&i.forEach(t=>this._sendEvent(t))}setConferenceName(t){this.conferenceName=t,this.addPermanentProperties({conference_name:t})}},nC=(0,m.getLogger)("stats:LocalStatsCollector"),nD=null;class nT{constructor(t,i,n){this.stream=t,this.intervalId=null,this.intervalMilis=i,this.audioLevel=0,this.callback=n,this.source=null,this.analyser=null}start(){nT.isLocalStatsSupported()&&(nD.resume(),this.analyser=nD.createAnalyser(),this.analyser.smoothingTimeConstant=.8,this.analyser.fftSize=2048,this.source=nD.createMediaStreamSource(this.stream),this.source.connect(this.analyser),this.intervalId=setInterval(()=>{let t=new Uint8Array(this.analyser.frequencyBinCount);this.analyser.getByteTimeDomainData(t);let i=function(t){let i=0,n=t.length;for(let r=0;r<n;r++)i<t[r]&&(i=t[r]);return Number.parseFloat(((i-127)/128).toFixed(3))}(t);this.audioLevel=function(t,i){let n=0,r=i-t;return Number.parseFloat((n=r>.2?i-.2:r<-.4?i+.4:t).toFixed(3))}(i,this.audioLevel),this.callback(this.audioLevel)},this.intervalMilis))}stop(){var t,i;this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null),null==(t=this.analyser)||t.disconnect(),this.analyser=null,null==(i=this.source)||i.disconnect(),this.source=null}static init(){nT.connectAudioContext()}static isLocalStatsSupported(){var t;return!!(null==(t=window)?void 0:t.AudioContext)}static async disconnectAudioContext(){nD&&(nC.info("Disconnecting audio context"),await nD.close(),nD=null)}static connectAudioContext(){nT.isLocalStatsSupported()&&(nC.info("Connecting audio context"),(nD=new AudioContext).suspend())}}let nx=function(t){return t.APPLICATION="application",t.AUDIO="audio",t.DESKTOP="desktop",t.VIDEO="video",t}({}),nR=new class{init(t){this._runInLiteMode=!!t.runInLiteMode,this._ssrcRewriting=!!t.ssrcRewritingEnabled}
7isRunInLiteModeEnabled(){return this._runInLiteMode&&nf.supportsInsertableStreams()}isSsrcRewritingSupported(){return this._ssrcRewriting}};function nA(t){let i=t;return t>=Number.MAX_SAFE_INTEGER&&(i=0),i+1}function nw(t){return t.length>0?t.reduce((t,i)=>t+i)/t.length:0}function nI(t){return Array.from(t).filter(t=>t>=0)}function nk(t,i){return nO(t)&&nO(i)?t-i:0}function nO(t){return Number.isFinite(Number.parseInt(t,10))}function nN(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return nP(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nP(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 8In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function nP(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}let nL=(0,m.getLogger)("stats:RTPStatsCollector");function nM(t,i){return t>0&&i>0?Math.round(t/i*100):0}class nF{constructor(){this.loss={},this.bitrate={download:0,upload:0},this.resolution={},this.framerate=0,this.codec=""}setLoss(t){this.loss=t||{}}setResolution(t){this.resolution=t||{}}addBitrate(t){this.bitrate.download+=t.download,this.bitrate.upload+=t.upload}resetBitrate(){this.bitrate.download=0,this.bitrate.upload=0}setFramerate(t){this.framerate=t||0}setCodec(t){this.codec=t||""}setEncodeStats(t){this.encodeStats=t||{}}setFramesDecoded(t){this.framesDecoded="number"==typeof t?t:void 0}}class nj{constructor(){this.bandwidth={},this.bitrate={},this.packetLoss=null,this.transport=[]}}class nV{constructor(t,i,n,r){this.peerconnection=t,this.currentStatsReport=null,this.previousStatsReport=null,this.audioLevelsIntervalId=null,this.eventEmitter=r,this.conferenceStats=new nj,this.audioLevelsIntervalMilis=i,this.speakerList=[],this.statsIntervalId=null,this.statsIntervalMilis=n,this.ssrc2stats=new Map,this._hadBadInboundSsrcs=!1}setSpeakerList(t){this.speakerList=t}stop(){this.audioLevelsIntervalId&&(clearInterval(this.audioLevelsIntervalId),this.audioLevelsIntervalId=null),this.statsIntervalId&&(clearInterval(this.statsIntervalId),this.statsIntervalId=null)}errorCallback(t){nL.error("Get stats error",t),this.stop()}start(t){t&&nf.supportsReceiverStats()&&(this.audioLevelsIntervalId=setInterval(()=>{let t=this.peerconnection.getAudioLevels(this.speakerList);for(let i in t)if(t.hasOwnProperty(i)){let n=2.5*t[i];this.eventEmitter.emit(ng.AUDIO_LEVEL,this.peerconnection,Number.parseInt(i,10),n,!1)}},this.audioLevelsIntervalMilis));let i=()=>{this.peerconnection.getStats().then(t=>{this.currentStatsReport="function"==typeof(null==t?void 0:t.result)?t.result():t;try{this.processStatsReport()}catch(t){nL.error("Processing of RTP stats failed:",t)}this.previousStatsReport=this.currentStatsReport}).catch(t=>this.errorCallback(t))};i(),this.statsIntervalId=setInterval(i,this.statsIntervalMilis)}_processAndEmitReport(){let t={download:0,upload:0},i={download:0,upload:0},n=0,r=0,o={},s={},a={},d=0,c=0,l=0,u=0,h=new Map,p=new Map;for(let _ of this.ssrc2stats){let v,y;var m,g,f=nN(_,2);let E=f[0],S=f[1],b=S.loss,C=b.isDownloadStream?"download":"upload";t[C]+=b.packetsTotal,i[C]+=b.packetsLost;let D=S.bitrate.download,T=S.bitrate.upload;n+=D,r+=T,S.resetBitrate();let x=this.peerconnection.getTrackBySSRC(E);if(!x)continue;if(b.isDownloadStream&&!x.isLocal()&&!x.isAudioTrack()&&D>0&&0===S.framerate){let t=x.getParticipantId();t&&h.set(E,{bitrateDownload:D,fps:S.framerate,participantId:t})}b.isDownloadStream&&!x.isLocal()&&x.isVideoTrack()&&"number"==typeof S.framesDecoded&&p.set(E,S.framesDecoded),x.isAudioTrack()?(d+=D,c+=T,v=S.codec):(l+=D,u+=T,y=S.codec);let R=x.getParticipantId();if(!R){nR.isSsrcRewritingSupported()||nL.error(`No participant ID returned by ${x}`);continue}let A=null!=(g=a[R])?g:{};A[E]={audio:v,video:y},a[R]=A;let w=S.resolution;if(!x.isVideoTrack()||!nO(null==w?void 0:w.height)||!nO(null==w?void 0:w.width)||-1===w.height||-1===w.width)continue;let I=o[R]||{};if(x.isLocal()&&!nf.supportsTrackBasedStats()&&this.peerconnection.doesTrueSimulcast(x))for(let t of this.peerconnection.getL
8ocalVideoSSRCs(x)){let i=null==(m=this.ssrc2stats.get(t))?void 0:m.resolution;null!=i&&i.height&&null!=i&&i.width&&(w.height=Math.max(w.height,i.height),w.width=Math.max(w.width,i.width))}if(I[E]=w,o[R]=I,S.framerate>0){let t=s[R]||{};t[E]=S.framerate,s[R]=t}}this.conferenceStats.bitrate={download:n,upload:r},this.conferenceStats.bitrate.audio={download:d,upload:c},this.conferenceStats.bitrate.video={download:l,upload:u},this.conferenceStats.packetLoss={download:nM(i.download,t.download),total:nM(i.download+i.upload,t.download+t.upload),upload:nM(i.upload,t.upload)},this.eventEmitter.emit(ng.CONNECTION_STATS,this.peerconnection,{bandwidth:this.conferenceStats.bandwidth,bitrate:this.conferenceStats.bitrate,codec:a,framerate:s,framesDecoded:p,packetLoss:this.conferenceStats.packetLoss,resolution:o,transport:this.conferenceStats.transport}),this.conferenceStats.transport=[],(h.size||this._hadBadInboundSsrcs)&&this.eventEmitter.emit(ng.INBOUND_VIDEO_STATS,this.peerconnection,h),this._hadBadInboundSsrcs=h.size>0}getNonNegativeValue(t){let i=t;return"number"!=typeof i&&(i=Number(i)),nO(i)?Math.max(0,i):0}_calculateBitrate(t,i,n){let r=Math.max(0,this.getNonNegativeValue(t[n])-this.getNonNegativeValue(i[n])),o=t.timestamp-i.timestamp,s=0;return o>0&&(s=Math.round(8*r/o)),s}_calculateFps(t,i,n){let r=t.timestamp-i.timestamp,o=0;return r>0&&t[n]&&(o=(t[n]-i[n])/r*1e3),o}processStatsReport(){let t={},i=new Map;this.currentStatsReport.forEach(n=>{let r=this.previousStatsReport?this.previousStatsReport.get(n.id):null;if("candidate-pair"===n.type&&n.nominated&&"succeeded"===n.state){let t=n.availableIncomingBitrate,i=n.availableOutgoingBitrate;(t||i)&&(this.conferenceStats.bandwidth={download:Math.round(t/1e3),upload:Math.round(i/1e3)});let r=this.currentStatsReport.get(n.remoteCandidateId),o=this.currentStatsReport.get(n.localCandidateId);if(r&&o){let t=`${nf.isChromiumBased()?r.ip:r.address}:${r.port}`,i=`${nf.isChromiumBased()?o.ip:o.address}:${o.port}`,s=r.protocol,a=this.conferenceStats.transport;a.some(n=>n.ip===t&&n.type===s&&n.localip===i)||a.push({ip:t,localCandidateType:o.candidateType,localip:i,networkType:o.networkType,p2p:this.peerconnection.isP2P,remoteCandidateType:r.candidateType,rtt:1e3*n.currentRoundTripTime,type:s})}}else if("inbound-rtp"===n.type||"outbound-rtp"===n.type){let s=this.getNonNegativeValue(n.ssrc);if(!s)return;let a=this.ssrc2stats.get(s);a||(a=new nF,this.ssrc2stats.set(s,a));let d=!0,c="packetsReceived";"outbound-rtp"===n.type&&(d=!1,c="packetsSent");let l,u=n[c];if((!u||u<0)&&(u=0),r){let t=Math.max(0,u-this.getNonNegativeValue(r[c])),i=Math.max(0,this.getNonNegativeValue(n.packetsLost)-this.getNonNegativeValue(r.packetsLost));a.setLoss({isDownloadStream:d,packetsLost:i,packetsTotal:t+i})}if(void 0!==n.frameHeight&&void 0!==n.frameWidth){var o;let t=null==(o=n.active)||o;("inbound-rtp"===n.type||!nf.supportsTrackBasedStats()&&t)&&(l={height:n.frameHeight,width:n.frameWidth})}a.setResolution(l);let h=n.framesPerSecond;!h&&r&&(h=this._calculateFps(n,r,"framesSent")),a.setFramerate(Math.round(h||0)),"inbound-rtp"===n.type&&r&&a.addBitrate({download:this._calculateBitrate(n,r,"bytesReceived"),upload:0}),"inbound-rtp"===n.type&&"number"==typeof n.framesDecoded&&a.setFramesDecoded(n.framesDecoded),"inbound-rtp"!==n.type&&r&&(t[s]=this.getNonNegativeValue(n.bytesSent),a.addBitrate({download:0,upload:this._calculateBitrate(n,r,"bytesSent")}));let p=this.currentStatsReport.get(n.codecId);if(p){let t=p.mimeType.split("/")[1];t&&a.setCodec(t);let o=this.peerconnection.getTrackBySSRC(s);if("outbound-rtp"===n.type&&n.active&&null!=o&&o.isVideoTrack()&&null!=r&&r.totalEncodeTime&&null!=r&&r.framesEncoded&&n.frameHeight&&n.frameWidth){let o={codec:t,encodeTime:1e3*(n.totalEncodeTime-r.totalEncodeTime)/(n.framesEncoded-r.framesEncoded),qualityLimitationReason:n.qualityLimitationReason,resolution:l,timestamp:n.timestamp};i.set(s,o),a.setEncodeStats(i)}}}else if(nf.supportsTrackBasedStats()&&"track"===n.type&&n.kind===nx.VIDEO&&!n.remoteSource){let t={height:n.frameHeight,width:n.frameWidth}
8,i=this.peerconnection.getLocalTracks(nx.VIDEO);if(null==i||!i.length)return;let o=this.peerconnection.getSsrcByTrackId(n.trackIdentifier);if(!o)return;let s=this.ssrc2stats.get(o);s||(s=new nF,this.ssrc2stats.set(o,s)),t.height&&t.width&&s.setResolution(t);let a=n.framesPerSecond;!a&&r&&(a=this._calculateFps(n,r,"framesSent")),s.setFramerate(a)}}),Object.keys(t).length&&this.eventEmitter.emit(ng.BYTE_SENT_STATS,this.peerconnection,t),i.size&&this.eventEmitter.emit(ng.ENCODE_TIME_STATS,this.peerconnection,i),this._processAndEmitReport()}}function nB(t,i,n){return(i=function(t){var i=function(t){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,"string");if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof i?i:i+""}(i))in t?Object.defineProperty(t,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[i]=n,t}let nU=(0,m.getLogger)("stats:statistics");class n${static get instances(){return n$._instances||(n$._instances=new Set),n$._instances}static init(t){n$.audioLevelsEnabled=!t.disableAudioLevels,"number"==typeof t.pcStatsInterval&&(n$.pcStatsInterval=t.pcStatsInterval),"number"==typeof t.audioLevelsInterval&&(n$.audioLevelsInterval=t.audioLevelsInterval),n$.disableThirdPartyRequests=t.disableThirdPartyRequests,nT.init(),nE.init(t)}static startLocalStats(t,i){if(nf.isIosBrowser()&&t.addEventListener(is.NO_DATA_FROM_SOURCE,async t=>{if(t){for(let t of n$.localStats)t.stop();await nT.disconnectAudioContext()}else for(let t of(nT.connectAudioContext(),n$.localStats))t.start()}),!n$.audioLevelsEnabled)return;t.addEventListener(is.LOCAL_TRACK_STOPPED,()=>{n$.stopLocalStats(t)});let n=new nT(t.getOriginalStream(),n$.audioLevelsInterval,i);this.localStats.push(n),n.start()}static stopLocalStats(t){if(!n$.audioLevelsEnabled)return;let i=t.getOriginalStream();for(let t=0;t<n$.localStats.length;t++)if(n$.localStats[t].stream===i){n$.localStats.splice(t,1)[0].stop();break}}static sendAnalyticsAndLog(t){let i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t?(i="object"==typeof t?t:{name:t,properties:n},nU.debug(JSON.stringify(i)),this.analytics.sendEvent(t,n)):nU.warn("No event or event name given.")}static sendAnalytics(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.analytics.sendEvent(t,i)}constructor(t,i){this.rtpStatsMap=new Map,this.eventEmitter=new nt,this.conference=t,this.xmpp=null==t?void 0:t.xmpp,this.options=i||{},n$.instances.add(this),ns.attachToConference(this.conference),nf.isReactNative()||nE.start(this.options.roomName,this.options.userName)}startRemoteStats(t){this.stopRemoteStats(t);try{let i=new nV(t,n$.audioLevelsInterval,n$.pcStatsInterval,this.eventEmitter);i.start(n$.audioLevelsEnabled),this.rtpStatsMap.set(String(t.id),i)}catch(t){nU.error(`Failed to start collecting remote statistics: ${t}`)}}addAudioLevelListener(t){n$.audioLevelsEnabled&&this.eventEmitter.on(ng.AUDIO_LEVEL,t)}removeAudioLevelListener(t){n$.audioLevelsEnabled&&this.eventEmitter.removeListener(ng.AUDIO_LEVEL,t)}addBeforeDisposedListener(t){this.eventEmitter.on(ng.BEFORE_DISPOSED,t)}removeBeforeDisposedListener(t){this.eventEmitter.removeListener(ng.BEFORE_DISPOSED,t)}addConnectionStatsListener(t){this.eventEmitter.on(ng.CONNECTION_STATS,t)}removeConnectionStatsListener(t){this.eventEmitter.removeListener(ng.CONNECTION_STATS,t)}addEncodeTimeStatsListener(t){this.eventEmitter.on(ng.ENCODE_TIME_STATS,t)}removeEncodeTimeStatsListener(t){this.eventEmitter.removeListener(ng.ENCODE_TIME_STATS,t)}addInboundVideoStatsListener(t){this.eventEmitter.on(ng.INBOUND_VIDEO_STATS,t)}removeInboundVideoStatsListener(t){this.eventEmitter.removeListener(ng.INBOUND_VIDEO_STATS,t)}addByteSentStatsListener(t){this.eventEmitter.on(ng.BYTE_SENT_STATS,t)}removeByteSentStatsListener(t){this.eventEmitter.removeListener(ng.BYTE_SENT_STATS,t)}setSpeakerList(t){for(let i of Array.from(this.rtpStatsMap.values()))i.peerconnection.isP2P||i.setSpeakerList(t)}dispose(){try{for(let t of(this.eventEmitter.emit(ng.BEFORE_DISPOSED),this.rtpStatsMap.keys()))this._stopRemoteStats(t);this.eventEmitter&&this.eventEmitter.removeAllListeners()}finally{n$.instances.delete(this)}}_stopRemoteStats(t){let i=this.rtpStatsMap.get(t);i&&(i.stop(),this.rtpStatsMap.delete(t))}stopRemoteStats(t){this._stopRemoteStats(String(t.id))}sendFeedback(t,i){return n$.analytics.sendEvent(na.FEEDBACK,{comment:i,rating:t}),Promise.resolve()}}nB(n$,"audioLevelsEnabled",!1),nB(n$,"audioLevelsInterval",200),nB(n$,"pcStatsInterval",1e4),nB(n$,"disableThirdPartyRequests",!1),nB(n$,"analytics",nb),nB(n$,"localStats",[]),nB(n$,"LOCAL_JID","local");class nH{constructor(t,i){if(!t||!i||"function"!=typeof t.addListener||"function"!=typeof i.emit)throw Error("Invalid arguments passed to EventEmitterForwarder");this.src=t,this.dest=i,this.listeners=new Map}forward(){for(var t=arguments.length,i=Array(t),n=0;n<t;n++)i[n]=arguments[n];let r=i[0];i[0]=this.dest;let o=Function.prototype.bind.apply(this.dest.emit,i);this.src.addListener(r,o),this.listeners.set(r,o)}removeListeners(){for(var t=arguments.length,i=Array(t),n=0;n<t;n++)i[n]=arguments[n];
8i.forEach(t=>{let i=this.listeners.get(t);i&&(this.src.removeListener(t,i),this.listeners.delete(t))})}}let nJ=function(t){return t.AUDIO_OUTPUT_DEVICE_CHANGED="rtc.audio_output_device_changed",t.AUDIO_SSRCS_REMAPPED="rtc.audio_ssrcs_remapped",t.BRIDGE_BWE_STATS_RECEIVED="rtc.bridge_bwe_stats_received",t.DATA_CHANNEL_CLOSED="rtc.data_channel_closed",t.DATA_CHANNEL_OPEN="rtc.data_channel_open",t.DEVICE_LIST_AVAILABLE="rtc.device_list_available",t.DEVICE_LIST_CHANGED="rtc.device_list_changed",t.DEVICE_LIST_WILL_CHANGE="rtc.device_list_will_change",t.DOMINANT_SPEAKER_CHANGED="rtc.dominant_speaker_changed",t.ENDPOINT_CONN_STATUS_CHANGED="rtc.endpoint_conn_status_changed",t.ENDPOINT_MESSAGE_RECEIVED="rtc.endpoint_message_received",t.ENDPOINT_STATS_RECEIVED="rtc.endpoint_stats_received",t.FORWARDED_SOURCES_CHANGED="rtc.forwarded_sources_changed",t.LASTN_VALUE_CHANGED="rtc.lastn_value_changed",t.LOCAL_TRACK_MAX_ENABLED_RESOLUTION_CHANGED="rtc.local_track_max_enabled_resolution_changed",t.LOCAL_UFRAG_CHANGED="rtc.local_ufrag_changed",t.PERMISSIONS_CHANGED="rtc.permissions_changed",t.REMOTE_TRACK_ADDED="rtc.remote_track_added",t.REMOTE_TRACK_MUTE="rtc.remote_track_mute",t.REMOTE_TRACK_REMOVED="rtc.remote_track_removed",t.REMOTE_TRACK_UNMUTE="rtc.remote_track_unmute",t.REMOTE_UFRAG_CHANGED="rtc.remote_ufrag_changed",t.SENDER_VIDEO_CONSTRAINTS_CHANGED="rtc.sender_video_constraints_changed",t.VIDEO_SSRCS_REMAPPED="rtc.video_ssrcs_remapped",t}({}),nq=function(t){return t.IDENTITY_UPDATED="authentication.identity_updated",t}({}
8),nG=function(t){return t.ADD_ICE_CANDIDATE_FAILED="xmpp.add_ice_candidate_failed",t.AUDIO_MUTED_BY_FOCUS="xmpp.audio_muted_by_focus",t.AUTHENTICATION_REQUIRED="xmpp.authentication_required",t.AV_MODERATION_APPROVED="xmpp.av_moderation.approved",t.AV_MODERATION_CHANGED="xmpp.av_moderation.changed",t.AV_MODERATION_PARTICIPANT_APPROVED="xmpp.av_moderation.participant.approved",t.AV_MODERATION_PARTICIPANT_REJECTED="xmpp.av_moderation.participant.rejected",t.AV_MODERATION_RECEIVED="xmpp.av_moderation.received",t.AV_MODERATION_REJECTED="xmpp.av_moderation.rejected",t.BREAKOUT_ROOMS_EVENT="xmpp.breakout-rooms.event",t.BREAKOUT_ROOMS_MOVE_TO_ROOM="xmpp.breakout-rooms.move-to-room",t.BREAKOUT_ROOMS_UPDATED="xmpp.breakout-rooms.updated",t.BRIDGE_DOWN="xmpp.bridge_down",t.CALL_ACCEPTED="xmpp.callaccepted.jingle",t.CALL_ENDED="xmpp.callended.jingle",t.CALL_INCOMING="xmpp.callincoming.jingle",t.CHAT_ERROR_RECEIVED="xmpp.chat_error_received",t.CONFERENCE_PROPERTIES_CHANGED="xmpp.conference_properties_changed",t.CONFERENCE_TIMESTAMP_RECEIVED="xmpp.conference_timestamp_received",t.CONNECTION_ESTABLISHED="xmpp.connection.connected",t.CONNECTION_FAILED="xmpp.connection.failed",t.CONNECTION_ICE_FAILED="xmpp.connection.ice.failed",t.CONNECTION_INTERRUPTED="xmpp.connection.interrupted",t.CONNECTION_RESTORED="xmpp.connection.restored",t.CONNECTION_STATUS_CHANGED="xmpp.connection.status.changed",t.DESKTOP_MUTED_BY_FOCUS="xmpp.desktop_muted_by_focus",t.DISPLAY_NAME_CHANGED="xmpp.display_name_changed",t.DISPLAY_NAME_REQUIRED="xmpp.display_name_required",t.EMUC_ROOM_ADDED="xmpp.emuc_room_added",t.EMUC_ROOM_REMOVED="xmpp.emuc_room_removed",t.ETHERPAD="xmpp.etherpad",t.FILE_SHARING_EVENT="xmpp.files-sharing.event",t.FILE_SHARING_FILES_RECEIVED="xmpp.files-sharing.list",t.FILE_SHARING_FILE_ADDED="xmpp.files-sharing.add",t.FILE_SHARING_FILE_REMOVED="xmpp.files-sharing.remove",t.FOCUS_DISCONNECTED="xmpp.focus_disconnected",t.FOCUS_LEFT="xmpp.focus_left",t.GRACEFUL_SHUTDOWN="xmpp.graceful_shutdown",t.ICE_CONNECTION_STATE_CHANGED="xmpp.ice_connection_state_changed",t.INVITE_MESSAGE_RECEIVED="xmpp.invite_message_received",t.JSON_MESSAGE_RECEIVED="xmmp.json_message_received",t.KICKED="xmpp.kicked",t.LOCAL_ROLE_CHANGED="xmpp.localrole_changed",t.MEETING_ID_SET="xmpp.meeting_id_set",t.MESSAGE_RECEIVED="xmpp.message_received",t.MUC_DENIED_ACCESS="xmpp.muc_denied access",t.MUC_DESTROYED="xmpp.muc_destroyed",t.MUC_JOINED="xmpp.muc_joined",t.MUC_JOIN_IN_PROGRESS="xmpp.muc_join_in_progress",t.MUC_LEFT="xmpp.muc_left",t.MUC_LOBBY_MEMBER_JOINED="xmpp.muc_lobby_member_joined",t.MUC_LOBBY_MEMBER_LEFT="xmpp.muc_lobby_member_left",t.MUC_LOBBY_MEMBER_UPDATED="xmpp.muc_lobby_member_updated",t.MUC_LOCK_CHANGED="xmpp.muc_lock_changed",t.MUC_MEMBERS_ONLY_CHANGED="xmpp.muc_members_only_changed",t.MUC_MEMBER_BOT_TYPE_CHANGED="xmpp.muc_member_bot_type_changed",t.MUC_MEMBER_JOINED="xmpp.muc_member_joined",t.MUC_MEMBER_LEFT="xmpp.muc_member_left",t.MUC_ROLE_CHANGED="xmpp.muc_role_changed",t.MUC_VISITORS_SUPPORTED_CHANGED="xmpp.muc_visitors_supported_changed",t.P2P_TERMINATION_REQUIRED="xmpp.p2p.termination_required",t.PARTICIPANT_AUDIO_MUTED="xmpp.audio_muted",t.PARTICIPANT_FEATURES_CHANGED="xmpp.participant_features_changed",t.PARTICIPANT_VIDEO_MUTED="xmpp.video_muted",t.PARTICIPANT_VIDEO_TYPE_CHANGED="xmpp.video_type",t.PASSWORD_REQUIRED="xmpp.password_required",t.PERMISSIONS_RECEIVED="xmpp.permissions_received",t.PHONE_NUMBER_CHANGED="conference.phoneNumberChanged",t.POLLS_ANSWER_EVENT="xmpp.polls.answer.event",t.POLLS_EVENT="xmpp.polls.event",t.POLLS_RECEIVE_EVENT="xmpp.polls.received.event",t.PRESENCE_RECEIVED="xmpp.presence_received",t.PRESENCE_STATUS="xmpp.presence_status",t.PRIVATE_MESSAGE_RECEIVED="xmpp.private_message_received",t.PROMPT_FOR_LOGIN="xmpp.prompt_for_login",t.REACTION_RECEIVED="xmpp.reaction_received",t.READY_TO_JOIN="xmpp.ready_to_join",t.RECORDER_STATE_CHANGED="xmpp.recorderStateChanged",t.REMOTE_STATS="xmpp.remote_stats",t.RESERVATION_ERROR="xmpp.room_reservation_error",t.ROOM_CONNECT_ERROR="xmpp.room_connect_error",t.ROOM_CONNECT_MEMBERS_ONLY_ERROR="xmpp.room_connect_error.members_only",t.ROOM_CONNECT_NOT_ALLOWED_ER
8ROR="xmpp.room_connect_error.not_allowed",t.ROOM_DISCO_INFO_FAILED="xmpp.room_disco_info_failed",t.ROOM_DISCO_INFO_UPDATED="xmpp.room_disco_info_updated",t.ROOM_JOIN_ERROR="xmpp.room_join_error",t.ROOM_MAX_USERS_ERROR="xmpp.room_max_users_error",t.ROOM_METADATA_EVENT="xmpp.room-metadata.event",t.ROOM_METADATA_UPDATED="xmpp.room-metadata.updated",t.SENDING_CHAT_MESSAGE="xmpp.sending_chat_message",t.SENDING_PRIVATE_CHAT_MESSAGE="xmpp.sending_private_chat_message",t.SESSION_ACCEPT="xmpp.session_accept",t.SESSION_ACCEPT_ERROR="xmpp.session_accept_error",t.SESSION_ACCEPT_TIMEOUT="xmpp.session_accept_timeout",t.SETTINGS_ERROR_RECEIVED="xmpp.settings_error_received",t.SILENT_STATUS_CHANGED="xmpp.silent_status_changed",t.SOURCE_ADD="xmpp.source_add",t.SOURCE_ADD_ERROR="xmpp.source_add_error",t.SOURCE_REMOVE="xmpp.source_remove",t.SOURCE_REMOVE_ERROR="xmpp.source_remove_error",t.SPEAKER_STATS_RECEIVED="xmpp.speaker_stats_received",t.SUBJECT_CHANGED="xmpp.subject_changed",t.SUSPEND_DETECTED="xmpp.suspend_detected",t.TRANSCRIPTION_STATUS_CHANGED="xmpp.transcription_status_changed",t.TRANSPORT_INFO="xmpp.transportinfo.jingle",t.VIDEO_MUTED_BY_FOCUS="xmpp.video_muted_by_focus",t.VIDEO_SIP_GW_AVAILABILITY_CHANGED="xmpp.videoSIPGWAvailabilityChanged",t.VIDEO_SIP_GW_SESSION_STATE_CHANGED="xmpp.videoSIPGWSessionStateChanged",t.VISITORS_MESSAGE="xmpp.visitors_message",t.VISITORS_REJECTION="xmpp.visitors_rejection",t}({}),nz=(0,m.getLogger)("core:JitsiConferenceEventManager");class nK{constructor(t){this.conference=t,this.xmppListeners={}}_addConferenceXMPPListener(t,i){this.xmppListeners[t]=i,this.conference.xmpp.addListener(t,i)}setupChatRoomListeners(){let t=this.conference,i=t.room;this.chatRoomForwarder=new nH(i,this.conference.eventEmitter),i.addListener(nG.PARTICIPANT_FEATURES_CHANGED,(i,n)=>{let r=t.getParticipantById(io.Strophe.getResourceFromJid(i));r&&(r.setFeatures(n),t.eventEmitter.emit(tT.PARTCIPANT_FEATURES_CHANGED,r))}),this.chatRoomForwarder.forward(nG.PERMISSIONS_RECEIVED,tT.PERMISSIONS_RECEIVED),i.addListener(nG.AUDIO_MUTED_BY_FOCUS,i=>{n$.sendAnalytics(np(nx.AUDIO)),t.mutedByFocusActor=i,t.rtc.setAudioMute().then(()=>{t.isMutedByFocus=!0,t.mutedByFocusActor=null}).catch(i=>{t.mutedByFocusActor=null,nz.warn("Error while audio muting due to focus request",i)})}),i.addListener(nG.VIDEO_MUTED_BY_FOCUS,i=>{n$.sendAnalytics(np(nx.VIDEO)),t.mutedVideoByFocusActor=i,t.rtc.setVideoMute().then(()=>{t.isVideoMutedByFocus=!0,t.mutedVideoByFocusActor=null}).catch(i=>{t.mutedVideoByFocusActor=null,nz.warn("Error while video muting due to focus request",i)})}),i.addListener(nG.DESKTOP_MUTED_BY_FOCUS,i=>{n$.sendAnalytics(np(nx.DESKTOP)),t.mutedDesktopByFocusActor=i,t.rtc.setDesktopMute().then(()=>{t.isDesktopMutedByFocus=!0,t.mutedDesktopByFocusActor=null}).catch(i=>{t.mutedDesktopByFocusActor=null,nz.warn("Error while desktop video muting due to focus request",i)})}),this.chatRoomForwarder.forward(nG.SUBJECT_CHANGED,tT.SUBJECT_CHANGED),this.chatRoomForwarder.forward(nG.MUC_JOINED,tT.CONFERENCE_JOINED),this.chatRoomForwarder.forward(nG.MUC_JOIN_IN_PROGRESS,tT.CONFERENCE_JOIN_IN_PROGRESS),this.chatRoomForwarder.forward(nG.MEETING_ID_SET,tT.CONFERENCE_UNIQUE_ID_SET),this.chatRoomForwarder.forward(nG.CONFERENCE_TIMESTAMP_RECEIVED,tT.CONFERENCE_CREATED_TIMESTAMP),i.addListener(nG.MUC_JOINED,()=>{this.conference._onMucJoined(),this.conference.isJvbConnectionInterrupted=!1,Object.keys(i.connectionTimes).forEach(t=>{let n=nc(`conference_${t}`,{value:i.connectionTimes[t]});n$.sendAnalytics(n)}),Object.keys(i.xmpp.connectionTimes).forEach(t=>{let n=nc(`xmpp_${t}`,{value:i.xmpp.connectionTimes[t]});n$.sendAnalytics(n)})}),i.addListener(is.TRACK_OWNER_SET,(i,n,r,o)=>{i.getParticipantId()===n&&i.getSourceName()===r||(t.eventEmitter.emit(tT.TRACK_REMOVED,i),i.setOwner(n),i.setSourceName(r),i._setVideoType(o),n&&t.eventEmitter.emit(tT.TRACK_ADDED,i))}),this.chatRoomForwarder.forward(nG.ROOM_JOIN_ERROR,tT.CONFERENCE_FAILED,tl),this.chatRoomForwarder.forward(nG.DISPLAY_NAME_REQUIRED,tT.CONFERENCE_FAILED,tm),this.chatRoomForwarder.forward(nG.ROOM_CONNECT_ERROR,tT.CONFERENCE_FAILED,tl),this.chatRoomForwarder.forward(nG.ROOM_CONNECT_NOT_ALLOWED_ER
8ROR,tT.CONFERENCE_FAILED,tu),this.chatRoomForwarder.forward(nG.ROOM_CONNECT_MEMBERS_ONLY_ERROR,tT.CONFERENCE_FAILED,th),this.chatRoomForwarder.forward(nG.ROOM_MAX_USERS_ERROR,tT.CONFERENCE_FAILED,tc),this.chatRoomForwarder.forward(nG.PASSWORD_REQUIRED,tT.CONFERENCE_FAILED,tb),this.chatRoomForwarder.forward(nG.AUTHENTICATION_REQUIRED,tT.CONFERENCE_FAILED,to),this.chatRoomForwarder.forward(nG.BRIDGE_DOWN,tT.CONFERENCE_FAILED,tD),i.addListener(nG.BRIDGE_DOWN,()=>n$.sendAnalytics({action:"bridge.down",actionSubject:"bridge.down",type:na.TYPE_OPERATIONAL})),this.chatRoomForwarder.forward(nG.RESERVATION_ERROR,tT.CONFERENCE_FAILED,tC),this.chatRoomForwarder.forward(nG.GRACEFUL_SHUTDOWN,tT.CONFERENCE_FAILED,t_),this.chatRoomForwarder.forward(nG.MUC_DESTROYED,tT.CONFERENCE_FAILED,td),this.chatRoomForwarder.forward(nG.CHAT_ERROR_RECEIVED,tT.CONFERENCE_ERROR,ts),this.chatRoomForwarder.forward(nG.SETTINGS_ERROR_RECEIVED,tT.CONFERENCE_ERROR,ta),this.chatRoomForwarder.forward(nG.FOCUS_DISCONNECTED,tT.CONFERENCE_FAILED,tg),i.addListener(nG.FOCUS_LEFT,()=>{n$.sendAnalytics({action:"focus.left",actionSubject:"focus.left",type:na.TYPE_OPERATIONAL}),t.eventEmitter.emit(tT.CONFERENCE_FAILED,tf)}),i.addListener(nG.SESSION_ACCEPT_TIMEOUT,t=>{n$.sendAnalyticsAndLog(nu(na.ACTION_JINGLE_SA_TIMEOUT,{p2p:t.isP2P}))}),i.addListener(nG.RECORDER_STATE_CHANGED,(i,n)=>{if(n){let r=io.Strophe.getResourceFromJid(n),o=t.getParticipantById(r)||r;"off"===i.getStatus()?i.setTerminator(o):"on"===i.getStatus()&&i.setInitiator(o)}t.eventEmitter.emit(tT.RECORDER_STATE_CHANGED,i)}),this.chatRoomForwarder.forward(nG.TRANSCRIPTION_STATUS_CHANGED,tT.TRANSCRIPTION_STATUS_CHANGED),this.chatRoomForwarder.forward(nG.VIDEO_SIP_GW_AVAILABILITY_CHANGED,tT.VIDEO_SIP_GW_AVAILABILITY_CHANGED),this.chatRoomForwarder.forward(nG.VIDEO_SIP_GW_SESSION_STATE_CHANGED,tT.VIDEO_SIP_GW_SESSION_STATE_CHANGED),this.chatRoomForwarder.forward(nG.PHONE_NUMBER_CHANGED,tT.PHONE_NUMBER_CHANGED),i.setParticipantPropertyListener((i,n,r)=>{let o=t.getParticipantById(i);o&&o.setProperty(n,r)}),i.addListener(nG.KICKED,t.onMemberKicked.bind(t)),i.addListener(nG.SUSPEND_DETECTED,t.onSuspendDetected.bind(t)),this.chatRoomForwarder.forward(nG.MUC_LOCK_CHANGED,tT.LOCK_STATE_CHANGED),this.chatRoomForwarder.forward(nG.MUC_MEMBERS_ONLY_CHANGED,tT.MEMBERS_ONLY_CHANGED),this.chatRoomForwarder.forward(nG.MUC_VISITORS_SUPPORTED_CHANGED,tT.VISITORS_SUPPORTED_CHANGED),i.addListener(nG.MUC_MEMBER_JOINED,t.onMemberJoined.bind(t)),this.chatRoomForwarder.forward(nG.MUC_LOBBY_MEMBER_JOINED,tT.LOBBY_USER_JOINED),this.chatRoomForwarder.forward(nG.MUC_LOBBY_MEMBER_UPDATED,tT.LOBBY_USER_UPDATED),this.chatRoomForwarder.forward(nG.MUC_LOBBY_MEMBER_LEFT,tT.LOBBY_USER_LEFT),i.addListener(nG.MUC_MEMBER_BOT_TYPE_CHANGED,t._onMemberBotTypeChanged.bind(t)),i.addListener(nG.MUC_MEMBER_LEFT,t.onMemberLeft.bind(t)),this.chatRoomForwarder.forward(nG.MUC_LEFT,tT.CONFERENCE_LEFT),this.chatRoomForwarder.forward(nG.MUC_DENIED_ACCESS,tT.CONFERENCE_FAILED,tp),i.addListener(nG.DISPLAY_NAME_CHANGED,t.onDisplayNameChanged.bind(t)),i.addListener(nG.SILENT_STATUS_CHANGED,t.onSilentStatusChanged.bind(t)),i.addListener(nG.LOCAL_ROLE_CHANGED,i=>{t.onLocalRoleChanged(i)}),i.addListener(nG.MUC_ROLE_CHANGED,t.onUserRoleChanged.bind(t)),i.addListener(nq.IDENTITY_UPDATED,(i,n)=>{t.authEnabled=i,t.authIdentity=n,t.eventEmitter.emit(tT.AUTH_STATUS_CHANGED,i,n)}),i.addListener(nG.MESSAGE_RECEIVED,(i,n,r,o,s,a,d,c,l)=>{let u=io.Strophe.getResourceFromJid(i);t.eventEmitter.emit(tT.MESSAGE_RECEIVED,u,n,o,s,a,d,c,l)}),this.chatRoomForwarder.forward(nG.POLLS_RECEIVE_EVENT,tT.POLL_RECEIVED),this.chatRoomForwarder.forward(nG.POLLS_ANSWER_EVENT,tT.POLL_ANSWER_RECEIVED),i.addListener(nG.REACTION_RECEIVED,(i,n,r)=>{let o=io.Strophe.getResourceFromJid(i);t.eventEmitter.emit(tT.REACTION_RECEIVED,o,n,r)}),i.addListener(nG.PRIVATE_MESSAGE_RECEIVED,(i,n,r,o,s,a,d,c,l)=>{let u=d?c:io.Strophe.getResourceFromJid(i);t.eventEmitter.emit(tT.PRIVATE_MESSAGE_RECEIVED,u,n,o,s,a,d,l)}),i.addListener(nG.PRESENCE_STATUS,(i,n)=>{let r=io.Strophe.getResourceFromJid(i),o=t.getParticipantById(r);o&&o._status!==n&&(o._status=n,t.eventEmitter.emit(tT.USER_STATUS_CHANGED,r,n))}),i.addListener(nG.JSON_MESSAGE_RECEIVED,(i,n)=>{let r=io.Strophe.getResourceFromJid(i),o=t.getParticipantById(r);o?t.eventEmitter.emit(tT.ENDPOINT_MESSAGE_RECEIVED,o,n):t.eventEmitter.emit(tT.NON_PARTICIPANT_MESSAGE_RECEIVED,r,n)}),this.chatRoomForwarder.forward(nG.BREAKOUT_ROOMS_MOVE_TO_ROOM,tT.BREAKOUT_ROOMS_MOVE_TO_ROOM),this.chatRoomForwarder.forward(nG.BREAKOUT_ROOMS_UPDATED,tT.BREAKOUT_ROOMS_UPDATED),this.chatRoomForwarder.forward(nG.FILE_SHARING_FILES_RECEIVED,tT.FILE_SHARING_FILES_RECEIVED),this.chatRoomForwarder.forward(nG.FILE_SHARING_FILE_ADDED,tT.FILE_SHARING_FILE_ADDED),this.chatRoomForwarder.forward(nG.FILE_SHARING_FILE_REMOVED,tT.FILE_SHARING_FILE_REMOVED),i.addListener(nG.ROOM_METADATA_UPDATED,n=>{if(n.startMuted){let i=n.startMuted.audio||!1,r=n.startMuted.video||!1;i&&(t.isMutedByFocus=!0),r&&(t.isVideoMutedByFocus=!0),t._updateStartMutedPol
8icy(i,r)}n.recording&&void 0!==n.recording.isTranscribingEnabled&&t._setTranscribingEnabled(!!n.recording.isTranscribingEnabled),n.services&&i.xmpp.connection.jingle.onReceiveStunAndTurnCredentials(n),t.eventEmitter.emit(tT.METADATA_UPDATED,n)})}setupRTCListeners(){let t=this.conference,i=t.rtc;i.addListener(nJ.REMOTE_TRACK_ADDED,t.onRemoteTrackAdded.bind(t)),i.addListener(nJ.REMOTE_TRACK_REMOVED,t.onRemoteTrackRemoved.bind(t)),i.addListener(nJ.DOMINANT_SPEAKER_CHANGED,(i,n,r,o)=>{if((t.lastDominantSpeaker!==i||t.dominantSpeakerIsSilent!==r)&&t.room&&(t.dominantSpeakerIsSilent=r,t.eventEmitter.emit(tT.DOMINANT_SPEAKER_CHANGED,i,n,r,o),t.statistics&&t.myUserId()===i&&(t.xmpp.sendDominantSpeakerEvent(t.room.roomjid,r),ns.sendStatsEntry(ni.DOMINANT_SPEAKER_CHANGED_EVENT)),t.lastDominantSpeaker!==i&&(t.lastDominantSpeaker=i,null!=n&&n.length))){let r=n.slice(0);t.myUserId()!==i&&r.splice(0,0,i),r.length>5&&r.splice(5,r.length-5),t.statistics&&t.statistics.setSpeakerList(r)}}),i.addListener(nJ.DATA_CHANNEL_OPEN,()=>{let i=window.performance.now(),n="data.channel.opened";nz.info(`(TIME) ${n}: `,i),t.room.connectionTimes[n]=i,n$.sendAnalytics(nc(n,{value:i})),t.eventEmitter.emit(tT.DATA_CHANNEL_OPENED)}),i.addListener(nJ.DATA_CHANNEL_CLOSED,i=>{t.eventEmitter.emit(tT.DATA_CHANNEL_CLOSED,i)}),i.addListener(nJ.VIDEO_SSRCS_REMAPPED,t=>{this.conference.jvbJingleSession.processSourceMap(t,nx.VIDEO)}),i.addListener(nJ.AUDIO_SSRCS_REMAPPED,t=>{this.conference.jvbJingleSession.processSourceMap(t,nx.AUDIO)}),i.addListener(nJ.BRIDGE_BWE_STATS_RECEIVED,i=>{t.eventEmitter.emit(tT.BRIDGE_BWE_STATS_RECEIVED,i)}),i.addListener(nJ.ENDPOINT_MESSAGE_RECEIVED,(i,n)=>{if("transcriber"===i)return void t.eventEmitter.emit(tT.NON_PARTICIPANT_MESSAGE_RECEIVED,i,n);let r=t.getParticipantById(i);r?t.eventEmitter.emit(tT.ENDPOINT_MESSAGE_RECEIVED,r,n):nz.warn(`Ignored ENDPOINT_MESSAGE_RECEIVED for not existing participant: ${i}`,n)}),i.addListener(nJ.ENDPOINT_STATS_RECEIVED,(i,n)=>{let r=t.getParticipantById(i);r?t.eventEmitter.emit(tT.ENDPOINT_STATS_RECEIVED,r,n):nz.warn(`Ignoring ENDPOINT_STATS_RECEIVED for a non-existant participant: ${i}`)})}setupStatisticsListeners(){let t=this.conference;t.statistics&&(t.statistics.addAudioLevelListener((i,n,r,o)=>{t.rtc.setAudioLevel(i,n,r,o)}),t.statistics.addBeforeDisposedListener(()=>{t.eventEmitter.emit(tT.BEFORE_STATISTICS_DISPOSED)}),t.statistics.addEncodeTimeStatsListener((i,n)=>{t.eventEmitter.emit(tT.ENCODE_TIME_STATS_RECEIVED,i,n)}),t.statistics.addInboundVideoStatsListener((i,n)=>{t.eventEmitter.emit(tT.INBOUND_VIDEO_STATS_RECEIVED,i,n)}),t.options.config.startSilent||t.statistics.addByteSentStatsListener((i,n)=>{t.getLocalTracks(nx.AUDIO).forEach(t=>{let r=i.getLocalSSRC(t);r&&n.hasOwnProperty(r)&&t.onByteSentStatsReceived(i,n[r])})}))}setupXMPPListeners(){let t=this.conference;this._addConferenceXMPPListener(nG.CALL_INCOMING,t.onIncomingCall.bind(t)),this._addConferenceXMPPListener(nG.CALL_ACCEPTED,t.onCallAccepted.bind(t)),this._addConferenceXMPPListener(nG.TRANSPORT_INFO,t.onTransportInfo.bind(t)),this._addConferenceXMPPListener(nG.CALL_ENDED,t.onCallEnded.bind(t)),this._addConferenceXMPPListener(nG.AV_MODERATION_CHANGED,(i,n,r)=>{let o=t.getParticipants().find(t=>t.getJid()===r);t.eventEmitter.emit(tT.AV_MODERATION_CHANGED,{actor:o,enabled:i,mediaType:n})}),this._addConferenceXMPPListener(nG.AV_MODERATION_PARTICIPANT_APPROVED,(i,n)=>{let r=t.getParticipantById(io.Strophe.getResourceFromJid(n));r&&t.eventEmitter.emit(tT.AV_MODERATION_PARTICIPANT_APPROVED,{mediaType:i,participant:r})}),this._addConferenceXMPPListener(nG.AV_MODERATION_PARTICIPANT_REJECTED,(i,n)=>{let r=t.getParticipantById(io.Strophe.getResourceFromJid(n));r&&t.eventEmitter.emit(tT.AV_MODERATION_PARTICIPANT_REJECTED,{mediaType:i,participant:r})}),this._addConferenceXMPPListener(nG.AV_MODERATION_APPROVED,i=>t.eventEmitter.emit(tT.AV_MODERATION_APPROVED,{mediaType:i})),this._addConferenceXMPPListener(nG.AV_MODERATION_REJECTED,i=>{t.eventEmitter.emit(tT.AV_MODERATION_REJECTED,{mediaType:i})}),this._addConferenceXMPPListener(nG.VISITORS_MESSAGE,i=>
8t.eventEmitter.emit(tT.VISITORS_MESSAGE,i)),this._addConferenceXMPPListener(nG.VISITORS_REJECTION,()=>t.eventEmitter.emit(tT.VISITORS_REJECTION))}removeXMPPListeners(){let t=this.conference;Object.keys(this.xmppListeners).forEach(i=>{t.xmpp.removeListener(i,this.xmppListeners[i])}),this.xmppListeners={}}}let nW=function(t){return t.CONNECTION_DISCONNECTED="connection.connectionDisconnected",t.CONNECTION_ESTABLISHED="connection.connectionEstablished",t.CONNECTION_FAILED="connection.connectionFailed",t.CONNECTION_REDIRECTED="connection.redirected",t.CONNECTION_TOKEN_EXPIRED="connection.token_expired",t.DISPLAY_NAME_REQUIRED="connection.display_name_required",t.PROPERTIES_UPDATED="connection.propertiesUpdated",t}({}),nY=nW.CONNECTION_DISCONNECTED,nQ=nW.CONNECTION_ESTABLISHED,nX=nW.CONNECTION_FAILED,nZ=nW.CONNECTION_REDIRECTED,n0=nW.CONNECTION_TOKEN_EXPIRED,n1=nW.DISPLAY_NAME_REQUIRED,n2=nW.PROPERTIES_UPDATED;class n6{constructor(t,i,n,r,o,s,a,d,c,l){this._jid=t,this._id=io.Strophe.getResourceFromJid(t),this._conference=i,this._displayName=n,this._supportsDTMF=!1,this._tracks=[],this._role="none",this._status=s,this._hidden=r,this._statsID=o,this._properties=new Map,this._identity=a,this._isReplacing=d,this._isReplaced=c,this._isSilent=l,this._features=new Set,this._sources=new Map}_isMediaTypeMuted(t){return this.getTracks().reduce((i,n)=>i&&(n.getType()!==t||n.isMuted()),!0)}_setSources(t,i,n,r){var o;let s=this._sources.get(t),a={muted:i,videoType:r};null!=(o=s)&&o.size?s.set(n,a):((s=new Map).set(n,a),this._sources.set(t,s))}getBotType(){return this._botType}getConference(){return this._conference}getConnectionJid(){return this._connectionJid}getDisplayName(){return this._displayName}getFeatures(){return Promise.resolve(this._features)}getId(){return this._id}getIdentity(){return this._identity}getJid(){return this._jid}getProperty(t){return this._properties.get(t)}getRole(){return this._role}getSources(){return this._sources}getStatsID(){return this._statsID}getStatus(){return this._status}getTracks(){return this._tracks.slice()}getTracksByMediaType(t){return this.getTracks().filter(i=>i.getType()===t)}hasFeature(t){return this._features.has(t)}isAudioMuted(){return this._isMediaTypeMuted(nx.AUDIO)}isHidden(){return this._hidden}isHiddenFromRecorder(){var t;return"true"===(null==(t=this._identity)||null==(t=t.user)?void 0:t["hidden-from-recorder"])}isModerator(){return"moderator"===this._role}isReplaced(){return this._isReplaced}isReplacing(){return this._isReplacing}isSilent(){return this._isSilent}isVideoMuted(){return this._isMediaTypeMuted(nx.VIDEO)}setBotType(t){this._botType=t}setConnectionJid(t){this._connectionJid=t}setFeatures(t){this._features=t||new Set}setIsReplaced(t){this._isReplaced=t}setIsReplacing(t){this._isReplacing=t}setIsSilent(t){this._isSilent=t}setProperty(t,i){let n=this._properties.get(t);i!==n&&(this._properties.set(t,i),this._conference.eventEmitter.emit(tT.PARTICIPANT_PROPERTY_CHANGED,this,t,n,i)
8)}setRole(t){this._role=t}supportsDTMF(){return this._supportsDTMF}}let n8=function(t){return t.CONSTRAINT_FAILED="gum.constraint_failed",t.ELECTRON_DESKTOP_PICKER_ERROR="gum.electron_desktop_picker_error",t.ELECTRON_DESKTOP_PICKER_NOT_FOUND="gum.electron_desktop_picker_not_found",t.GENERAL="gum.general",t.NOT_FOUND="gum.not_found",t.PERMISSION_DENIED="gum.permission_denied",t.SCREENSHARING_GENERIC_ERROR="gum.screensharing_generic_error",t.SCREENSHARING_NOT_SUPPORTED_ERROR="gdm.screen_sharing_not_supported",t.SCREENSHARING_USER_CANCELED="gum.screensharing_user_canceled",t.TIMEOUT="gum.timeout",t.TRACK_IS_DISPOSED="track.track_is_disposed",t.TRACK_NO_STREAM_FOUND="track.no_stream_found",t.TRACK_NO_STREAM_TRACKS_FOUND="track.no_stream_tracks_found",t.TRACK_TOO_MANY_TRACKS_IN_STREAM="track.too_many_tracks_in_stream",t.UNSUPPORTED_RESOLUTION="gum.unsupported_resolution",t}({}),n5=n8.CONSTRAINT_FAILED,n4=n8.ELECTRON_DESKTOP_PICKER_ERROR,n9=n8.ELECTRON_DESKTOP_PICKER_NOT_FOUND,n7=n8.GENERAL,n3=n8.NOT_FOUND,re=n8.PERMISSION_DENIED,rt=n8.SCREENSHARING_GENERIC_ERROR,ri=n8.SCREENSHARING_NOT_SUPPORTED_ERROR,rn=n8.SCREENSHARING_USER_CANCELED,rr=n8.TIMEOUT,ro=n8.TRACK_IS_DISPOSED,rs=n8.TRACK_NO_STREAM_FOUND,ra=n8.UNSUPPORTED_RESOLUTION,rd=n8.TRACK_TOO_MANY_TRACKS_IN_STREAM,rc=n8.TRACK_NO_STREAM_TRACKS_FOUND,rl={[ra]:"Video resolution is not supported: ",[rn]:"User canceled screen sharing prompt",[rt]:"Unknown error from screensharing",[ri]:"Not supported",[n4]:"Unkown error from desktop picker",[n9]:"Failed to detect desktop picker",[n7]:"Generic getUserMedia error",[re]:"User denied permission to use device(s): ",[n3]:"Requested device(s) was/were not found: ",[n5]:"Constraint could not be satisfied: ",[rr]:"Could not start media source. Timeout occurred!",[ro]:"Track has been already disposed",[rs]:"Track does not have an associated Media Stream"};class ru extends Error{constructor(t,i,n){if(super(),"object"==typeof t&&void 0!==t.name)switch(this.gum={constraints:i,devices:n&&Array.isArray(n)?n.slice(0):void 0,error:t},t.name){case"NotAllowedError":case"PermissionDeniedError":case"SecurityError":this.name=re,this.message=rl[this.name]+(this.gum.devices||[]).join(", ");break;case"DevicesNotFoundError":case"NotFoundError":this.name=n3,this.message=rl[this.name]+(this.gum.devices||[]).join(", ");break;case"ConstraintNotSatisfiedError":case"OverconstrainedError":{const r=t.constraintName||t.constraint;"string"!=typeof i&&null!=i&&i.video&&(!n||n.indexOf("video")>-1)&&("minWidth"===r||"maxWidth"===r||"minHeight"===r||"maxHeight"===r||"width"===r||"height"===r||"deviceId"===r)?(this.name=ra,this.message=rl[this.name]+this.getResolutionFromFailedConstraint(r,i)):(this.name=n5,this.message=rl[this.name]+t.constraintName);break}default:this.name=n7,this.message=t.message||rl[this.name]}else{if("string"!=typeof t)throw Error("Invalid arguments");rl[t]?(this.name=t,this.message="string"==typeof i?i:rl[t]):this.message=t}this.stack="string"==typeof t?Error().stack:t.stack}getResolutionFromFailedConstraint(t,i){var n;if(null!=i&&null!=(n=i.video)&&n.mandatory)switch(t){case"width":return i.video.mandatory.minWidth;case"height":return i.video.mandatory.minHeight;default:return i.video.mandatory[t]||""}return""}}let rh=Object.getOwnPropertySymbols?function(t){for(var i=[];t;)tP(i,tV(t)),t=ey(t);return i}:tM,rp=function(t){return tL(t,e8,rh)};var rm=Object.prototype.hasOwnProperty,rg=/\w*$/,rf=D?D.prototype:void 0,r_=rf?rf.valueOf:void 0;let rv=function(t,i,n){var r,o,s,a=t.constructor;switch(i){case"[object ArrayBuffer]":return ep(t);case"[object Boolean]":case"[object Date]":return new a(+t);case"[object DataView]":return function(t,i){var n=i?ep(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return em(t,n);case"[object Map]":case"[object Set]":return new a;case"[object Number]":case"[object String]":return new a(t);case"[object RegExp]":return(s=new(o=t).constructor(o.source,rg.exec(o))).lastIndex=o.lastIndex,s;case"[object Symbol]":return r=t,r_?Object(r_.call(r)):{}}
8};var ry=eq&&eq.isMap;let rE=ry?eU(ry):function(t){return eC(t)&&"[object Map]"==t4(t)};var rS=eq&&eq.isSet;let rb=rS?eU(rS):function(t){return eC(t)&&"[object Set]"==t4(t)};var rC="[object Arguments]",rD="[object Function]",rT="[object Object]",rx={};rx[rC]=rx["[object Array]"]=rx["[object ArrayBuffer]"]=rx["[object DataView]"]=rx["[object Boolean]"]=rx["[object Date]"]=rx["[object Float32Array]"]=rx["[object Float64Array]"]=rx["[object Int8Array]"]=rx["[object Int16Array]"]=rx["[object Int32Array]"]=rx["[object Map]"]=rx["[object Number]"]=rx[rT]=rx["[object RegExp]"]=rx["[object Set]"]=rx["[object String]"]=rx["[object Symbol]"]=rx["[object Uint8Array]"]=rx["[object Uint8ClampedArray]"]=rx["[object Uint16Array]"]=rx["[object Uint32Array]"]=!0,rx["[object Error]"]=rx[rD]=rx["[object WeakMap]"]=!1;let rR=function t(i,n,r,o,s,a){var d,c=1&n,l=2&n,u=4&n;if(r&&(d=s?r(i,o,s,a):r(i)),void 0!==d)return d;if(!O(i))return i;var h=ew(i);if(h){if(d=function(t){var i=t.length,n=new t.constructor(i);return i&&"string"==typeof t[0]&&rm.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(i),!c)return eg(i,d)}else{var p=t4(i),m=p==rD||"[object GeneratorFunction]"==p;if(eL(i))return eu(i,c);if(p==rT||p==rC||m&&!s){if(d=l||m?{}:eb(i),!c)return l?function(t,i){return eQ(t,rh(t),i)}(i,function(t,i){return t&&eQ(i,e8(i),t)}(d,i)):function(t,i){return eQ(t,tV(t),i)}(i,function(t,i){return t&&eQ(i,t$(i),t)}(d,i))}else{if(!rx[p])return s?i:{};d=rv(i,p,c)}}a||(a=new ei);var g=a.get(i);if(g)return g;a.set(i,d),rb(i)?i.forEach(function(o){d.add(t(o,n,r,o,i,a))}):rE(i)&&i.forEach(function(o,s){d.set(s,t(o,n,r,s,i,a))});var f=h?void 0:(u?l?rp:tH:l?e8:t$)(i);return function(t,i){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==i(t[n],n,t););}(f||i,function(o,s){f&&(o=i[s=o]),eY(d,s,t(o,n,r,s,i,a))}),d},rA=function(t){return rR(t,5)},rw=function(t){return t.CAMERA="camera",t.DESKTOP="desktop",t.DESKTOP_HIGH_FPS="desktop_high_fps",t}({});class rI{constructor(){this.eventEmitter=new nt}on(t,i){this.eventEmitter.on(t,i)}off(t,i){this.eventEmitter.removeListener(t,i)}once(t,i){this.eventEmitter.once(t,i)}addEventListener(t,i){this.on(t,i)}removeEventListener(t,i){this.off(t,i)}addCancellableListener(t,i){return this.addListener(t,i),()=>this.removeListener(t,i)}addListener(t,i){return this.eventEmitter.addListener(t,i)}removeListener(t,i){return this.eventEmitter.removeListener(t,i)}emit(t){for(var i=arguments.length,n=Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];this.eventEmitter.emit(t,...n)}removeAllListeners(){this.eventEmitter.removeAllListeners()}listenerCount(t){return this.eventEmitter.listenerCount(t)}}function rk(t,i,n){return(i=function(t){var i=function(t){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,"string");if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof i?i:i+""}(i))in t?Object.defineProperty(t,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[i]=n,t}let rO=(0,m.getLogger)("rtc:BridgeChannel");class rN{constructor(t,i,n,r){if(rk(this,"_channel",null),rk(this,"_connected",void 0),rk(this,"_mode",null),rk(this,"_areRetriesEnabled",!1),rk(this,"_closedFromClient",!1),!t&&!i)throw TypeError("At least peerconnection or wsUrl must be given");if(t&&i)throw TypeError("Just one of peerconnection or wsUrl must be given");if(t?rO.debug("constructor() with peerconnection"):rO.debug(`constructor() with wsUrl:"${i}"`),this._channel=null,this._conference=r,this._connected=void 0,this._eventEmitter=n,this._mode=null,this._areRetriesEnabled=!1,this._closedFromClient=!1,t){const i=t.createDataChannel("JVB data channel",{protocol:"http://jitsi.org/protocols/colibri"});this._handleChannel(i),this._mode="datachannel"}else i&&(this._areRetriesEnabled=!0,this._wsUrl=i,this._initWebSocket())}_initWebSocket(){let t=new WebSocket(this._wsUrl);this._handleChannel(t),this._mode="websocket"}_startConnectionRetries(){let t=1,i=()=>{this._channel&&("connecting"===this._channel.readyState||this._channel.readyState===WebSocket.CONNECTING)?this._retryTimeout=setTimeout(i,1e3*t):this.isOpen()||(this._initWebSocket(),t=Math.min(2*t,60),this._retryTimeout=setTimeout(i,1e3*t))};this._retryTimeout=setTimeout(i,1e3*t)}_stopConnectionRetries(){this._retryTimeout&&(clearTimeout(this._retryTimeout),this._retryTimeout=void 0)}_retryWebSocketConnection(t){if(!this._areRetriesEnabled)return;let i=t.code,n=t.reason;n$.sendAnalytics({action:"bridge-channel.error",attributes:{code:i.toString(),reason:n},type:na.TYPE_OPERATIONAL}),this._areRetriesEnabled=!1,this._eventEmitter.once(nJ.DATA_CHANNEL_OPEN,()=>{this._stopConnectionRetries(),this._areRetriesEnabled=!0}),this._startConnectionRetries()}get mode(){return this._mode}close(){if(this._closedFromClient=!0,this._stopConnectionRetries(),this._areRetriesEnabled=!1,this._channel){try{this._channel.close()}catch(t){}this._channel=null}}isOpen(){return this._channel&&("open"===this._channel.readyState||this._channel.readyState===WebSocket.OPEN)}sendEndpointStatsMessage(t){this._send({colibriClass:"EndpointStats",...t})}sendMessage(t,i){this._send({colibriClass:"EndpointMessage",msgPayload:i,to:t})}sendSetLastNMessage(t){rO.debug(`Sending lastN=${t}.`),this._send({colibriClass:"LastNChangedEvent",lastN:t})}sendReceiverAudioSubscriptionMessage(t){var i;rO.info(`Sending ReceiverAudioSubscription with mode: ${t.mode} and `+(null!=(i=t.list)&&i.length?"list="+t.list.join(", "):"no list")),this._send({colibriClass:"ReceiverAudioSubscription",...t})}sendReceiverVideoConstraintsMessage(t){rO.info(`Sending ReceiverVideoConstraints with ${JSON.stringify(t)}`),this._send({colibriClass:"ReceiverVideoConstraints",...t})}sendSourceVideoTypeMessage(t,i){rO.info(`Sending SourceVideoTypeMessage with video type ${t}: ${i}`),this._send({colibriClass:"SourceVideoTypeMessage",sourceName:t,videoType:i})}_handleChannel(t){let i=this._eventEmitter;t.onopen=()=>{rO.info(`${this._mode} channel opened`),this._connected=!0,i.emit(nJ.DATA_CHANNEL_OPEN)},t.onerror=t=>{"websocket"!==this._mode&&rO.error(`Channel error: ${t.message}`)},t.onmessage=t=>{let n,r=t.data;try{n=iX(r)}catch(t){return void rO.error("Failed to parse channel message as JSON: ",r,t)}let o=n.colibriClass;switch(o){case"ConnectionStats":{let t=n.estimatedDownlinkBandwidth;rO.debug(`Connection stats: bwe=${t} bps`),i.emit(nJ.BRIDGE_BWE_STATS_RECEIVED,t);break}case"DominantSpeakerEndpointChangeEvent":{let t=n,r=t.dominantSpeakerEndpoint,o=t.previousSpeakers,s=void 0===o?[]:o,a=t.silence,d=t.timestamp;rO.debug(`Dominant speaker: ${r}, previous speakers: ${s}`),i.emit(nJ.DOMINANT_SPEAKER_CHANGED,r,s,a,d);break}case"EndpointConnectivityStatusChangeEvent":{let t=n.endpoint,r="true"===n.active;rO.info(`Endpoint connection status changed: ${t} active=${r}`),i.emit(nJ.ENDPOINT_CONN_STATUS_CHANGED,t,r);break}case"EndpointMessage":if(!n.msgPayload||"object"!=typeof n.msgPayload){rO.warn(`Dropping malformed EndpointMessage from ${n.from}: missing msgPayload`);break}i.emit(nJ.ENDPOINT_MESSAGE_RECEIVED,n.from,n.msgPayload);break;case"EndpointStats":i.emit(nJ.ENDPOINT_STATS_RECEIVED,n.from,n);break;case"ForwardedSources":{let t=n.forwardedSources;rO.info(`New forwarded sources: ${t}`),i.emit(nJ.FORWARDED_SOURCES_CHANGED,t);break}case"SenderSourceConstraints":"string"==typeof n.sourceName&&"number"==typeof n.maxHeight?(rO.info(`SenderSourceConstraints: ${n.sourceName} - ${n.maxHeight}`),i.emit(nJ.SENDER_VIDEO_CONSTRAINTS_CHANGED,n)):rO.error(`Invalid SenderSourceConstraints: ${n.sourceName} - ${n.maxHeight}`);break;case"ServerHello":rO.info(`Received ServerHello, version=${n.version}.`);break;case"VideoSourcesMap":rO.info(`Received VideoSourcesMap: ${JSON.stringify(n.mappedSources)}`),i.emit(nJ.VIDEO_SSRCS_REMAPPED,n);break;case"AudioSourcesMap":rO.info(`Received AudioSourcesMap: ${JSON.stringify(n.mappedSources)}`),i.emit(nJ.AUDIO_SSRCS_REMAPPED,n);break;default:rO.debug("Channel JSON-formatted message: ",n),i.emit(`rtc.datachannel.${o}`,n)}},t.onclose=n=>{if(rO.debug("Channel closed by "+(this._closedFromClient?"client":"server")),t===this._channel){if(!(this._closedFromClient||1001===n.code&&1===this._conference.getParticipantCount())){let t=n.code,r=n.reason;rO.error(`Channel closed: ${t} ${r}`),"websocket"===this._mode&&(this._retryWebSocketConnection(n),!1!==this._connected&&i.emit(nJ.DATA_CHANNEL_CLOSED,{co
vendor: 7,400 bytes, line 8
8de:t,reason:r}))}this._connected=!1,this._channel=null}else rO.debug("Skip close handler, channel instance is not equal to stored one")},this._channel=t}_send(t){let i=this._channel;if(!this.isOpen())throw rO.error("Bridge Channel send: no opened channel."),Error("No opened channel");i.send(JSON.stringify(t))}}let rP=function(t){return t.ENVIRONMENT="environment",t.USER="user",t}({}),rL=!0,rM=!0;function rF(t,i,n){let r=t.match(i);return r&&r.length>=n&&parseInt(r[n],10)}function rj(t,i,n){if(!t.RTCPeerConnection)return;let r=t.RTCPeerConnection.prototype,o=r.addEventListener;r.addEventListener=function(t,r){if(t!==i)return o.apply(this,arguments);let s=t=>{let i=n(t);i&&(r.handleEvent?r.handleEvent(i):r(i))};return this._eventMap=this._eventMap||{},this._eventMap[i]||(this._eventMap[i]=new Map),this._eventMap[i].set(r,s),o.apply(this,[t,s])};let s=r.removeEventListener;r.removeEventListener=function(t,n){if(t!==i||!this._eventMap||!this._eventMap[i]||!this._eventMap[i].has(n))return s.apply(this,arguments);let r=this._eventMap[i].get(n);return this._eventMap[i].delete(n),0===this._eventMap[i].size&&delete this._eventMap[i],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[t,r])},Object.defineProperty(r,"on"+i,{get(){return this["_on"+i]},set(t){this["_on"+i]&&(this.removeEventListener(i,this["_on"+i]),delete this["_on"+i]),t&&this.addEventListener(i,this["_on"+i]=t)},enumerable:!0,configurable:!0})}function rV(t){return"boolean"!=typeof t?Error("Argument type: "+typeof t+". Please use a boolean."):(rL=t,t?"adapter.js logging disabled":"adapter.js logging enabled")}function rB(t){return"boolean"!=typeof t?Error("Argument type: "+typeof t+". Please use a boolean."):(rM=!t,"adapter.js deprecation warnings "+(t?"disabled":"enabled"))}function rU(){"object"==typeof window&&!rL&&"u">typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}function r$(t,i){rM&&console.warn(t+" is deprecated, please use "+i+" instead.")}function rH(t){return"[object Object]"===Object.prototype.toString.call(t)}function rJ(t){return rH(t)?Object.keys(t).reduce(function(i,n){let r=rH(t[n]),o=r?rJ(t[n]):t[n],s=r&&!Object.keys(o).length;return void 0===o||s?i:Object.assign(i,{[n]:o})},{}):t}function rq(t,i,n){i&&!n.has(i.id)&&(n.set(i.id,i),Object.keys(i).forEach(r=>{r.endsWith("Id")?rq(t,t.get(i[r]),n):r.endsWith("Ids")&&i[r].forEach(i=>{rq(t,t.get(i),n)})}))}function rG(t,i,n){let r=n?"outbound-rtp":"inbound-rtp",o=new Map;if(null===i)return o;let s=[];return t.forEach(t=>{"track"===t.type&&t.trackIdentifier===i.id&&s.push(t)}),s.forEach(i=>{t.forEach(n=>{n.type===r&&n.trackId===i.id&&rq(t,n,o)})}),o}let rz=rU;function rK(t,i){let n=t&&t.navigator;if(!n.mediaDevices)return;let r=function(t){if("object"!=typeof t||t.mandatory||t.optional)return t;let i={};return Object.keys(t).forEach(n=>{if("require"===n||"advanced"===n||"mediaSource"===n)return;let r="object"==typeof t[n]?t[n]:{ideal:t[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);let o=function(t,i){return t?t+i.charAt(0).toUpperCase()+i.slice(1):"deviceId"===i?"sourceId":i};if(void 0!==r.ideal){i.optional=i.optional||[];let t={};"number"==typeof r.ideal?(t[o("min",n)]=r.ideal,i.optional.push(t),(t={})[o("max",n)]=r.ideal):t[o("",n)]=r.ideal,i.optional.push(t)}void 0!==r.exact&&"number"!=typeof r.exact?(i.mandatory=i.mandatory||{},i.mandatory[o("",n)]=r.exact):["min","max"].forEach(t=>{void 0!==r[t]&&(i.mandatory=i.mandatory||{},i.mandatory[o(t,n)]=r[t])})}),t.advanced&&(i.optional=(i.optional||[]).concat(t.advanced)),i},o=function(t,o){if(i.version>=61)return o(t);if((t=JSON.parse(JSON.stringify(t)))&&"object"==typeof t.audio){let i=function(t,i,n){i in t&&!(n in t)&&(t[n]=t[i],delete t[i])};i((t=JSON.parse(JSON.stringify(t))).audio,"autoGainControl","googAutoGainControl"),i(t.audio,"noiseSuppression","googNoiseSuppression"),t.audio=r(t.audio)}if(t&&"object"==typeof t.video){let s=t.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});let a=i.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!n.mediaDevices.getSupportedConstraints||!n.mediaDevices.getSupportedConstraints().facingMode||a)){let i;if(delete t.video.facingMode,"environment"===s.exact||"environment"===s.ideal?i=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(i=["front"]),i)return n.mediaDevices.enumerateDevices().then(n=>{let a=(n=n.filter(t=>"videoinput"===t.kind)).find(t=>i.some(i=>t.label.toLowerCase().includes(i)));return!a&&n.length&&i.includes("back")&&(a=n[n.length-1]),a&&(t.video.deviceId=s.exact?{exact:a.deviceId}:{ideal:a.deviceId}),t.video=r(t.video),rz("chrome: "+JSON.stringify(t)),o(t)})}t.video=r(t.video)}return rz("chrome: "+JSON.stringify(t)),o(t)},s=function(t){return i.version>=64?t:{name:({PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"})[t.name]||t.name,message:t.message,constraint:t.constraint||t.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(n.getUserMedia=(function(t,i,r){o(t,t=>{n.webkitGetUserMedia(t,i,t=>{r&&r(s(t))})})}).bind(n),n.mediaDevices.getUserMedia){let t=n.mediaDevices.getUserMedia.bind(n.mediaDevices);n.mediaDevices.getUserMedia=function(i){return o(i,i=>t(i).then(t=>{if(i.audio&&!t.getAudioTracks().length||i.video&&!t.getVideoTracks().length)throw t.getTracks().forEach(t=>{t.stop()}),new DOMException("","NotFoundError");return t},t=>Promise.reject(s(t))))}}}function rW(t,i){t.navigator.mediaDevices&&"getDisplayMedia"in t.navigator.mediaDevices||t.navigator.mediaDevices&&("function"==typeof i?t.navigator.mediaDevices.getDisplayMedia=function(n){return i(n).then(i=>{let r=n.video&&n.video.width,o=n.video&&n.video.height,s=n.video&&n.video.frameRate;return n.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:i,maxFrameRate:s||3}},r&&(n.video.mandatory.maxWidth=r),o&&(n.video.mandatory.maxHeight=o),t.navigator.mediaDevices.getUserMedia(n)})}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}function rY(t){t.MediaStream=t.MediaStream||t.webkitMediaStream}function rQ(t){if("object"!=typeof t||!t.RTCPeerConnection||"ontrack"in t.RTCPeerConnection.prototype)rj(t,"track",t=>(t.transceiver||Object.defineProperty(t,"transceiver",{value:{receiver:t.receiver}}),t));else{Object.defineProperty(t.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(t){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=t)},enumerable:!0,configurable:!0});let i=t.RTCPeerConnection.prototype.setRemoteDescription;t.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=i=>{i.stream.addEventListener("addtrack",n=>{let r;r=t.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(t=>t.track&&t.track.id===n.track.id):{track:n.track};let o=new Event("track");o.track=n.track,o.receiver=r,o.transceiver={receiver:r},o.streams=[i.stream],this.dispatchEvent(o)}
8),i.stream.getTracks().forEach(n=>{let r;r=t.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(t=>t.track&&t.track.id===n.id):{track:n};let o=new Event("track");o.track=n,o.receiver=r,o.transceiver={receiver:r},o.streams=[i.stream],this.dispatchEvent(o)})},this.addEventListener("addstream",this._ontrackpoly)),i.apply(this,arguments)}}}function rX(t){if("object"==typeof t&&t.RTCPeerConnection&&!("getSenders"in t.RTCPeerConnection.prototype)&&"createDTMFSender"in t.RTCPeerConnection.prototype){let i=function(t,i){return{track:i,get dtmf(){return void 0===this._dtmf&&("audio"===i.kind?this._dtmf=t.createDTMFSender(i):this._dtmf=null),this._dtmf},_pc:t}};if(!t.RTCPeerConnection.prototype.getSenders){t.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};let n=t.RTCPeerConnection.prototype.addTrack;t.RTCPeerConnection.prototype.addTrack=function(t,r){let o=n.apply(this,arguments);return o||(o=i(this,t),this._senders.push(o)),o};let r=t.RTCPeerConnection.prototype.removeTrack;t.RTCPeerConnection.prototype.removeTrack=function(t){r.apply(this,arguments);let i=this._senders.indexOf(t);-1!==i&&this._senders.splice(i,1)}}let n=t.RTCPeerConnection.prototype.addStream;t.RTCPeerConnection.prototype.addStream=function(t){this._senders=this._senders||[],n.apply(this,[t]),t.getTracks().forEach(t=>{this._senders.push(i(this,t))})};let r=t.RTCPeerConnection.prototype.removeStream;t.RTCPeerConnection.prototype.removeStream=function(t){this._senders=this._senders||[],r.apply(this,[t]),t.getTracks().forEach(t=>{let i=this._senders.find(i=>i.track===t);i&&this._senders.splice(this._senders.indexOf(i),1)})}}else if("object"==typeof t&&t.RTCPeerConnection&&"getSenders"in t.RTCPeerConnection.prototype&&"createDTMFSender"in t.RTCPeerConnection.prototype&&t.RTCRtpSender&&!("dtmf"in t.RTCRtpSender.prototype)){let i=t.RTCPeerConnection.prototype.getSenders;t.RTCPeerConnection.prototype.getSenders=function(){let t=i.apply(this,[]);return t.forEach(t=>t._pc=this),t},Object.defineProperty(t.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function rZ(t){if(!t.RTCPeerConnection)return;let i=t.RTCPeerConnection.prototype.getStats;t.RTCPeerConnection.prototype.getStats=function(){let t=Array.prototype.slice.call(arguments),n=t[0],r=t[1],o=t[2];if(arguments.length>0&&"function"==typeof n)return i.apply(this,arguments);if(0===i.length&&(0==arguments.length||"function"!=typeof n))return i.apply(this,[]);let s=function(t){let i={};return t.result().forEach(t=>{let n={id:t.id,timestamp:t.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[t.type]||t.type};t.names().forEach(i=>{n[i]=t.stat(i)}),i[n.id]=n}),i},a=function(t){return new Map(Object.keys(t).map(i=>[i,t[i]]))};if(arguments.length>=2){let t=function(t){r(a(s(t)))};return i.apply(this,[t,n])}return new Promise((t,n)=>{i.apply(this,[function(i){t(a(s(i)))},n])}).then(r,o)}}function r0(t){if(!("object"==typeof t&&t.RTCPeerConnection&&t.RTCRtpSender&&t.RTCRtpReceiver))return;if(!("getStats"in t.RTCRtpSender.prototype)){let i=t.RTCPeerConnection.prototype.getSenders;i&&(t.RTCPeerConnection.prototype.getSenders=function(){let t=i.apply(this,[]);return t.forEach(t=>t._pc=this),t});let n=t.RTCPeerConnection.prototype.addTrack;n&&(t.RTCPeerConnection.prototype.addTrack=function(){let t=n.apply(this,arguments);return t._pc=this,t}),t.RTCRtpSender.prototype.getStats=function(){let t=this;return this._pc.getStats().then(i=>rG(i,t.track,!0))}}if(!("getStats"in t.RTCRtpReceiver.prototype)){let i=t.RTCPeerConnection.prototype.getReceivers;i&&(t.RTCPeerConnection.prototype.getReceivers=function(){let t=i.apply(this,[]);return t.forEach(t=>t._pc=this),t}),rj(t,"track",t=>(t.receiver._pc=t.srcElement,t)),t.RTCRtpReceiver.prototype.getStats=function(){let t=this;return this._pc.getStats().then(i=>rG(i,t.track,!1))}}if(!("getStats"in t.RTCRtpSender.prototype)||!("getStats"in t.RTCRtpReceiver.prototype))return;let i=t.RTCPeerConnection.prototype.getStats;t.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof t.MediaStreamTrack){let t,i,n,r=arguments[0];
vendor: 4,298 bytes, line 8
8return this.getSenders().forEach(i=>{i.track===r&&(t?n=!0:t=i)}),this.getReceivers().forEach(t=>(t.track===r&&(i?n=!0:i=t),t.track===r)),n||t&&i?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():i?i.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return i.apply(this,arguments)}}function r1(t){t.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(t=>this._shimmedLocalStreams[t][0])};let i=t.RTCPeerConnection.prototype.addTrack;t.RTCPeerConnection.prototype.addTrack=function(t,n){if(!n)return i.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};let r=i.apply(this,arguments);return this._shimmedLocalStreams[n.id]?-1===this._shimmedLocalStreams[n.id].indexOf(r)&&this._shimmedLocalStreams[n.id].push(r):this._shimmedLocalStreams[n.id]=[n,r],r};let n=t.RTCPeerConnection.prototype.addStream;t.RTCPeerConnection.prototype.addStream=function(t){this._shimmedLocalStreams=this._shimmedLocalStreams||{},t.getTracks().forEach(t=>{if(this.getSenders().find(i=>i.track===t))throw new DOMException("Track already exists.","InvalidAccessError")});let i=this.getSenders();n.apply(this,arguments);let r=this.getSenders().filter(t=>-1===i.indexOf(t));this._shimmedLocalStreams[t.id]=[t].concat(r)};let r=t.RTCPeerConnection.prototype.removeStream;t.RTCPeerConnection.prototype.removeStream=function(t){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[t.id],r.apply(this,arguments)};let o=t.RTCPeerConnection.prototype.removeTrack;t.RTCPeerConnection.prototype.removeTrack=function(t){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},t&&Object.keys(this._shimmedLocalStreams).forEach(i=>{let n=this._shimmedLocalStreams[i].indexOf(t);-1!==n&&this._shimmedLocalStreams[i].splice(n,1),1===this._shimmedLocalStreams[i].length&&delete this._shimmedLocalStreams[i]}),o.apply(this,arguments)}}function r2(t,i){if(!t.RTCPeerConnection)return;if(t.RTCPeerConnection.prototype.addTrack&&i.version>=65)return r1(t);let n=t.RTCPeerConnection.prototype.getLocalStreams;t.RTCPeerConnection.prototype.getLocalStreams=function(){let t=n.apply(this);return this._reverseStreams=this._reverseStreams||{},t.map(t=>this._reverseStreams[t.id])};let r=t.RTCPeerConnection.prototype.addStream;t.RTCPeerConnection.prototype.addStream=function(i){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.getTracks().forEach(t=>{if(this.getSenders().find(i=>i.track===t))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[i.id]){let n=new t.MediaStream(i.getTracks());this._streams[i.id]=n,this._reverseStreams[n.id]=i,i=n}r.apply(this,[i])};let o=t.RTCPeerConnection.prototype.removeStream;function s(t,i){let n=i.sdp;return Object.keys(t._reverseStreams||[]).forEach(i=>{let r=t._reverseStreams[i],o=t._streams[r.id];n=n.replace(RegExp(o.id,"g"),r.id)}),new RTCSessionDescription({type:i.type,sdp:n})}t.RTCPeerConnection.prototype.removeStream=function(t){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},o.apply(this,[this._streams[t.id]||t]),delete this._reverseStreams[this._streams[t.id]?this._streams[t.id].id:t.id],delete this._streams[t.id]},t.RTCPeerConnection.prototype.addTrack=function(i,n){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");let r=[].slice.call(arguments,1);if(1!==r.length||!r[0].getTracks().find(t=>t===i))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(t=>t.track===i))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};let o=this._streams[n.id];if(o)o.addTrack(i),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{let r=new t.MediaStream([i]);this._streams[n.id]=r,this._reverseStreams[r.id]=n,this.addStream(r)}
8return this.getSenders().find(t=>t.track===i)},["createOffer","createAnswer"].forEach(function(i){let n=t.RTCPeerConnection.prototype[i],r={[i](){let t=arguments;return arguments.length&&"function"==typeof arguments[0]?n.apply(this,[i=>{let n=s(this,i);t[0].apply(null,[n])},i=>{t[1]&&t[1].apply(null,i)},arguments[2]]):n.apply(this,arguments).then(t=>s(this,t))}};t.RTCPeerConnection.prototype[i]=r[i]});let a=t.RTCPeerConnection.prototype.setLocalDescription;t.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type&&(arguments[0]=function(t,i){let n=i.sdp;return Object.keys(t._reverseStreams||[]).forEach(i=>{let r=t._reverseStreams[i],o=t._streams[r.id];n=n.replace(RegExp(r.id,"g"),o.id)}),new RTCSessionDescription({type:i.type,sdp:n})}(this,arguments[0])),a.apply(this,arguments)};let d=Object.getOwnPropertyDescriptor(t.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(t.RTCPeerConnection.prototype,"localDescription",{get(){let t=d.get.apply(this);return""===t.type?t:s(this,t)}}),t.RTCPeerConnection.prototype.removeTrack=function(t){let i;if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!t._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(t._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{},Object.keys(this._streams).forEach(n=>{this._streams[n].getTracks().find(i=>t.track===i)&&(i=this._streams[n])}),i&&(1===i.getTracks().length?this.removeStream(this._reverseStreams[i.id]):i.removeTrack(t.track),this.dispatchEvent(new Event("negotiationneeded")))}}function r6(t,i){!t.RTCPeerConnection&&t.webkitRTCPeerConnection&&(t.RTCPeerConnection=t.webkitRTCPeerConnection),t.RTCPeerConnection&&i.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){let n=t.RTCPeerConnection.prototype[i],r={[i](){return arguments[0]=new("addIceCandidate"===i?t.RTCIceCandidate:t.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};t.RTCPeerConnection.prototype[i]=r[i]})}function r8(t,i){rj(t,"negotiationneeded",t=>{let n=t.target;if(!(i.version<72||n.getConfiguration&&"plan-b"===n.getConfiguration().sdpSemantics)||"stable"===n.signalingState)return t})}function r5(t,i){let n=t&&t.navigator,r=t&&t.MediaStreamTrack;if(n.getUserMedia=function(t,i,r){r$("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),n.mediaDevices.getUserMedia(t).then(i,r)},!(i.version>55&&"autoGainControl"in n.mediaDevices.getSupportedConstraints())){let t=function(t,i,n){i in t&&!(n in t)&&(t[n]=t[i],delete t[i])},i=n.mediaDevices.getUserMedia.bind(n.mediaDevices);if(n.mediaDevices.getUserMedia=function(n){return"object"==typeof n&&"object"==typeof n.audio&&(t((n=JSON.parse(JSON.stringify(n))).audio,"autoGainControl","mozAutoGainControl"),t(n.audio,"noiseSuppression","mozNoiseSuppression")),i(n)},r&&r.prototype.getSettings){let i=r.prototype.getSettings;r.prototype.getSettings=function(){let n=i.apply(this,arguments);return t(n,"mozAutoGainControl","autoGainControl"),t(n,"mozNoiseSuppression","noiseSuppression"),n}}if(r&&r.prototype.applyConstraints){let i=r.prototype.applyConstraints;r.prototype.applyConstraints=function(n){return"audio"===this.kind&&"object"==typeof n&&(t(n=JSON.parse(JSON.stringify(n)),"autoGainControl","mozAutoGainControl"),t(n,"noiseSuppression","mozNoiseSuppression")),i.apply(this,[n])}}}}function r4(t,i){t.navigator.mediaDevices&&"getDisplayMedia"in t.navigator.mediaDevices||t.navigator.mediaDevices&&(t.navigator.mediaDevices.getDisplayMedia=function(n){if(!n||!n.video){let t=new DOMException("getDisplayMedia without video constraints is undefined");return t.name="NotFoundError",t.code=8,Promise.reject(t)}return!0===n.video?n.video={mediaSource:i}:n.video.mediaSource=i,t.navigator.mediaDevices.getUserMedia(n)})}function r9(t){"object"==typeof t&&t.RTCTrackEvent&&"receiver"in t.RTCTrackEvent.prototype&&!("transceiver"in t.RTCTrackEvent.prototype)&&Object.defineProperty(t.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function r7(t,i){if("object"!=typeof t||!t.RTCPeerConnection&&!t.mozRTCPeerConnection)return;!t.RTCPeerConnection&&t.mozRTCPeerConnection&&(t.RTCPeerConnection=t.mozRTCPeerConnection),i.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){let n=t.RTCPeerConnection.prototype[i],r={[i](){return arguments[0]=new("addIceCandidate"===i?t.RTCIceCandidate:t.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};t.RTCPeerConnection.prototype[i]=r[i]});let n={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotec
vendor: 10,210 bytes, line 8
8andidate:"remote-candidate"},r=t.RTCPeerConnection.prototype.getStats;t.RTCPeerConnection.prototype.getStats=function(){let t=Array.prototype.slice.call(arguments),o=t[0],s=t[1],a=t[2];return r.apply(this,[o||null]).then(t=>{if(i.version<53&&!s)try{t.forEach(t=>{t.type=n[t.type]||t.type})}catch(i){if("TypeError"!==i.name)throw i;t.forEach((i,r)=>{t.set(r,Object.assign({},i,{type:n[i.type]||i.type}))})}return t}).then(s,a)}}function r3(t){if("object"!=typeof t||!t.RTCPeerConnection||!t.RTCRtpSender||t.RTCRtpSender&&"getStats"in t.RTCRtpSender.prototype)return;let i=t.RTCPeerConnection.prototype.getSenders;i&&(t.RTCPeerConnection.prototype.getSenders=function(){let t=i.apply(this,[]);return t.forEach(t=>t._pc=this),t});let n=t.RTCPeerConnection.prototype.addTrack;n&&(t.RTCPeerConnection.prototype.addTrack=function(){let t=n.apply(this,arguments);return t._pc=this,t}),t.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function oe(t){if("object"!=typeof t||!t.RTCPeerConnection||!t.RTCRtpSender||t.RTCRtpSender&&"getStats"in t.RTCRtpReceiver.prototype)return;let i=t.RTCPeerConnection.prototype.getReceivers;i&&(t.RTCPeerConnection.prototype.getReceivers=function(){let t=i.apply(this,[]);return t.forEach(t=>t._pc=this),t}),rj(t,"track",t=>(t.receiver._pc=t.srcElement,t)),t.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function ot(t){!t.RTCPeerConnection||"removeStream"in t.RTCPeerConnection.prototype||(t.RTCPeerConnection.prototype.removeStream=function(t){r$("removeStream","removeTrack"),this.getSenders().forEach(i=>{i.track&&t.getTracks().includes(i.track)&&this.removeTrack(i)})})}function oi(t){t.DataChannel&&!t.RTCDataChannel&&(t.RTCDataChannel=t.DataChannel)}function on(t){if("object"!=typeof t||!t.RTCPeerConnection)return;let i=t.RTCPeerConnection.prototype.addTransceiver;i&&(t.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let t=arguments[1],n=t&&"sendEncodings"in t;n&&t.sendEncodings.forEach(t=>{if("rid"in t&&!/^[a-z0-9]{0,16}$/i.test(t.rid))throw TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in t&&!(parseFloat(t.scaleResolutionDownBy)>=1))throw RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in t&&!(parseFloat(t.maxFramerate)>=0))throw RangeError("max_framerate must be >= 0.0")});let r=i.apply(this,arguments);if(n){let i=r.sender,n=i.getParameters();"encodings"in n&&(1!==n.encodings.length||0!==Object.keys(n.encodings[0]).length)||(n.encodings=t.sendEncodings,i.sendEncodings=t.sendEncodings,this.setParametersPromises.push(i.setParameters(n).then(()=>{delete i.sendEncodings}).catch(()=>{delete i.sendEncodings})))}return r})}function or(t){if("object"!=typeof t||!t.RTCRtpSender)return;let i=t.RTCRtpSender.prototype.getParameters;i&&(t.RTCRtpSender.prototype.getParameters=function(){let t=i.apply(this,arguments);return"encodings"in t||(t.encodings=[].concat(this.sendEncodings||[{}])),t})}function oo(t){if("object"!=typeof t||!t.RTCPeerConnection)return;let i=t.RTCPeerConnection.prototype.createOffer;t.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>i.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):i.apply(this,arguments)}}function os(t){if("object"!=typeof t||!t.RTCPeerConnection)return;let i=t.RTCPeerConnection.prototype.createAnswer;t.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>i.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):i.apply(this,arguments)}}function oa(t){if("object"==typeof t&&t.RTCPeerConnection){if("getLocalStreams"in t.RTCPeerConnection.prototype||(t.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in t.RTCPeerConnection.prototype)){let i=t.RTCPeerConnection.prototype.addTrack;t.RTCPeerConnection.prototype.addStream=function(t){this._localStreams||(this._localStreams=[]),this._localStreams.includes(t)||this._localStreams.push(t),t.getAudioTracks().forEach(n=>i.call(this,n,t)),t.getVideoTracks().forEach(n=>i.call(this,n,t))},t.RTCPeerConnection.prototype.addTrack=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r&&r.forEach(t=>{this._localStreams?this._localStreams.includes(t)||this._localStreams.push(t):this._localStreams=[t]}),i.apply(this,arguments)}}"removeStream"in t.RTCPeerConnection.prototype||(t.RTCPeerConnection.prototype.removeStream=function(t){this._localStreams||(this._localStreams=[]);let i=this._localStreams.indexOf(t);if(-1===i)return;this._localStreams.splice(i,1);let n=t.getTracks();this.getSenders().forEach(t=>{n.includes(t.track)&&this.removeTrack(t)})})}}function od(t){if("object"==typeof t&&t.RTCPeerConnection&&("getRemoteStreams"in t.RTCPeerConnection.prototype||(t.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in t.RTCPeerConnection.prototype))){Object.defineProperty(t.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=t=>{t.streams.forEach(t=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(t))return;this._remoteStreams.push(t);let i=new Event("addstream");i.stream=t,this.dispatchEvent(i)})})}});let i=t.RTCPeerConnection.prototype.setRemoteDescription;t.RTCPeerConnection.prototype.setRemoteDescription=function(){let t=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(i){i.streams.forEach(i=>{if(t._remoteStreams||(t._remoteStreams=[]),t._remoteStreams.indexOf(i)>=0)return;t._remoteStreams.push(i);let n=new Event("addstream");n.stream=i,t.dispatchEvent(n)})}),i.apply(t,arguments)}}}function oc(t){if("object"!=typeof t||!t.RTCPeerConnection)return;let i=t.RTCPeerConnection.prototype,n=i.createOffer,r=i.createAnswer,o=i.setLocalDescription,s=i.setRemoteDescription,a=i.addIceCandidate;i.createOffer=function(t,i){let r=arguments.length>=2?arguments[2]:arguments[0],o=n.apply(this,[r]);return i?(o.then(t,i),Promise.resolve()):o},i.createAnswer=function(t,i){let n=arguments.length>=2?arguments[2]:arguments[0],o=r.apply(this,[n]);return i?(o.then(t,i),Promise.resolve()):o};let d=function(t,i,n){let r=o.apply(this,[t]);return n?(r.then(i,n),Promise.resolve()):r};i.setLocalDescription=d,i.setRemoteDescription=d=function(t,i,n){let r=s.apply(this,[t]);return n?(r.then(i,n),Promise.resolve()):r},i.addIceCandidate=d=function(t,i,n){let r=a.apply(this,[t]);return n?(r.then(i,n),Promise.resolve()):r}}function ol(t){let i=t&&t.navigator;if(i.mediaDevices&&i.mediaDevices.getUserMedia){let t=i.mediaDevices,n=t.getUserMedia.bind(t);i.mediaDevices.getUserMedia=t=>n(ou(t))}!i.getUserMedia&&i.mediaDevices&&i.mediaDevices.getUserMedia&&(i.getUserMedia=(function(t,n,r){i.mediaDevices.getUserMedia(t).then(n,r)}).bind(i))}function ou(t){return t&&void 0!==t.video?Object.assign({},t,{video:rJ(t.video)}):t}function oh(t){if(!t.RTCPeerConnection)return;let i=t.RTCPeerConnection;t.RTCPeerConnection=function(t,n){if(t&&t.iceServers){let i=[];for(let n=0;n<t.iceServers.length;n++){let r=t.iceServers[n];!r.hasOwnProperty("urls")&&r.hasOwnProperty("url")?(r$("RTCIceServer.url","RTCIceServer.urls"),(r=JSON.parse(JSON.stringify(r))).urls=r.url,delete r.url,i.push(r)):i.push(t.iceServers[n])}t.iceServers=i}return new i(t,n)},t.RTCPeerConnection.prototype=i.prototype,"generateCertificate"in i&&Object.defineProperty(t.RTCPeerConnection,"generateCertificate",{get:()=>i.generateCertificate})}function op(t){"object"==typeof t&&t.RTCTrackEvent&&"receiver"in t.RTCTrackEvent.prototype&&!("transceiver"in t.RTCTrackEvent.prototype)&&Object.defineProperty(t.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function om(t){let i=t.RTCPeerConnection.prototype.createOffer;t.RTCPeerConnection.prototype.createOffer=function(t){if(t){void 0!==t.offerToReceiveAudio&&(t.offerToReceiveAudio=!!t.offerToReceiveAudio);let i=this.getTransceivers().find(t=>"audio"===t.receiver.track.kind);!1===t.offerToReceiveAudio&&i?"sendrecv"===i.direction?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":"recvonly"===i.direction&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):!0!==t.offerToReceiveAudio||i||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==t.offerToReceiveVideo&&(t.offerToReceiveVideo=!!t.offerToReceiveVideo);let n=this.getTransceivers().find(t=>"video"===t.receiver.track.kind);!1===t.offerToReceiveVideo&&n?"sendrecv"===n.direction?n.setDirection?n.setDirection("sendonly"):n.direction="sendonly":"recvonly"===n.direction&&(n.setDirection?n.setDirection("inactive"):n.direction="inactive"):!0!==t.offerToReceiveVideo||n||this.addTransceiver("video",{direction:"recvonly"})}return i.apply(this,arguments)}}function og(t){"object"!=typeof t||t.AudioContext||(t.AudioContext=t.webkitAudioContext)}function of(t){if(!t.RTCIceCandidate||t.RTCIceCandidate&&"foundation"in t.RTCIceCandidate.prototype)return;let i=t.RTCIceCandidate;t.RTCIceCandidate=function(t){if("object"==typeof t&&t.candidate&&0===t.candidate.indexOf("a=")&&((t=JSON.parse(JSON.stringify(t))).candidate=t.candidate.substr(2)),t.candidate&&t.candidate.length){let n=Object.assign(new i(t),iN().parseCandidate(t.candidate));return n.toJSON=function(){return{candidate:n.candidate,sdpMid:n.sdpMid,sdpMLineIndex:n.sdpMLineIndex,usernameFragment:n.usernameFragment}},n}return new i(t)},t.RTCIceCandidate.prototype=i.prototype,rj(t,"icecandidate",i=>(i.candidate&&Object.defineProperty(i,"candidate",{value:new t.RTCIceCandidate(i.candidate),writable:"false"}),i))}function o_(t,i){if(!t.RTCPeerConnection)return;
8"sctp"in t.RTCPeerConnection.prototype||Object.defineProperty(t.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});let n=t.RTCPeerConnection.prototype.setRemoteDescription;t.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===i.browser&&i.version>=76&&"plan-b"===this.getConfiguration().sdpSemantics&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0}),function(t){if(!t||!t.sdp)return!1;let i=iN().splitSections(t.sdp);return i.shift(),i.some(t=>{let i=iN().parseMLine(t);return i&&"application"===i.kind&&-1!==i.protocol.indexOf("SCTP")})}(arguments[0])){let t,n=function(t){let i=t.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===i||i.length<2)return -1;let n=parseInt(i[1],10);return n!=n?-1:n}(arguments[0]),r=function(t){let n=65536;return"firefox"===i.browser&&(n=i.version<57?-1===t?16384:0x7ffffff5:i.version<60?57===i.version?65535:65536:0x7ffffff5),n}(n),o=function(t,n){let r=65536;"firefox"===i.browser&&57===i.version&&(r=65535);let o=iN().matchPrefix(t.sdp,"a=max-message-size:");return o.length>0?r=parseInt(o[0].substr(19),10):"firefox"===i.browser&&-1!==n&&(r=0x7ffffff5),r}(arguments[0],n);t=0===r&&0===o?1/0:0===r||0===o?Math.max(r,o):Math.min(r,o);let s={};Object.defineProperty(s,"maxMessageSize",{get:()=>t}),this._sctp=s}return n.apply(this,arguments)}}function ov(t){if(!t.RTCPeerConnection||!("createDataChannel"in t.RTCPeerConnection.prototype))return;function i(t,i){let n=t.send;t.send=function(){let r=arguments[0],o=r.length||r.size||r.byteLength;if("open"===t.readyState&&i.sctp&&o>i.sctp.maxMessageSize)throw TypeError("Message too large (can send a maximum of "+i.sctp.maxMessageSize+" bytes)");return n.apply(t,arguments)}}let n=t.RTCPeerConnection.prototype.createDataChannel;t.RTCPeerConnection.prototype.createDataChannel=function(){let t=n.apply(this,arguments);return i(t,this),t},rj(t,"datachannel",t=>(i(t.channel,t.target),t))}function oy(t){if(!t.RTCPeerConnection||"connectionState"in t.RTCPeerConnection.prototype)return;let i=t.RTCPeerConnection.prototype;Object.defineProperty(i,"connectionState",{get(){return({completed:"connected",checking:"connecting"})[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(i,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(t){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),t&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=t)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(t=>{let n=i[t];i[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=t=>{let i=t.target;if(i._lastConnectionState!==i.connectionState){i._lastConnectionState=i.connectionState;let n=new Event("connectionstatechange",t);i.dispatchEvent(n)}return t},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}function oE(t,i){if(!t.RTCPeerConnection||"chrome"===i.browser&&i.version>=71||"safari"===i.browser&&i.version>=605)return;let n=t.RTCPeerConnection.prototype.setRemoteDescription;t.RTCPeerConnection.prototype.setRemoteDescription=function(i){if(i&&i.sdp&&-1!==i.sdp.indexOf(` 9a=extmap-allow-mixed`)){let n=i.sdp.split(` 10`).filter(t=>"a=extmap-allow-mixed"!==t.trim()).join(` 11`);t.RTCSessionDescription&&i instanceof t.RTCSessionDescription?arguments[0]=new t.RTCSessionDescription({type:i.type,sdp:n}):i.sdp=n}return n.apply(this,arguments)}}function oS(t,i){if(!t.RTCPeerConnection||!t.RTCPeerConnection.prototype)return;let n=t.RTCPeerConnection.prototype.addIceCandidate;n&&0!==n.length&&(t.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===i.browser&&i.version<78||"firefox"===i.browser&&i.version<68||"safari"===i.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():n.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function ob(t,i){if(!t.RTCPeerConnection||!t.RTCPeerConnection.prototype)return;let n=t.RTCPeerConnection.prototype.setLocalDescription;n&&0!==n.length&&(t.RTCPeerConnection.prototype.setLocalDescription=function(){let t=arguments[0]||{};if("object"!=typeof t||t.type&&t.sdp)return n.apply(this,arguments);if(!(t={type:t.type,sdp:t.sdp}).type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":t.type="offer";break;default:t.type="answer"}return t.sdp||"offer"!==t.type&&"answer"!==t.type?n.apply(this,[t]):("offer"===t.type?this.createOffer:this.createAnswer).apply(this).then(t=>n.apply(this,[t]))})}!function(){let t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).window,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0},n=rU,r=function(t){let i={browser:null,version:null};if(void 0===t||!t.navigator)return i.browser="Not a browser.",i;let n=t.navigator;if(n.mozGetUserMedia)i.browser="firefox",i.version=rF(n.userAgent,/Firefox\/(\d+)\./,1);else if(n.webkitGetUserMedia||!1===t.isSecureContext&&t.webkitRTCPeerConnection&&!t.RTCIceGatherer)i.browser="chrome",i.version=rF(n.userAgent,/Chrom(e|ium)\/(\d+)\./,2);
11else{if(!t.RTCPeerConnection||!n.userAgent.match(/AppleWebKit\/(\d+)\./))return i.browser="Not a supported browser.",i;i.browser="safari",i.version=rF(n.userAgent,/AppleWebKit\/(\d+)\./,1),i.supportsUnifiedPlan=t.RTCRtpTransceiver&&"currentDirection"in t.RTCRtpTransceiver.prototype}return i}(t),o={browserDetails:r,commonShim:l,extractVersion:rF,disableLog:rV,disableWarnings:rB,sdp:iO};switch(r.browser){case"chrome":if(!a||!r6||!i.shimChrome)return n("Chrome shim is not included in this adapter release.");if(null===r.version)return n("Chrome shim can not determine version, not shimming.");n("adapter.js shimming chrome."),o.browserShim=a,oS(t,r),ob(t),rK(t,r),rY(t),r6(t,r),rQ(t),r2(t,r),rX(t),rZ(t),r0(t),r8(t,r),of(t),oy(t),o_(t,r),ov(t),oE(t,r);break;case"firefox":if(!d||!r7||!i.shimFirefox)return n("Firefox shim is not included in this adapter release.");n("adapter.js shimming firefox."),o.browserShim=d,oS(t,r),ob(t),r5(t,r),r7(t,r),r9(t),ot(t),r3(t),oe(t),oi(t),on(t),or(t),oo(t),os(t),of(t),oy(t),o_(t,r),ov(t);break;case"safari":if(!c||!i.shimSafari)return n("Safari shim is not included in this adapter release.");n("adapter.js shimming safari."),o.browserShim=c,oS(t,r),ob(t),oh(t),om(t),oc(t),oa(t),od(t),op(t),ol(t),og(t),of(t),o_(t,r),ov(t),oE(t,r);break;default:n("Unsupported browser!")}}({window:"u"<typeof window?void 0:window});let oC={1080:{height:1080,width:1920},180:{height:180,width:320},2160:{height:2160,width:3840},240:{height:240,width:320},360:{height:360,width:640},480:{height:480,width:640},"4k":{height:2160,width:3840},540:{height:540,width:960},720:{height:720,width:1280},fullhd:{height:1080,width:1920},hd:{height:720,width:1280},qhd:{height:540,width:960},vga:{height:480,width:640}},oD=(0,m.getLogger)("rtc:ScreenObtainer"),oT=new class{constructor(){this.obtainStream=this._createObtainStreamMethod(),this.options={},this._electronSkipDisplayMedia=!1}init(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=t,this.obtainStream||oD.warn("Desktop sharing not supported")}_createObtainStreamMethod(){let t=nf.supportsGetDisplayMedia();return nf.isElectron()?this._obtainScreenOnElectron:nf.isReactNative()&&t?this.obtainScreenFromGetDisplayMediaRN:t?this._obtainScreenFromGetDisplayMedia:(oD.warn("Screen sharing not supported on ",nf.getName()),null)}_getAudioConstraints(){var t;let i=this.options.audioQuality,n=null==(t=this.options.testing)?void 0:t.testMode,r=nf.isChromiumBased()&&nf.isEngineVersionGreaterThan(141)&&!nf.isElectron(),o=!(null!=i&&i.stereo)&&nf.isChromiumBased()&&nf.isEngineVersionGreaterThan(136)&&!r,s={autoGainControl:!(null!=i&&i.stereo),channelCount:null!=i&&i.stereo?2:1,echoCancellation:!(null!=i&&i.stereo),noiseSuppression:!(null!=i&&i.stereo)},a=null!=i&&i.stereo||o?s:!n;return r&&!n&&("boolean"==typeof a?a={restrictOwnAudio:!0}:a.restrictOwnAudio=!0),a}_obtainScreenOnElectron(t,i){var n,r=this;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(this._electronSkipDisplayMedia)if("function"==typeof(null==(n=window.JitsiMeetScreenObtainer)?void 0:n.openDesktopPicker)){let n=this.options,s=n.desktopSharingFrameRate,a=n.desktopSharingResolution,d=n.desktopSharingSources;window.JitsiMeetScreenObtainer.openDesktopPicker({desktopSharingSources:o.desktopSharingSources||d||["screen","window"]},function(n,o){if(n){var d,c,l,u,h,p,m,g;let f=!1;if(arguments.length>2&&void 0!==arguments[2]&&arguments[2]){f={};let t=r._getAudioConstraints();"boolean"!=typeof t&&(f={optional:t}),"screen"===o&&(f.mandatory={echoCancellation:!0,chromeMediaSource:"desktop"})}let _={audio:f,video:{mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:n,maxFrameRate:null!=(d=null==s?void 0:s.max)?d:5,maxHeight:null!=(c=null==a||null==(l=a.height)?void 0:l.max)?c:window.screen.height,maxWidth:null!=(u=null==a||null==(h=a.width)?void 0:h.max)?u:window.screen.width,minFrameRate:null!=(p=null==s?void 0:s.min)?p:5,minHeight:null==a||null==(m=a.height)?void 0:m.min,minWidth:null==a||null==(g=a.width)?void 0:g.min}}};navigator.mediaDevices.getUserMedia(_).then(i=>{r.setContentHint(i),t({sourceId:n,sourceType:o,stream:i})}).catch(t=>i(t))}else i(new ru(rn))},t=>i(new ru(n4,t)))}else i(new ru(n9));
11else this._obtainScreenFromGetDisplayMedia(t,n=>{n.name===ri?(this._electronSkipDisplayMedia=!0,this._obtainScreenOnElectron(t,i)):i(n)})}_obtainScreenFromGetDisplayMedia(t,i){var n,r,o;let s,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};s=navigator.getDisplayMedia?navigator.getDisplayMedia.bind(navigator):navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);let d=this._getAudioConstraints(),c={},l={},u=a.desktopSharingFrameRate,h=void 0===u?null==(n=this.options)?void 0:n.desktopSharingFrameRate:u,p=a.resolution,m=void 0===p?null==(r=this.options)?void 0:r.resolution:p,g=a.screenShareSettings,f=void 0===g?null==(o=this.options)?void 0:o.screenShareSettings:g;"object"==typeof h&&(c.frameRate=h),c.frameRate&&delete c.frameRate.min,nf.isChromiumBased()&&(nf.isEngineVersionGreaterThan(93)&&(l.preferCurrentTab=(null==f?void 0:f.desktopPreferCurrentTab)||!1),nf.isEngineVersionGreaterThan(104)&&(l.systemAudio=(null==f?void 0:f.desktopSystemAudio)||"include"),nf.isEngineVersionGreaterThan(106)&&(l.surfaceSwitching=(null==f?void 0:f.desktopSurfaceSwitching)||"include"),nf.isEngineVersionGreaterThan(106)&&(null==f?void 0:f.desktopDisplaySurface)&&(c.displaySurface=null==f?void 0:f.desktopDisplaySurface),nf.isEngineVersionGreaterThan(111)&&(l.selfBrowserSurface=(null==f?void 0:f.desktopSelfBrowserSurface)||"exclude"),(null==h?void 0:h.max)>5||(c.height=99999,c.width=99999)),nf.isSafari()&&null!=f&&f.desktopDisplaySurface&&(c.displaySurface=null==f?void 0:f.desktopDisplaySurface),0===Object.keys(c).length&&(c=!0);let _={audio:d,video:c,...l,cursor:"always"};oD.info("Using getDisplayMedia for screen sharing",_),s(_).then(i=>{var n,r;if(this.setContentHint(i),nf.isChromiumBased()){let t=i.getVideoTracks()[0],n=5;"number"==typeof(null==h?void 0:h.min)&&h.min>0&&(n=h.min);let o={frameRate:{min:n}};m&&null!=(r=this.options.testing)&&r.testMode&&(o.height=m,o.width=Math.floor(16*m/9));try{t.applyConstraints(o)}catch(t){oD.warn(`Min fps=${n} constraint could not be applied on the desktop track,${t.message}`)}}let o=null==i?void 0:i.getVideoTracks(),s=(null==o?void 0:o.length)>0?o[0]:void 0,a=(null!=(n=null==s?void 0:s.getSettings())?n:{}).deviceId;t({sourceId:null!=a?a:i.id,stream:i})}).catch(t=>{var n;let r={errorCode:t.code,errorMsg:t.message,errorName:t.name,errorStack:t.stack};oD.warn("getDisplayMedia error",JSON.stringify(_),JSON.stringify(r)),r.errorCode===DOMException.NOT_SUPPORTED_ERR?i(new ru(ri)):-1!==(null==(n=r.errorMsg)?void 0:n.indexOf("denied by system"))?i(new ru(re)):i(new ru("NotReadableError"===r.errorMsg?rt:rn))})}obtainScreenFromGetDisplayMediaRN(t,i){oD.info("Using getDisplayMedia for screen sharing"),navigator.mediaDevices.getDisplayMedia({video:!0}).then(i=>{this.setContentHint(i),t({sourceId:i.id,stream:i})}).catch(()=>{i(new ru(rn))})}setContentHint(t){let i=this.options.desktopSharingFrameRate,n=t.getVideoTracks()[0];"contentHint"in n?n.contentHint=(null==i?void 0:i.max)>5?"motion":"detail":oD.warn("MediaStreamTrack contentHint attribute not supported")}isSupported(){return null!==this.obtainStream}setDesktopSharingFrameRate(t){oD.info(`Setting the desktop capture rate to ${t}`),this.options.desktopSharingFrameRate={max:t,min:5}}},ox=["timeout"];function oR(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return oA(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oA(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 12In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function oA(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}let ow=(0,m.getLogger)("rtc:RTCUtils"),oI={video:{frameRate:{max:30,min:15},height:{ideal:720,max:720,min:180},width:{ideal:1280,max:1280,min:320}}},ok="default",oO=!1,oN=!1,oP=!1,oL=!1,oM=!1,oF=null,oj=document.createElement("audio"),oV=void 0!==oj.setSinkId;oV&&oj.setSinkId("").catch(t=>{oV=!1,ow.info(`setSinkId probe rejected (${null==t?void 0:t.name}); audio output device change disabled for this session`)});let oB,oU=[];function o$(){}function oH(t){let i=t.filter(t=>"audioinput"===t.kind).length,n=t.filter(t=>"audiooutput"===t.kind).length,r=t.filter(t=>"videoinput"===t.kind).length,o=t.filter(t=>"videooutput"===t.kind).length;t.forEach(t=>{let s={audio_input_device_count:i,audio_output_device_count:n,device_group_id:t.groupId,device_id:t.deviceId,device_kind:t.kind,device_label:t.label,video_input_device_count:r,video_output_device_count:o};n$.sendAnalytics(na.AVAILABLE_DEVICE,s)})}let oJ=new class extends rI{constructor(){super(),this._initOnce=!1}init(){var t;let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};"boolean"==typeof i.disableAEC&&(oP=i.disableAEC,ow.info(`Disable AEC: ${oP}`)),"boolean"==typeof i.disableNS&&(oL=i.disableNS,ow.info(`Disable NS: ${oL}`)),"boolean"==typeof i.disableAP&&(oN=i.disableAP,ow.info(`Disable AP: ${oN}`)),"boolean"==typeof i.disableAGC&&(oM=i.disableAGC,ow.info(`Disable AGC: ${oM}`)),"boolean"==typeof(null==(t=i.audioQuality)?void 0:t.stereo)&&(oF=i.audioQuality.stereo,ow.info(`Stereo: ${oF}`)),this._initOnce||(this._initOnce=!0,window.clearInterval(oB),oB=void 0,oT.init(i),this.enumerateDevices(t=>{oU=t.slice(0),ow.debug("Available devices: ",oU),oH(oU),this.eventEmitter.emit(nJ.DEVICE_LIST_AVAILABLE,oU),nf.supp
12ortsDeviceChangeEvent()?navigator.mediaDevices.addEventListener("devicechange",()=>this.enumerateDevices(o$)):oB=window.setInterval(()=>this.enumerateDevices(o$),3e3)}))}attachMediaStream(t,i){return t&&(t.srcObject=i),t&&i&&this.isDeviceChangeAvailable("output")&&i.getAudioTracks().length&&oO?t.setSinkId(this.getAudioOutputDevice()).catch(i=>{ow.warn("Failed to set audio output device for the element. Default audio output device will be used instead",null==t?void 0:t.id,new ru(i,null,["audiooutput"]))}):Promise.resolve()}enumerateDevices(t){navigator.mediaDevices.enumerateDevices().then(i=>{this._updateKnownDevices(i),t(i)}).catch(i=>{ow.warn(`Failed to enumerate devices. ${i}`),this._updateKnownDevices([]),t([])})}_getUserMedia(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return new Promise((r,o)=>{let s,a=!1;nO(n)&&n>0&&(s=setTimeout(()=>{a=!0,s=void 0;let i=new ru(rr);ns.sendStatsEntry(ni.GET_USER_MEDIA_ERROR_EVENT,null,{devices:t,message:i.message,name:i.name}),o(i)},n)),navigator.mediaDevices.getUserMedia(i).then(i=>{ow.info("onUserMediaSuccess"),this._updateGrantedPermissions(t,i),a||(void 0!==s&&clearTimeout(s),r(i))}).catch(n=>{ow.warn(`Failed to get access to local media. ${n} ${JSON.stringify(i)}`);let r=new ru(n,i,t);a||(ns.sendStatsEntry(ni.GET_USER_MEDIA_ERROR_EVENT,null,{constraint:n.constraint,devices:t,message:n.message,name:n.name}),void 0!==s&&clearTimeout(s),o(r)),r.name===re&&this._updateGrantedPermissions(t,void 0)})})}_getDesktopMedia(t){return oT.isSupported()?new Promise((i,n)=>{oT.obtainStream(t=>{i(t)},t=>{n(t)},t)}
12):Promise.reject(Error("Desktop sharing is not supported!"))}_getMissingTracks(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1?arguments[1]:void 0,n=[],r=t.includes("audio"),o=i&&i.getAudioTracks().length>0;r&&!o&&n.push("audio");let s=t.includes("video"),a=i&&i.getVideoTracks().length>0;return s&&!a&&n.push("video"),n}_onMediaDevicesListChanged(t){oU=t.slice(0),ow.info("list of media devices has changed:",oU),oH(oU),this.eventEmitter.emit(nJ.DEVICE_LIST_WILL_CHANGE,oU),this.eventEmitter.emit(nJ.DEVICE_LIST_CHANGED,oU)}_updateKnownDevices(t){(function(t){return t.length!==oU.length||t.map(i).sort().join("")!==oU.map(i).sort().join("");function i(t){return JSON.stringify({deviceId:t.deviceId,facing:t.facing,groupId:t.groupId,kind:t.kind,label:t.label})}})(t)&&this._onMediaDevicesListChanged(t)}_updateGrantedPermissions(t,i){let n=!!i&&i.getAudioTracks().length>0,r=!!i&&i.getVideoTracks().length>0,o={};-1!==t.indexOf("video")&&(o.video=r),-1!==t.indexOf("audio")&&(o.audio=n),this.eventEmitter.emit(nJ.PERMISSIONS_CHANGED,o)}obtainAudioAndVideoPermissions(t){let i=t.timeout,n=function(t,i){if(null==t)return{};var n,r,o=function(t,i){if(null==t)return{};var n={};for(var r in t)if(({}).hasOwnProperty.call(t,r)){if(-1!==i.indexOf(r))continue;n[r]=t[r]}return n}(t,i);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(r=0;r<s.length;r++)n=s[r],-1===i.indexOf(n)&&({}).propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,ox),r=[],o={},s=(function(){if(-1===(n.devices||[]).indexOf("desktop"))return Promise.resolve();let t=n.desktopSharingSourceDevice,r=n.desktopSharingSources,o=n.resolution;if(t){let n=oU&&oU.find(i=>"videoinput"===i.kind&&(i.deviceId===t||i.label===t));if(!n)return Promise.reject(new ru({name:"ConstraintNotSatisfiedError"},{},[t]));let r=["video"],o={video:{deviceId:n.deviceId}};return this._getUserMedia(r,o,i).then(t=>({sourceType:"device",stream:t}))}return this._getDesktopMedia({desktopSharingSources:r,resolution:o})}).bind(this),a=(function(){let t=(n.devices||["audio","video"]).filter(t=>"audio"===t||"video"===t);return t.length?(o=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=rA(i.constraints||oI);if(t.indexOf("video")>=0){if("object"==typeof n.video&&null!==n.video||(n.video={}),oC[i.resolution]){let t=oC[i.resolution];n.video.height={ideal:t.height},n.video.width={ideal:t.width}}n.video.height||(n.video.height=rA(oI.video.height)),n.video.width||(n.video.width=rA(oI.video.width)),n.video.frameRate||(n.video.frameRate=rA(oI.video.frameRate)),nf.isWebKitBased()&&(n.video.height&&n.video.height.ideal?n.video.height={ideal:n.video.height.ideal}:ow.warn("Ideal camera height missing, camera may not start properly"),n.video.width&&n.video.width.ideal?n.video.width={ideal:n.video.width.ideal}:ow.warn("Ideal camera width missing, camera may not start properly")),i.cameraDeviceId?n.video.deviceId={exact:i.cameraDeviceId}:nf.isMobileDevice()&&(n.video.facingMode=i.facingMode||rP.USER)}else n.video=!1;if(t.indexOf("audio")>=0){if(n.audio&&"boolean"!=typeof n.audio){let t={autoGainControl:"boolean",channelCount:"number",echoCancellation:"boolean",noiseSuppression:"boolean"},i={};for(let o of Object.entries(n.audio)){var r=oR(o,2);let n=r[0],s=r[1];if(t[n]){if(typeof s!==t[n]||"channelCount"===n&&![1,2].includes(s))continue;i[n]=s}}n.audio=i}else n.audio={autoGainControl:!oM&&!oN,echoCancellation:!oP&&!oN,noiseSuppression:!oL&&!oN},oF&&Object.assign(n.audio,{channelCount:2});i.micDeviceId&&(n.audio.deviceId={exact:i.micDeviceId})}else n.audio=!1;return n}(t,n),ow.info("Got media constraints: ",JSON.stringify(o)),this._getUserMedia(t,o,i)):Promise.resolve()}).bind(this);return s().then(function(t){if(!t)return;let i=t.stream,n=t.sourceId,o=t.sourceType,s=i.getAudioTracks();if(s.length){let t=new MediaStream(s);r.push({sourceId:n,sourceType:o,stream:t,track:t.getAudioTracks()[0]})}let a=i.getVideoTracks();if(a.length){let t=new MediaStream(a);r.push({sourceId:n,sourceType:o,stream:t,track:t.getVideoTracks()[0],videoType:rw.DESKTOP})}}).then(a).then(function(t){if(!t)return;let i=t.getAudioTracks();if(i.length){let t=new MediaStream(i);
12r.push({constraints:o.audio,effects:n.effects,stream:t,track:t.getAudioTracks()[0]})}let s=t.getVideoTracks();if(s.length){let t=new MediaStream(s);r.push({constraints:o.video,effects:n.effects,stream:t,track:t.getVideoTracks()[0],videoType:rw.CAMERA})}}).then(()=>r).catch(t=>(r.forEach(t=>{let i=t.stream;this.stopMediaStream(i)}),Promise.reject(t)))}isDeviceChangeAvailable(t){return"output"!==t&&"audiooutput"!==t||oV}stopMediaStream(t){t&&(t.getTracks().forEach(t=>{t.stop&&t.stop()}),t.stop&&t.stop(),t.release&&t.release())}isDesktopSharingEnabled(){return oT.isSupported()}setAudioOutputDevice(t){return this.isDeviceChangeAvailable("output")?oj.setSinkId(t).then(()=>{ok=t,oO=!0,ow.debug(`Audio output device set to ${t}`),this.eventEmitter.emit(nJ.AUDIO_OUTPUT_DEVICE_CHANGED,t)}):Promise.reject(Error("Audio output device change is not supported"))}setDesktopSharingFrameRate(t){oT.setDesktopSharingFrameRate(t)}getAudioOutputDevice(){return ok}getCurrentlyAvailableMediaDevices(){return oU}getEventDataForActiveDevice(t){let i=[];return i.push({deviceId:t.deviceId,groupId:t.groupId,kind:t.kind,label:t.label}),{deviceList:i}}isUserStreamById(t){return t&&"mixedmslabel"!==t&&"default"!==t}},oq=(0,m.getLogger)("rtc:JitsiTrack"),oG={track_ended:"onended",track_mute:"onmute",track_unmute:"onunmute"};class oz extends rI{constructor(t,i,n,r,o,s){super(),this.containers=[],this.conference=t,this.audioLevel=-1,this.type=o,this.track=n,this.videoType=s,this.handlers=new Map,this.disposed=!1,this._streamInactiveHandler=r,this._setStream(i)}_addMediaStreamInactiveHandler(t){nf.isFirefox()||nf.isWebKitBased()?this.track.onended=t:this.stream.oninactive=t}_attachTTFMTracker(t){}_onTrackAttach(t){}_onTrackDetach(t){}_setStream(t){if(this.stream!==t&&(this.stream=t,this.stream)){for(let t of this.handlers.keys())this._setHandler(t,this.handlers.get(t));this._streamInactiveHandler&&this._addMediaStreamInactiveHandler(this._streamInactiveHandler)}}_unregisterHandlers(){if(this.stream){for(let t of this.handlers.keys())for(let i of this.stream.getVideoTracks())i[oG[t]]=void 0;this._streamInactiveHandler&&this._addMediaStreamInactiveHandler(void 0)}else oq.warn(`${this}: unable to unregister handlers - no stream object`)}_setHandler(t,i){if(oG.hasOwnProperty(t)){if(i?this.handlers.set(t,i):this.handlers.delete(t),this.stream)for(let n of this.stream.getTracks())n[oG[t]]=i}else oq.error(`Invalid handler type ${t}`)}isWebRTCTrackMuted(){var t;return null==(t=this.track)?void 0:t.muted}attach(t){let i=Promise.resolve();return this.stream&&(this._onTrackAttach(t),i=oJ.attachMediaStream(t,this.stream)),this.containers.push(t),this._attachTTFMTracker(t),i}detach(t){for(let i=this.containers,n=i.length-1;n>=0;--n){let r=i[n];t||(this._onTrackDetach(r),oJ.attachMediaStream(r,null).catch(()=>{oq.error(`Detach for ${this} failed!`)})),t&&r!==t||i.splice(n,1)}t&&(this._onTrackDetach(t),oJ.attachMediaStream(t,null).catch(()=>{oq.error(`Detach for ${this} failed!`)}))}dispose(){let t=Promise.resolve();return this.disposed||(this.detach(),this.removeAllListeners(),this.disposed=!0),t}getId(){return this.getStreamId()}getOriginalStream(){return this.stream}getSourceName(){}getSsrc(){}getStreamId(){return this.stream?this.stream.id:null}getTrack(){return this.track}getTrackLabel(){return this.track.label}getTrackId(){return this.track?this.track.id:null}getType(){return this.type}getUsageLabel(){return this.isAudioTrack()?"mic":this.videoType?this.videoType:"default"}getVideoType(){return this.videoType}getHeight(){return Math.min(this.track.getSettings().height,this.track.getSettings().width)}getWidth(){return Math.max(this.track.getSettings().height,this.track.getSettings().width)}isActive(){return void 0===this.stream.active||this.stream.active}isAudioTrack(){return this.getType()===nx.AUDIO}isLocal(){return!1}isLocalAudioTrack(){return this.isAudioTrack()&&this.isLocal()}isVideoTrack(){return this.getType()===nx.VIDEO}isMuted(){return!1}setAudioLevel(t,i){let n=t;nf.supportsReceiverStats()&&void 0!==i&&this.isMuted()&&(n=0),this.audioLevel!==n?(this.audioLevel=n,this.emit
12(is.TRACK_AUDIO_LEVEL_CHANGED,n,i)):0===this.audioLevel&&0===n&&this.isLocal()&&!this.isWebRTCTrackMuted()&&this.emit(is.NO_AUDIO_INPUT,n)}setAudioOutput(t){return this.isVideoTrack()?Promise.resolve():oJ.isDeviceChangeAvailable("output")?Promise.allSettled(this.containers.map(i=>i.setSinkId(t).catch(t=>{throw oq.warn("Failed to change audio output device on element. Default or previously set audio output device will be used.",i,t),t}))).then(i=>{i.some(t=>"fulfilled"===t.status)&&this.emit(is.TRACK_AUDIO_OUTPUT_CHANGED,t)}):Promise.reject(Error("Audio output device change is not supported"))}setSourceName(t){}}function oK(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return oW(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oW(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 13In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function oW(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}let oY=(0,m.getLogger)("rtc:JitsiLocalTrack");class oQ extends oz{constructor(t){var i;let n=t.constraints,r=t.deviceId,o=t.facingMode,s=t.mediaType,a=t.rtcId,d=t.sourceId,c=t.sourceType,l=t.stream,u=t.track,h=t.videoType,p=t.effects,m=void 0===p?[]:p;super(null,l,u,()=>
13this.emit(is.LOCAL_TRACK_STOPPED,this),s,h),this._setEffectInProgress=!1;const g=m.find(t=>t.isEnabled(this));g&&this._startStreamEffect(g);const f=h===rw.DESKTOP?u.getSettings().displaySurface:null;this.metadata={timestamp:Date.now(),...f?{displaySurface:f}:{}},this.rtcId=a,this.sourceId=d,this.sourceType=null!=c?c:f,this._constraints=u.getConstraints(),s===nx.VIDEO&&(h===rw.CAMERA&&(this._constraints.height&&this._constraints.width||(this._constraints={height:{ideal:this.getHeight()},width:{ideal:this.getWidth()}}),nO(this._constraints.height.ideal)||nO(this._constraints.width.ideal)||(this._constraints.height={ideal:n.height.ideal},this._constraints.width={ideal:n.width.ideal})),this.resolution=this.getHeight(),!nO(this.resolution)&&null!=(i=this._constraints.height)&&i.ideal&&(this.resolution=this._constraints.height.ideal),this.maxEnabledResolution=this.resolution),this.deviceId=r,this._prevSetMuted=Promise.resolve(),this._facingMode=o,this._trackEnded=!1,this._hasSentData=!1,this._testDataSent=!0,this._realDeviceId=""===this.deviceId?void 0:this.deviceId,this._sourceName=null,this._ssrc=null,this._trackMutedTS=0,this._onDeviceListWillChange=t=>{let i=this._realDeviceId;this._setRealDeviceIdFromDeviceList(t),(void 0!==this.getTrack().readyState||void 0===this._realDeviceId||t.find(t=>t.deviceId===this._realDeviceId))&&(void 0===i||void 0!==this._realDeviceId)||(this._trackEnded=!0)},this.isAudioTrack()&&oJ.isDeviceChangeAvailable("output")&&(this._onAudioOutputDeviceChanged=this.setAudioOutput.bind(this),oJ.addListener(nJ.AUDIO_OUTPUT_DEVICE_CHANGED,this._onAudioOutputDeviceChanged)),oJ.addListener(nJ.DEVICE_LIST_WILL_CHANGE,this._onDeviceListWillChange),this._initNoDataFromSourceHandlers()}_addStreamToConferenceAsUnmute(){return this.conference?new Promise((t,i)=>{this.conference._addLocalTrackToPc(this).then(t,t=>i(Error(t)))}):Promise.resolve()}_fireNoDataFromSourceEvent(){let t=!this.isReceivingData();this.emit(is.NO_DATA_FROM_SOURCE,t),oY.debug(`NO_DATA_FROM_SOURCE event with value ${t} detected for track: ${this}`),n$.sendAnalytics({action:"track.no.data.from.source",attributes:{media_type:this.getType(),value:t},type:na.TYPE_OPERATIONAL})}_initNoDataFromSourceHandlers(){this._isNoDataFromSourceEventsEnabled()&&(this._setHandler("track_mute",()=>{this._trackMutedTS=window.performance.now(),this._fireNoDataFromSourceEvent()}),this._setHandler("track_unmute",()=>{this._fireNoDataFromSourceEvent(),n$.sendAnalyticsAndLog(na.TRACK_UNMUTED,{media_type:this.getType(),track_type:"local",value:window.performance.now()-this._trackMutedTS})}),this.isVideoTrack()&&this.videoType===rw.CAMERA&&this._setHandler("track_ended",()=>{this.isReceivingData()||this._fireNoDataFromSourceEvent()}))}_isNoDataFromSourceEventsEnabled(){return!this.isVideoTrack()||this.videoType!==rw.DESKTOP}_queueSetMuted(t){let i=this._setMuted.bind(this,t);return this._prevSetMuted=this._prevSetMuted.then(i,i),this._prevSetMuted}_removeStreamFromConferenceAsMute(t,i){this.conference?this.conference._removeLocalTrackFromPc(this).then(t,t=>i(Error(t))):t()}_setMuted(t){var i;if(this.isMuted()===t&&this.videoType!==rw.DESKTOP)return Promise.resolve();if(this.disposed)return Promise.reject(new ru(ro));let n=Promise.resolve(),r=()=>oY.info(`Mute ${this}: ${t}`),o=nf.isReactNative()?this.videoType===rw.DESKTOP:nf.doesVideoMuteByStreamRemove();if(this.isAudioTrack()||!o)r(),null!=(i=this._streamEffect)&&i.setMuted?this._streamEffect.setMuted(t):this.track&&(this.track.enabled=!t);else if(t)n=new Promise((t,i)=>{r(),this._removeStreamFromConferenceAsMute(()=>{this._streamEffect&&this._stopStreamEffect(),this._unregisterHandlers(),this.stopStream(),this._setStream(null),t()},i)});else{let t;r(),t=this.videoType===rw.CAMERA?{cameraDeviceId:this.getDeviceId(),devices:[nx.VIDEO],effects:this._streamEffect?[this._streamEffect]:[],facingMode:this.getCameraFacingMode()}:{devices:[nx.DESKTOP]},n=(n=oJ.obtainAudioAndVideoPermissions({...t,constraints:{video:this._constraints}})).then(t=>{let i=t.find(t=>t.track.kind===this.getType());if(!i)throw new ru(rs);return this._setStream(i.stream),this.track=i.track,this.videoType!==i.videoType&&(oY.warn(`${this}: video type has changed after unmute!`,this.videoType,i.videoType),this.videoType=i.videoType),this._streamEffect&&this._startStreamEffect(this._streamEffect),this.containers.map(t=>oJ.attachMediaStream(t,this.stream).catch(()=>{oY.error(`Attach media failed for ${this} on video unmute!`)})),this._addStreamToConferenceAsUnmute()})}return n.then(()=>{var i;this._sendMuteStatus(t);let n=this.isAudioTrack()?ni.AUDIO_MUTE_CHANGED_EVENT:ni.VIDEO_MUTE_CHANGED_EVENT;ns.sendStatsEntry(n,null,t),this.isVideoTrack()&&(null==(i=this.conference)||i._sendBridgeVideoTypeMessage(this)),this.emit
13(is.TRACK_MUTE_CHANGED,this)})}_setRealDeviceIdFromDeviceList(t){let i=this.getTrack(),n=`${i.kind}input`,r=t.find(t=>t.kind===n&&t.label===i.label&&t.deviceId===this.deviceId);if(!r&&"default"===this._realDeviceId){let o=(i.label||"").replace("Default - ","");r=t.find(t=>t.kind===n&&t.label===o)}this._realDeviceId=r?r.deviceId:void 0}_startStreamEffect(t){this._streamEffect=t,this._originalStream=this.stream,this._setStream(this._streamEffect.startEffect(this._originalStream)),this.track=this.stream.getTracks()[0],this._effectEnabled=!0}_stopStreamEffect(){this._streamEffect&&(this._streamEffect.stopEffect(),this._setStream(this._originalStream),this._originalStream=null,this.track=this.stream?this.stream.getTracks()[0]:null,this._effectEnabled=!1)}_switchCamera(){this.isVideoTrack()&&this.videoType===rw.CAMERA&&"function"==typeof this.track._switchCamera&&(this.track._switchCamera(),this._facingMode=this._facingMode===rP.ENVIRONMENT?rP.USER:rP.ENVIRONMENT)}_switchStreamEffect(t){this._streamEffect&&(this._stopStreamEffect(),this._streamEffect=void 0),t&&this._startStreamEffect(t)}async dispose(){if(!this.disposed)return this._streamEffect&&await this.setEffect(void 0),this.conference&&await this.conference.removeTrack(this),this.stream&&this.stopStream(),oJ.removeListener(nJ.DEVICE_LIST_WILL_CHANGE,this._onDeviceListWillChange),this._onAudioOutputDeviceChanged&&oJ.removeListener(nJ.AUDIO_OUTPUT_DEVICE_CHANGED,this._onAudioOutputDeviceChanged),super.dispose()}_sendMuteStatus(t){this.conference&&this.conference._setTrackMuteStatus(this,t)&&this.conference.room.sendPresence()}getCameraFacingMode(){if(this.isVideoTrack()&&this.videoType===rw.CAMERA){var t,i;let n=null==(t=(i=this.track).getSettings)?void 0:t.call(i);return n&&"facingMode"in n?n.facingMode:void 0!==this._facingMode?this._facingMode:rP.USER}}getCaptureResolution(){return this.videoType!==rw.CAMERA&&nf.isWebKitBased()?this.getHeight():this.resolution}getDeviceId(){return this._realDeviceId||this.deviceId}getDuration(){return Date.now()/1e3-this.metadata.timestamp/1e3}getParticipantId(){var t;return null==(t=this.conference)?void 0:t.myUserId()}getSourceName(){return this._sourceName}getSsrc(){return this._ssrc}isEnded(){return this.isVideoTrack()&&this.isMuted()?this._trackEnded:"ended"===this.getTrack().readyState||this._trackEnded}isLocal(){return!0}isMuted(){var t,i;return!this.stream||!(!this.isVideoTrack()||this.isActive())||(null!=(t=this._streamEffect)&&t.isMuted?this._streamEffect.isMuted():!(null!=(i=this.track)&&i.enabled))}isReceivingData(){return!(!this.isVideoTrack()||!this.isMuted()&&!this._stopStreamInProgress&&this.videoType!==rw.DESKTOP)||!!this.stream&&(this._effectEnabled?this._originalStream:this.stream).getTracks().some(t=>!("readyState"in t&&"live"!==t.readyState||"muted"in t&&!0===t.muted))}mute(){return this._queueSetMuted(!0)}onByteSentStatsReceived(t,i){i>0&&(this._hasSentData=!0);let n=t.getConnectionState();this._testDataSent&&"connected"===n&&(setTimeout(()=>{this._hasSentData||(oY.warn(`${this} 'bytes sent' <= 0: ${i}`),n$.analytics.sendEvent(na.NO_BYTES_SENT,{media_type:this.getType()}))},3e3),this._testDataSent=!1)}setConference(t){this.conference=t}setEffect(t){if(void 0===this._streamEffect&&void 0===t)return Promise.resolve();if(void 0!==t&&!t.isEnabled(this))return Promise.reject(Error("Incompatible effect instance!"));if(!0===this._setEffectInProgress)return Promise.reject(Error("setEffect already in progress!"));if(this.isMuted()&&!this.isAudioTrack())return this._streamEffect=t,Promise.resolve();let i=this.conference;return i?(this._setEffectInProgress=!0,i._removeLocalTrackFromPc(this).then(()=>(this._switchStreamEffect(t),this.isVideoTrack()&&this.containers.forEach(t=>{oJ.attachMediaStream(t,this.stream).catch(()=>{oY.error(`Attach media failed for ${this} when trying to set effect.`)})}),i._addLocalTrackToPc(this))).then(()=>{this._setEffectInProgress=!1}).catch(t=>{throw this._setEffectInProgress=!1,this._switchStreamEffect(),oY.error("Failed to switch to the new stream!",t),t})):(this._switchStreamEffect(t),this.isVideoTrack()&&this.containers.forEac
13h(t=>{oJ.attachMediaStream(t,this.stream).catch(()=>{oY.error(`Attach media failed for ${this} when trying to set effect.`)})}),Promise.resolve())}setSourceName(t){this._sourceName=t}setSsrc(t){nO(t)&&(this._ssrc=t)}stopStream(){this._stopStreamInProgress=!0;try{oJ.stopMediaStream(this.stream)}finally{this._stopStreamInProgress=!1}}toString(){return`LocalTrack[${this.rtcId},${this.getType()}]`}unmute(){return this._queueSetMuted(!1)}async applyConstraints(t){var i,n,r;let o,s,a=this.getType();if(!this.isAudioTrack())throw Error(`Media ${a} is not supported, track must be audio`);let d="function"==typeof(null==(i=this._streamEffect)?void 0:i.setMuted);if(this._streamEffect&&!d)throw Error(`Cannot apply constraints while the effect ${JSON.stringify(this._streamEffect)} is active`);let c=!!this.conference;c&&((o=this.conference.getAudioAnalyser())&&(oY.debug(`Removing track ${this} from audio analyser`),o._trackRemoved(this)),oY.debug(`Removing track ${this} from conference`),await this.conference._removeLocalTrackFromPc(this));let l=this.isMuted();d&&this._stopStreamEffect(),this.stopStream();let u=this.track.getSettings(),h=null==u?void 0:u.deviceId,p=a===nx.AUDIO?"micDeviceId":"cameraDeviceId";try{oY.debug(`applyConstraints for track ${this} with constraints: ${JSON.stringify(t)}`);let i={...u,...t};if(null==(r=s=oK(await oJ.obtainAudioAndVideoPermissions({constraints:{[a]:i},...h&&{[p]:h},devices:[a]}),1)[0])||!r.stream)throw new ru(n8.CONSTRAINT_FAILED)}catch(i){oY.error(`applyConstraints failed for track ${this} with constraints: ${JSON.stringify(t)}: `,i),s=oK(await oJ.obtainAudioAndVideoPermissions({constraints:{[a]:u},...h&&{[p]:h},devices:[a]}),1)[0]}if(null==(n=s)||!n.stream)throw new ru(n8.GENERAL);oY.debug("Setting updated stream and track"),this._setStream(s.stream),this.track=s.track,d&&this._startStreamEffect(this._streamEffect),l&&this._setMuted(!0),c&&(oY.debug(`Adding track ${this} to conference`),await this.conference._addLocalTrackToPc(this),o&&(oY.debug(`Adding track ${this} to audio analyser`),o._trackAdded(this)))}}var oX=n(330);let oZ=function(t){return t.AV1="av1",t.H264="h264",t.OPUS="opus",t.RED="red",t.ULPFEC="ulpfec",t.VP8="vp8",t.VP9="vp9",t}({}),o0=function(t){return t.INACTIVE="inactive",t.RECVONLY="recvonly",t.SENDONLY="sendonly",t.SENDRECV="sendrecv",t}({}),o1=function(t){return t.PEER_MUTED_CHANGED="signaling.peerMuted",t.PEER_VIDEO_TYPE_CHANGED="signaling.peerVideoType",t.SOURCE_MUTED_CHANGED="signaling.sourceMuted",t.SOURCE_UPDATED="signaling.sourceUpdated",t.SOURCE_VIDEO_TYPE_CHANGED="signaling.sourceVideoType",t}({});function o2(t,i,n){return`${t}-${i.substring(0,1)}${n}`}function o6(t){let i=t.lastIndexOf("-")+1;if(i<=0)throw Error(`Invalid source name: ${t}`);let n=t.substr(i,1);if("v"===n)return nx.VIDEO;if("a"===n)return nx.AUDIO;throw Error(`Invalid source name: ${t}`)}function o8(t){let i=t.split("-"),n=Number(i[i.length-1].substring(1));if(!nO(n))throw Error(`Failed to parse track idx for source name: ${t}`);return n}class o5 extends rI{getPeerMediaInfo(t,i,n){throw Error("not implemented")}getPeerSourceInfo(t,i){throw Error("not implemented")}getSSRCOwner(t){throw Error("not implemented")}getTrackSourceName(t){throw Error("not implemented")}removeSSRCOwners(t){}setSSRCOwner(t,i,n){}setTrackMuteStatus(t,i){}setTrackVideoType(t,i){}updateSsrcOwnersOnLeave(t){}}let o4=[{rid:"1",scaleFactor:4},{rid:"2",scaleFactor:2},{rid:"3",scaleFactor:1}],o9=function(t){return t.FID="FID",t.SIM="SIM",t}({}),o7={av1:{maxBitratesVideo:{fullHd:2e6,high:1e6,low:1e5,none:0,ssHigh:25e5,standard:3e5,ultraHd:4e6},scalabilityModeEnabled:nf.supportsScalabilityModeAPI(),useKSVC:nf.supportsSVC(),useSimulcast:!nf.supportsSVC()},h264:{maxBitratesVideo:{fullHd:4e6,high:2e6,low:4e5,none:0,ssHigh:25e5,standard:8e5,ultraHd:8e6},scalabilityModeEnabled:nf.supportsScalabilityModeAPI()},vp8:{maxBitratesVideo:{fullHd:3e6,high:15e5,low:2e5,none:0,ssHigh:25e5,standard:5e5,ultraHd:6e6},scalabilityModeEnabled:!1},vp9:{maxBitratesVideo:{fullHd:25e5,high:12e5,low:1e5,none:0,ssHigh:25e5,standard:3e5,ultraHd:5e6},scalabilityModeEnabled:nf.supportsScalabilityModeAPI(),useKSVC:nf.supportsSVC(),useSimulcast:!nf.supportsSVC()}},o3={camera:[oZ.AV1,oZ.VP9,oZ.VP8],desktop:[oZ.VP9,oZ.VP8,oZ.AV1]},se=[{height:2160,level:"ultraHd"},{height:1080,level:"fullHd"},{height:720,level:"high"},{height:540,level:"standard"},{height:480,level:"standard"},{height:360,level:"standard"},{height:270,level:"low"},{height:180,level:"low"},{height:90,level:"low"},{height:0,level:"none"}],st=function(t){return t.FULL="fullHd",t.HIGH="high",t.LOW="low",t.NONE="none",t.STANDARD="standard",t.ULTRA="ultraHd",t}({});function si(t){return parseInt(t.ssrcs.split(" ")[0],10)}function sn(t){return parseInt(t.ssrcs.split(" ")[1],10)}function sr(t){return t.ssrcs?t.ssrcs.map(t=>
13t.id).filter((t,i,n)=>n.indexOf(t)===i).length:0}class so{constructor(t){if(!t)throw Error("mLine is undefined");this._mLine=t}get ssrcs(){return this._mLine.ssrcs||(this._mLine.ssrcs=[]),this._mLine.ssrcs}set ssrcs(t){this._mLine.ssrcs=t}get direction(){return this._mLine.direction}set direction(t){this._mLine.direction=t}get ssrcGroups(){return this._mLine.ssrcGroups||(this._mLine.ssrcGroups=[]),this._mLine.ssrcGroups}set ssrcGroups(t){this._mLine.ssrcGroups=t}getSSRCAttrValue(t,i){let n=this.ssrcs.find(n=>n.id===t&&n.attribute===i);return null==n?void 0:n.value}removeSSRC(t){var i;null!=(i=this._mLine.ssrcs)&&i.length&&(this._mLine.ssrcs=this._mLine.ssrcs.filter(i=>i.id!==t))}addSSRCAttribute(t){this.ssrcs.push(t)}findGroup(t,i){return this.ssrcGroups.find(n=>n.semantics===t&&(!i||i===n.ssrcs))}findGroups(t){return this.ssrcGroups.filter(i=>i.semantics===t)}findGroupByPrimarySSRC(t,i){return this.ssrcGroups.find(n=>n.semantics===t&&si(n)===i)}getSSRCCount(){return sr(this._mLine)}containsAnySSRCGroups(){return void 0!==this._mLine.ssrcGroups}getPrimaryVideoSsrc(){let t=this._mLine.type;if("video"!==t)throw Error(`getPrimarySsrc doesn't work with '${t}'`);if(1===sr(this._mLine))return this._mLine.ssrcs[0].id;if(this._mLine.ssrcGroups){let t=this.findGroup(o9.SIM);if(t)return si(t);let i=this.findGroup(o9.FID);if(i)return si(i);let n=this.findGroup("FEC-FR");if(n)return si(n)}}getRtxSSRC(t){let i=this.findGroupByPrimarySSRC(o9.FID,t);return i&&sn(i)}getSSRCs(){return this.ssrcs.map(t=>t.id).filter((t,i,n)=>n.indexOf(t)===i)}getPrimaryVideoSSRCs(){let t=this._mLine.type;if("video"!==t)throw Error(`getPrimaryVideoSSRCs doesn't work with ${t}`);let i=this.getSSRCs();for(let t of this.ssrcGroups)if(t.semantics===o9.FID||"FEC-FR"===t.semantics){let n=sn(t);i.splice(i.indexOf(n),1)}return i}removeGroupsWithSSRC(t){this._mLine.ssrcGroups&&(this._mLine.ssrcGroups=this._mLine.ssrcGroups.filter(i=>-1===i.ssrcs.indexOf(`${t}`)))}removeGroupsBySemantics(t){this._mLine.ssrcGroups&&(this._mLine.ssrcGroups=this._mLine.ssrcGroups.filter(i=>i.semantics!==t))}addSSRCGroup(t){this.ssrcGroups.push(t)}}class ss{constructor(t){this.parsedSDP=oX.parse(t)}selectMedia(t){let i=this.parsedSDP.media.filter(i=>i.type===t).map(t=>new so(t));return null!=i?i:null}toRawSDP(){return oX.write(this.parsedSDP)}}function sa(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return sd(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?sd(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 14In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function sd(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}class sc{constructor(t,i){this._tpc=t,this._localEndpointId=i}_transformMediaIdentifiers(t,i){var n,r,o;let s=t._mLine.type,a=t._mLine.direction,d=[...new Set(null==(n=t._mLine.ssrcs)?void 0:n.map(t=>t.id))],c,l=null==(r=t._mLine.msid)?void 0:r.split(" ")[1];if(i.size){let n=d.slice().sort();for(let t of i.entries()){var u,h=sa(t,2);let i=h[0];ir(n,[...h[1].ssrcs].sort())&&(c=i)}for(let n of d)if((a===o0.SENDONLY||a===o0.SENDRECV)&&c){let r=t.ssrcs.find(t=>t.id===n&&"msid"===t.attribute);r&&(l=r.value.split(" ")[1]);let o=`${i.get(c).msid}-${this._tpc.id} ${l}-${this._tpc.id}`,a=t.ssrcs.find(t=>t.id===n&&"msid"===t.attribute);a?a.value=o:t.ssrcs.push({attribute:"msid",id:n,value:o}),t.ssrcs.push({attribute:"name",id:n,value:c});
14let d=null==(u=this._tpc.getLocalVideoTracks().find(t=>t.getSourceName()===c))?void 0:u.getVideoType();s===nx.VIDEO&&d&&t.ssrcs.push({attribute:"videoType",id:n,value:d})}}t.ssrcs=t.ssrcs.filter(t=>"label"!==t.attribute&&"mslabel"!==t.attribute),nf.isFirefox()&&(t.ssrcs=t.ssrcs.filter(t=>"cname"!==t.attribute));let p=null==(o=t._mLine.mid)?void 0:o.toString(),m=p&&this._tpc._midsWithSentTrack.has(p);!nf.isFirefox()||a!==o0.RECVONLY&&a!==o0.INACTIVE||m||(t.ssrcs=void 0,t.ssrcGroups=void 0)}transformStreamIdentifiers(t,i){var n;if(null==t||!t.sdp||!t.type)return t;let r=new ss(t.sdp),o=null==(n=r.selectMedia(nx.AUDIO))?void 0:n[0];o&&this._transformMediaIdentifiers(o,i);let s=r.selectMedia(nx.VIDEO);if(s&&Array.isArray(s))for(let t of s)this._transformMediaIdentifiers(t,i);return{sdp:r.toRawSDP(),type:t.type}}}let sl=(0,m.getLogger)("sdp:SDPUtils"),su={buildICECandidate(t){let i=[`a=candidate:${t.foundation}`,t.component,t.protocol,t.priority,t.ip,t.port,"typ",t.type].join(" ");switch(i+=" ",t.type){case"srflx":case"prflx":case"relay":t.hasOwnAttribute("rel-addr")&&t.hasOwnAttribute("rel-port")&&(i+="raddr",i+=" ",i+=t["rel-addr"],i+=" ",i+="rport",i+=" ",i+=t["rel-port"],i+=" ")}return t.hasOwnAttribute("tcptype")&&(i+="tcptype",i+=" ",i+=t.tcptype,i+=" "),i+="generation",i+=" ",i+=t.hasOwnAttribute("generation")?t.generation:"0"},buildICEPwd:t=>`a=ice-pwd:${t}`,buildICEUfrag:t=>`a=ice-ufrag:${t}`,buildMLine:t=>`m=${t.media} ${t.port} ${t.proto} ${t.fmt.join(" ")}`,buildRTPMap(t){let i=`a=rtpmap:${t.getAttribute("id")} ${t.getAttribute("name")}/${t.getAttribute("clockrate")}`;return t.getAttribute("channels")&&"1"!==t.getAttribute("channels")&&(i+=`/${t.getAttribute("channels")}`),i},candidateFromJingle(t){let i="a=candidate:";i+=t.getAttribute("foundation"),i+=" ",i+=t.getAttribute("component"),i+=" ";let n=t.getAttribute("protocol");switch(nf.isFirefox()&&"ssltcp"===n.toLowerCase()&&(n="tcp"),i+=n,i+=" ",i+=t.getAttribute("priority"),i+=" ",i+=t.getAttribute("ip"),i+=" ",i+=t.getAttribute("port"),i+=" ",i+="typ",i+=` ${t.getAttribute("type")}`,i+=" ",t.getAttribute("type")){case"srflx":case"prflx":case"relay":t.getAttribute("rel-addr")&&t.getAttribute("rel-port")&&(i+="raddr",i+=" ",i+=t.getAttribute("rel-addr"),i+=" ",i+="rport",i+=" ",i+=t.getAttribute("rel-port"),i+=" ")}return"tcp"===n.toLowerCase()&&(i+="tcptype",i+=" ",i+=t.getAttribute("tcptype"),i+=" "),i+="generation",i+=" ",i+=t.getAttribute("generation")||"0",`${i}\r 15`},candidateToJingle(t){if(0===t.indexOf("candidate:"))t=`a=${t}`;else if("a=candidate:"!==t.substring(0,12))return sl.warn("parseCandidate called with a line that is not a candidate line"),sl.warn(t),null;`\r 16`===t.substring(t.length-2)&&(t=t.substring(0,t.length-2));let i={},n=t.split(" ");if("typ"!==n[6])return sl.warn("did not find typ in the right place"),sl.warn(t),null;i.foundation=n[0].substring(12),i.component=n[1],i.protocol=n[2].toLowerCase(),i.priority=n[3],i.ip=n[4],i.port=n[5],i.type=n[7],i.generation="0";for(let t=8;t<n.length;t+=2)switch(n[t]){case"raddr":i["rel-addr"]=n[t+1];break;case"rport":i["rel-port"]=n[t+1];break;case"generation":i.generation=n[t+1];break;case"tcptype":i.tcptype=n[t+1];break;default:sl.debug(`not translating "${n[t]}" = "${n[t+1]}"`)}return i.network="1",i.id=Math.random().toString(36).substr(2,10),i},filterSpecialChars:t=>t?t.replace(/[\\\/\{,\}\+]/g,""):t,findLine(t,i,n){let r=t.split(`\r 17`);for(let t=0;t<r.length;t++)if(r[t].substring(0,i.length)===i)return r[t];if(n){r=n.split(`\r 18`);for(let t=0;t<r.length;t++)if(r[t].substring(0,i.length)===i)return r[t]}},findLines(t,i,n){let r=t.split(`\r 19`),o=[];for(let t=0;t<r.length;t++)r[t].substring(0,i.length)===i&&o.push(r[t]);if(o.length||!n)return o;r=n.split(`\r 20`);for(let t=0;t<r.length;t++)r[t].substring(0,i.length)===i&&o.push(r[t]);return o},generateSsrc:()=>i5.randomInt(1,0xffffffff),getSsrcAttribute(t,i,n){for(let r=0;r<t.ssrcs.length;++r){let o=t.ssrcs[r];if(o.id===i&&o.attribute===n)return o.value}},getUfrag(t){let i=t.split(` 21`).filter(t=>t.startsWith("a=ice-ufrag:"));if(i.length>0)return i[0].substr(12)},iceparams(t,i){let n,r,o=null;return(r=su.findLine(t,"a=ice-ufrag:",i))&&(n=su.findLine(t,"a=ice-pwd:",i))&&(o={pwd:su.parseICEPwd(n),ufrag:su.parseICEUfrag(r)}),o},parseCrypto(t){let i={},n=t.substring(9).split(" ");return i.tag=n.shift(),i["crypto-suite"]=n.shift(),i["key-params"]=n.shift(),n.length&&(i["session-params"]=n.join(" ")),i},parseExtmap(t){let i=t.substr(9).split(" "),n={};return n.value=i.shift(),-1===n.value.indexOf("/")?n.direction="both":(n.direction=n.value.substr(n.value.indexOf("/")+1),n.value=n.value.substr(0,n.value.indexOf("/"))),n.uri=i.shift(),n.params=i,n},parseFingerprint(t){let i={},n=t.substring(14).split(" ");return i.hash=n.shift(),i.fingerprint=n.shift(),i},parseFmtp(t){let i=[],n=t.split(" ");n.shift(),n=n.join(" ").split(";");for(let t=0;t<n.length;t++){let r=n[t].split("=")[0];for(;r.length&&" "===r[0];)r=r.substring(1);let o=n[t].split("=")[1];r&&o?i.push({name:r,value:o}):r&&i.push({name:"",value:r})}return i},parseGroupSsrcs:t=>t.ssrcs.split(" ").map(t=>parseInt(t,10)),parseICECandidate(t){let i={},n=t.split(" ");i.foundation=n[0].substring(12),i.component=n[1],i.protocol=n[2].toLowerCase(),i.priority=n[3],i.ip=n[4],i.port=n[5],i.type=n[7],i.generation="0";for(let t=8;t<n.length;t+=2)switch(n[t]){case"raddr":i["rel-addr"]=n[t+1];break;case"rport":i["rel-port"]=n[t+1];break;case"generation":i.generation=n[t+1];break;case"tcptype":i.tcptype=n[t+1];break;default:sl.debug(`parseICECandidate not translating "${n[t]}" = "${n[t+1]}"`)}return i.network="1",i.id=Math.random().toString(36).substr(2,10),i},parseICEPwd:t=>t.substring(10),parseICEUfrag:t=>t.substring(12),parseMID:t=>t.substring(6),parseMLine(t){let i={},n=t.substring(2).split(" ");return i.media=n.shift(),i.port=n.shift(),i.proto=n.shift(),""===n[n.length-1]&&n.pop(),i.fmt=n,i},parseMSIDAttribute(t){let i=t.find(t=>t.indexOf(" msid:")>0);if(!i)return;let n=i.substring(i.indexOf(" msid:")+6);return su.filterSpecialChars(n)},parsePrimaryVideoSsrc(t){var i;let n=t.ssrcs.map(t=>
21t.id).filter((t,i,n)=>n.indexOf(t)===i).length,r=(null==t||null==(i=t.ssrcGroups)?void 0:i.length)||0;if(n>1&&0===r)return;let o=null;if(1===n)o=t.ssrcs[0].id;else if(2===n){let i=t.ssrcGroups.find(t=>t.semantics===o9.FID);i&&(o=parseInt(i.ssrcs.split(" ")[0],10))}else if(n>=3){let i=t.ssrcGroups.find(t=>t.semantics===o9.SIM);i&&(o=parseInt(i.ssrcs.split(" ")[0],10))}return o},parseRTCPFB(t){let i=t.substr(10).split(" "),n={};return n.pt=i.shift(),n.type=i.shift(),n.params=i,n},parseRTPMap(t){let i={},n=t.substring(9).split(" ");return i.id=n.shift(),i.name=(n=n[0].split("/")).shift(),i.clockrate=n.shift(),i.channels=n.length?n.shift():"1",i},parseSCTPMap(t){let i=t.substring(10).split(" ");return[i[0],i[1],i.length>2?i[2]:null]},parseSCTPPort:t=>t.substring(12),parseSSRC(t){let i=new Map,n=t.split(`\r 22`);for(let t=0;t<n.length;t++)if("a=ssrc:"===n[t].substring(0,7)){let r=n[t].split("a=ssrc:")[1].split(" ")[0];i.get(r)||i.set(r,[]),i.get(r).push(n[t])}return i},parseSSRCGroupLine(t){let i=t.substr(13).split(" ");return{semantics:i.shift(),ssrcs:i}},parseSourceNameLine(t){let i=t.find(t=>t.indexOf(" name:")>0);return null==i?void 0:i.substring(i.indexOf(" name:")+6)},parseVideoTypeLine(t){let i=" videoType:",n=t.find(t=>t.indexOf(i)>0);return null==n?void 0:n.substring(n.indexOf(i)+11)},preferCodec(t,i){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!t||!i)return;let r=t.rtp.filter(t=>t.codec&&t.codec.toLowerCase()===i.toLowerCase()).map(t=>t.payload);if(r){if(n&&i===oZ.H264)for(let i of r.filter(i=>{let n=t.fmtp.find(t=>t.payload===i);return!!n&&n.config.includes("packetization-mode=0")}).reverse()){let t=r.findIndex(t=>t===i);t>=0&&(r.splice(t,1),r.unshift(i))}let o=t.payloads.toString().split(" ").map(t=>parseInt(t,10));for(let t of r.reverse()){let i=o.indexOf(t);o.splice(i,1),o.unshift(t)}t.payloads=o.join(" ")}else sl.error(`No matching RTP payload type found for ${i}, failed to set preferred codecs`)},stripCodec(t,i){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!t||!i)return;let r=new Map,o=[];for(let s of t.rtp)s.codec&&s.codec.toLowerCase()===i.toLowerCase()&&(n?r.set(s.payload,s.codec):o.push(s.payload));if(n&&(o=t.fmtp.filter(t=>{let i=r.get(t.payload);return!!i&&(i.toLowerCase()===oZ.VP9?!t.config.includes("profile-id=0"):!t.config.includes("profile-level-id=42"))}).map(t=>t.payload)),o.length>0){let i=o.map(t=>`apt=${t}`),n=t.fmtp.filter(t=>-1!==i.indexOf(t.config));o.push(...n.map(t=>t.payload));let r=t.payloads.toString().split(" ").map(Number).filter(t=>-1===o.indexOf(t));0===r.length?(t.port=0,t.direction=o0.INACTIVE,t.payloads="*"):t.payloads=r.join(" "),t.rtp=t.rtp.filter(t=>-1!==r.indexOf(t.payload)),t.fmtp=t.fmtp.filter(t=>-1!==r.indexOf(t.payload)),t.rtcpFb&&(t.rtcpFb=t.rtcpFb.filter(t=>-1!==r.indexOf(Number(t.payload))))}}},sh=su,sp=(0,m.getLogger)("sdp:RtxModifier");function sm(t,i,n){let r=i.id,o=i.msid,s=i.cname,a=t.getRtxSSRC(r);a!==n&&(a&&(t.removeSSRC(a),t.removeGroupsWithSSRC(a)),t.addSSRCAttribute({attribute:"cname",id:n,value:s}),o&&t.addSSRCAttribute({attribute:"msid",id:n,value:o}),t.addSSRCGroup({semantics:o9.FID,ssrcs:`${r} ${n}`}))}class sg{constructor(){this.correspondingRtxSsrcs=new Map}clearSsrcCache(){this.correspondingRtxSsrcs.clear()}
22setSsrcCache(t){sp.debug("Setting ssrc cache to ",t),this.correspondingRtxSsrcs=t}modifyRtxSsrcs(t){let i=!1,n=new ss(t),r=n.selectMedia(nx.VIDEO);if(null==r||!r.length)return sp.debug(`No 'video' media found in the sdp: ${t}`),t;for(let t of r)this.modifyRtxSsrcs2(t)&&(i=!0);return i?n.toRawSDP():t}modifyRtxSsrcs2(t){if(t.direction===o0.RECVONLY||1>t.getSSRCCount())return!1;for(let i of t.getPrimaryVideoSSRCs()){let n=t.getSSRCAttrValue(i,"msid"),r=t.getSSRCAttrValue(i,"cname"),o=this.correspondingRtxSsrcs.get(i);o||(o=t.getRtxSSRC(i)||sh.generateSsrc(),this.correspondingRtxSsrcs.set(i,o)),sm(t,{cname:r,id:i,msid:n},o)}return!0}stripRtx(t){let i=new ss(t),n=i.selectMedia(nx.VIDEO);if(null==n||!n.length)return sp.debug(`No 'video' media found in the sdp: ${t}`),t;for(let t of n)if(t.direction!==o0.RECVONLY&&t.getSSRCCount()&&t.containsAnySSRCGroups()){let i=t.findGroups(o9.FID);for(let n of(t.removeGroupsBySemantics(o9.FID),i)){let i=sn(n);t.removeSSRC(i)}}return i.toRawSDP()}}let sf=function(t){return t.BUNDLE_MEDIA="urn:xmpp:jingle:apps:grouping:0",t.DTLS_SRTP="urn:xmpp:jingle:apps:dtls:0",t.ICE_UDP_TRANSPORT="urn:xmpp:jingle:transports:ice-udp:1",t.JINGLE="urn:xmpp:jingle:1",t.RAYO="urn:xmpp:rayo:client:1",t.RTP_AUDIO="urn:xmpp:jingle:apps:rtp:audio",t.RTP_FEEDBACK="urn:xmpp:jingle:apps:rtp:rtcp-fb:0",t.RTP_HEADER_EXTENSIONS="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0",t.RTP_MEDIA="urn:xmpp:jingle:apps:rtp:1",t.RTP_VIDEO="urn:xmpp:jingle:apps:rtp:video",t.SCTP_DATA_CHANNEL="urn:xmpp:jingle:transports:dtls-sctp:1",t.SOURCE_ATTRIBUTES="urn:xmpp:jingle:apps:rtp:ssma:0",t}({}),s_=(0,m.getLogger)("util:XMLUtils");function sv(t,i){if(!t)return[];try{return Array.from(t.querySelectorAll(i))}catch(t){return s_.error("findAll error:",i,t),[]}}function sy(t,i){return t&&i?t.getAttribute(i):null}function sE(t){return t&&t.textContent||""}function sS(t,i){if(!t)return!1;try{return null!==t.querySelector(i)}catch(t){return s_.error("exists error:",i,t),!1}}function sb(t,i){if(!t)return null;try{return t.querySelector(i)}catch(t){return s_.error("findFirst error:",i,t),null}}function sC(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return sD(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?sD(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 23In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function sD(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}class sT{constructor(t){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._updateSessionAndMediaSections(t),this.isP2P=i,this.raw=this.session+this.media.join(""),this.failICE=!1,this.removeTcpCandidates=!1,this.removeUdpCandidates=!1}_adjustMsidSemantic(t,i,n){return i===nx.AUDIO||!nf.isChromiumBased()||nf.isEngineVersionGreaterThan(116)||2===t.split(" ").length?t:`${t} ${t}-${n}`}_updateSessionAndMediaSections(t){let i="string"==typeof t?t.split(`\r 24m=`):this.raw.split(`\r 25m=`);for(let t=1,n=i.length;t<n;t++){let r=`m=${i[t]}`;t!==n-1&&(r+=`\r 26`),i[t]=r}this.session=`${i.shift()}\r 27`,this.media=i}updateRemoteSources(t){let i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=[];for(let r of t.values()){let t,o=r.mediaType,s=r.msid,a=r.ssrcList,d=r.groups;if(i)t=this.media.findIndex(t=>t.includes(`m=${o}`)&&!t.includes("a=ssrc")),this.isP2P&&-1!==t||(this.addMlineForNewSource(o,!0),t=this.media.length-1);else if(-1===(t=this.media.findIndex(t=>t.includes(`a=ssrc:${a[0]}`))))continue;if(n.push(t),i){let i=this._adjustMsidSemantic(s,o,t);a.forEach(n=>{this.media[t]+=`a=ssrc:${n} msid:${i}\r 28`}),null==d||d.forEach(i=>
28{this.media[t]+=`a=ssrc-group:${i.semantics} ${i.ssrcs.join(" ")}\r 29`})}else if(a.forEach(i=>{this.media[t]=this.media[t].replace(RegExp(`a=ssrc:${i}.*\r 30`,"g"),"")}),null==d||d.forEach(i=>{this.media[t]=this.media[t].replace(RegExp(`a=ssrc-group:${i.semantics}.*\r 31`,"g"),"")}),!this.isP2P){let i=sh.parseMLine(this.media[t].split(`\r 32`)[0]),n=i.media,r=i.port;this.media[t]=this.media[t].replace(`a=${o0.SENDONLY}`,`a=${o0.INACTIVE}`),this.media[t]=this.media[t].replace(`m=${n} ${r}`,`m=${n} 0`)}this.raw=this.session+this.media.join("")}return n}addMlineForNewSource(t){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.media.length,r=oX.parse(this.raw),o=rA(r.media.find(i=>i.type===t));o.mid=n.toString(),o.direction=i?o0.SENDONLY:o0.RECVONLY,o.msid=void 0,o.ssrcs=void 0,o.ssrcGroups=void 0,r.media=[...r.media,o],r.groups.forEach(t=>{"BUNDLE"===t.type&&(t.mids=[...t.mids.split(" "),n].join(" "))}),this.raw=oX.write(r),this._updateSessionAndMediaSections()}fromJingle(t){let i=Date.now();this.raw=`v=0\r 33o=- ${i} 2 IN IP4 0.0.0.0\r 34s=-\r 35t=0 0\r 36`;let n=sv(t,`:scope>group[*|xmlns='${sf.BUNDLE_MEDIA}']`);if(this.isP2P&&n.length&&n.forEach(t=>{var i;let n=null==(i=sv(t,":scope>content"))?void 0:i.map(t=>t.getAttribute("name"));(null==n?void 0:n.length)>0&&(this.raw+=`a=group:${t.getAttribute("semantics")||t.getAttribute("type")} ${n.join(" ")}\r 37`)}),sv(t,`:scope>content>transport[*|xmlns='${sf.ICE_UDP_TRANSPORT}']>fingerprint[*|xmlns='${sf.DTLS_SRTP}']`).some(t=>"true"===sy(t,"cryptex"))&&(this.raw+=`a=cryptex\r 38`),this.session=this.raw,sv(t,":scope>content").forEach(t=>{let i=this.jingle2media(t);this.media.push(i)}),this.raw=this.session+this.media.join(""),this.isP2P)return;let r=oX.parse(this.raw),o=[];r.media.forEach(t=>{var i;let n=t.type;if(n===nx.APPLICATION||null==(i=t.ssrcs)||!i.length){let i=rA(t);return i.mid=o.length.toString(),void o.push(i)}t.ssrcs.forEach((i,r)=>{var s;if(o.some(t=>{var n;return null==(n=t.ssrcs)?void 0:n.some(t=>t.id===i.id)}))return;let a=rA(t);a.ssrcs=[],a.ssrcGroups=[],a.mid=o.length.toString(),a.bundleOnly=void 0,a.direction=r?"sendonly":"sendrecv";let d=i.id.toString(),c=null==(s=t.ssrcGroups)?void 0:s.find(t=>t.ssrcs.includes(d));if(c){"msid"===i.attribute&&(i.value=this._adjustMsidSemantic(i.value,n,parseInt(a.mid,10))),a.ssrcs.push(i);let r=c.ssrcs.split(" ").find(t=>t!==d);if(r){let i=t.ssrcs.find(t=>t.id.toString()===r);"msid"===i.attribute&&(i.value=this._adjustMsidSemantic(i.value,n,parseInt(a.mid,10))),a.ssrcs.push(i)}a.ssrcGroups.push(c)}else a.ssrcs.push(i);o.push(a)})}),r.media=o;let s=[];o.forEach(t=>{s.push(t.mid)}),n.length&&(r.groups=[{mids:s.join(" "),type:"BUNDLE"}]),r.msidSemantic={semantic:"WMS",token:"*"},r.origin.sessionVersion++,this.raw=oX.write(r),this._updateSessionAndMediaSections()}getMediaSsrcMap(){let t=new Map;return this.media.forEach((i,n)=>{let r=sh.findLine(i,"a=mid:"),o="string"==typeof r?sh.parseMID(r):"",s=sh.parseMLine(i.split(`\r 39`)[0]);if(sh.findLine(i,`a=${o0.RECVONLY}`)&&nf.isFirefox())return;let a={mediaType:s.media,mediaindex:n,mid:o,ssrcGroups:[],ssrcs:{}};sh.findLines(i,"a=ssrc:").forEach(t=>{let i=t.substring(7).split(" ")[0];a.ssrcs[i]||(a.ssrcs[i]={lines:[],ssrc:i}),a.ssrcs[i].lines.push(t)}),sh.findLines(i,"a=ssrc-group:").forEach(t=>{let i=t.indexOf(" "),n=t.substr(0,i).substr(13),r=t.substr(14+n.length).split(" ");r.length&&a.ssrcGroups.push({semantics:n,ssrcs:r})}),t.set(n,a)}),t}jingle2media(t){let i=sb(t,":scope>description"),n=sb(t,`:scope>transport[*|xmlns='${sf.ICE_UDP_TRANSPORT}']`),r="",o=sb(n,`:scope>sctpmap[*|xmlns='${sf.SCTP_DATA_CHANNEL}']`),s={media:sy(i,"media")},a=sy(t,"name");if(s.port="9","rejected"===sy(t,"senders")&&(s.port="0"),sS(n,`:scope>fingerprint[*|xmlns='${sf.DTLS_SRTP}']`)?s.proto=o?"UDP/DTLS/SCTP":"UDP/TLS/RTP/SAVPF":s.proto="UDP/TLS/RTP/SAVPF",o?(r+=`m=application ${s.port} UDP/DTLS/SCTP webrtc-datachannel\r 40`,r+=`a=sctp-port:${sy(o,"number")}\r 41`,r+=`a=max-message-size:262144\r 42`):(s.fmt=sv(i,":scope>payload-type").map(t=>sy(t,"id")),r+=`${sh.buildMLine(s)}\r 43`),r+=`c=IN IP4 0.0.0.0\r 44`,o||(r+=`a=rtcp:1 IN IP4 0.0.0.0\r 45`),n){let t=sy(n,"ufrag"),i=sy(n,"pwd");t&&(r+=`${sh.buildICEUfrag(t)}\r 46`),i&&(r+=`${sh.buildICEPwd(i)}\r 47`),sv(n,`:scope>fingerprint[*|xmlns='${sf.DTLS_SRTP}']`).forEach(t=>{r+=`a=fingerprint:${sy(t,"hash")} ${sE(t)}\r 48`;let i=sy(t,"setup");i&&(r+=`a=setup:${i}\r 49`)})}switch(n&&sv(n,":scope>candidate").forEach(t=>{let i=sy(t,"protocol");i="string"==typeof i?i.toLowerCase():"",this.removeTcpCandidates&&("tcp"===i||"ssltcp"===i)||this.removeUdpCandidates&&"udp"===i||(this.failICE&&t.setAttribute("ip","1.1.1.1"),r+=sh.candidateFromJingle(t))}),sy(t,"senders")){case"initiator":r+=`a=${o0.SENDONLY}\r 50`;break;case"responder":r+=`a=${o0.RECVONLY}\r 51`;break;case"none":r+=`a=${o0.INACTIVE}\r 52`;break;case"both":r+=`a=${o0.SENDRECV}\r 53`}r+=`a=mid:${a}
53\r 54`,sS(i,":scope>rtcp-mux")&&(r+=`a=rtcp-mux\r 55`),i&&(sv(i,":scope>payload-type").forEach(t=>{r+=`${sh.buildRTPMap(t)}\r 56`;let i=sv(t,":scope>parameter");i.length&&(r+=`a=fmtp:${sy(t,"id")} `,r+=i.map(t=>{let i=sy(t,"name");return(i?`${i}=`:"")+sy(t,"value")}).join(";"),r+=`\r 57`),r+=this.rtcpFbFromJingle(t,sy(t,"id"))}),r+=this.rtcpFbFromJingle(i,"*"),sv(i,`:scope>rtp-hdrext[*|xmlns='${sf.RTP_HEADER_EXTENSIONS}']`).forEach(t=>{r+=`a=extmap:${sy(t,"id")} ${sy(t,"uri")}\r 58`}),sS(i,`:scope>extmap-allow-mixed[*|xmlns='${sf.RTP_HEADER_EXTENSIONS}']`)&&(r+=`a=extmap-allow-mixed\r 59`)),i&&sv(i,`:scope>ssrc-group[*|xmlns='${sf.SOURCE_ATTRIBUTES}']`).forEach(t=>{let i=sy(t,"semantics"),n=Array.from(t.children||[]).filter(t=>"source"===t.localName).map(t=>sy(t,"ssrc"));n.length&&(r+=`a=ssrc-group:${i} ${n.join(" ")}\r 60`)});let d="",c="";return i&&sv(i,`:scope>source[*|xmlns='${sf.SOURCE_ATTRIBUTES}']`).forEach(t=>{let i=sy(t,"ssrc"),n=!0,r="";sv(t,":scope>parameter").forEach(t=>{var o,d;let c=sy(t,"name"),l=sy(t,"value");l=sh.filterSpecialChars(l),r+=`a=ssrc:${i} ${c}`,"msid"===c&&(l=this._adjustMsidSemantic(l,s.media,a)),null!=(o=l)&&o.length&&(r+=`:${l}`),r+=`\r 61`,null!=(d=l)&&d.includes("mixedmslabel")&&(n=!1)}),n?d+=r:c+=r}),r+=c+d}rtcpFbFromJingle(t,i){let n="",r=sb(t,`:scope>rtcp-fb-trr-int[*|xmlns='${sf.RTP_FEEDBACK}']`);return r&&(n+="a=rtcp-fb:* trr-int ",n+=sy(r,"value")||"0",n+=`\r 62`),sv(t,`:scope>rtcp-fb[*|xmlns='${sf.RTP_FEEDBACK}']`).forEach(t=>{n+=`a=rtcp-fb:${i} ${t.getAttribute("type")}`,t.hasAttribute("subtype")&&(n+=` ${t.getAttribute("subtype")}`),n+=`\r 63`}),n}rtcpFbToJingle(t,i,n){sh.findLines(this.media[t],`a=rtcp-fb:${n}`).forEach(t=>{let n=sh.parseRTCPFB(t);"trr-int"===n.type?i.c("rtcp-fb-trr-int",{value:n.params[0],xmlns:sf.RTP_FEEDBACK}):(i.c("rtcp-fb",{type:n.type,xmlns:sf.RTP_FEEDBACK}),n.params.length>0&&i.attrs({subtype:n.params[0]})),i.up()})}toJingle(t,i){return sh.findLines(this.session,"a=group:").forEach(i=>{let n=i.split(" ").shift().substr(8);t.c("group",{semantics:n,xmlns:sf.BUNDLE_MEDIA});let r=[nx.AUDIO,nx.VIDEO,"data"];this.isP2P&&(r=this.media.map(t=>{let i=sh.findLine(t,"a=mid:");return"string"==typeof i?sh.parseMID(i):""})),r.forEach(i=>t.c("content",{name:i}).up()),t.up()}),this.media.forEach((n,r)=>{let o=sh.parseMLine(n.split(`\r 64`)[0]),s=o.media===nx.APPLICATION?"data":o.media,a=!1,d=sh.findLine(n,"a=ssrc:",""),c=sh.findLine(n,`a=${o0.RECVONLY}`,"");for(let i of(d&&"string"==typeof d&&(a=d.substring(7).split(" ")[0]),sv(t.tree(),`content[name='${s}']`)))if(i.hasAttribute("creator")){if(a&&(!c||!nf.isFirefox())){let t=sb(i,"description");for(let i of sh.parseSSRC(n)){var l=sC(i,2);let n=l[0],r=l[1],o=sh.parseSourceNameLine(r),s=sh.parseVideoTypeLine(r),a=io.Strophe.xmlElement("source",{name:o,ssrc:n,videoType:s,xmlns:sf.SOURCE_ATTRIBUTES}),d=sh.parseMSIDAttribute(r);if(d){let t=io.Strophe.xmlElement("parameter",{name:"msid",value:d});a.append(t)}t.append(a)}sh.findLines(n,"a=ssrc-group:").forEach(i=>{let n=sh.parseSSRCGroupLine(i),r=n.semantics,o=n.ssrcs;if(o.length){let i=io.Strophe.xmlElement("ssrc-group",{semantics:r,xmlns:sf.SOURCE_ATTRIBUTES});for(let t of o){let n=io.Strophe.xmlElement("source",{ssrc:t});i.append(n)}t.append(i)}})}return}let u=sh.findLine(n,"a=mid:",""),h="string"==typeof u?sh.parseMID(u):"";if(t.c("content",{creator:i,name:this.isP2P?h:s}),s===nx.VIDEO&&"number"==typeof this.initialLastN&&t.c("initial-last-n",{value:this.initialLastN,xmlns:"jitsi:colibri2"}).up(),[nx.AUDIO,nx.VIDEO].includes(s)){if(t.c("description",{media:s,xmlns:sf.RTP_MEDIA}),o.fmt.forEach(i=>{let o=sh.findLine(n,`a=rtpmap:${i}`,"");if("string"==typeof o){t.c("payload-type",sh.parseRTPMap(o));let s=sh.findLine(n,`a=fmtp:${i}`,"");s&&"string"==typeof s&&sh.parseFmtp(s).forEach(i=>t.c("parameter",i).up()),this.rtcpFbToJingle(r,t,i),t.up()}}),a&&(!c||!nf.isFirefox())){for(let i of sh.parseSSRC(n)){var p=sC(i,2);let n=p[0],r=p[1],o=sh.parseSourceNameLine(r),s=sh.parseVideoTypeLine(r);t.c("source",{name:o,ssrc:n,videoType:s,xmlns:sf.SOURCE_ATTRIBUTES});let a=sh.parseMSIDAttribute(r);a&&(t.c("parameter").attrs({name:"msid",value:a}),t.up()),t.up()}sh.findLines(n,"a=ssrc-group:").forEach(i=>
64{let n=sh.parseSSRCGroupLine(i),r=n.semantics,o=n.ssrcs;o.length&&(t.c("ssrc-group",{semantics:r,xmlns:sf.SOURCE_ATTRIBUTES}),o.forEach(i=>t.c("source",{ssrc:i}).up()),t.up())})}let i=sh.findLines(n,"a=rid:");if(i.length&&nf.usesRidsForSimulcast()){let r=i.map(t=>t.split(":")[1].split(" ")[0]);r.forEach(i=>{t.c("source",{rid:i,xmlns:sf.SOURCE_ATTRIBUTES}),t.up()}),sh.findLine(n,"a=simulcast:")&&(t.c("rid-group",{semantics:o9.SIM,xmlns:sf.SOURCE_ATTRIBUTES}),r.forEach(i=>t.c("source",{rid:i}).up()),t.up())}sh.findLine(n,"a=rtcp-mux")&&t.c("rtcp-mux").up(),this.rtcpFbToJingle(r,t,"*"),sh.findLines(n,"a=extmap:",this.session).forEach(i=>{let n=sh.parseExtmap(i);if(t.c("rtp-hdrext",{id:n.value,uri:n.uri,xmlns:sf.RTP_HEADER_EXTENSIONS}),n.hasOwnProperty("direction"))switch(n.direction){case o0.SENDONLY:t.attrs({senders:"responder"});break;case o0.RECVONLY:t.attrs({senders:"initiator"});break;case o0.SENDRECV:t.attrs({senders:"both"});break;case o0.INACTIVE:t.attrs({senders:"none"})}t.up()}),sh.findLine(n,"a=extmap-allow-mixed",this.session)&&(t.c("extmap-allow-mixed",{xmlns:sf.RTP_HEADER_EXTENSIONS}),t.up()),t.up()}this.transportToJingle(r,t),sh.findLine(n,`a=${o0.SENDRECV}`)?t.attrs({senders:"both"}):sh.findLine(n,`a=${o0.SENDONLY}`)?t.attrs({senders:"initiator"}):sh.findLine(n,`a=${o0.RECVONLY}`)?t.attrs({senders:"responder"}):sh.findLine(n,`a=${o0.INACTIVE}`)&&t.attrs({senders:"none"}),"0"!==o.port||sh.findLine(n,"a=bundle-only",this.session)||t.attrs({senders:"rejected"}),t.up()}),t.up(),t}transportToJingle(t,i){i.c("transport");let n=sh.findLine(this.media[t],"a=sctp-port:",this.session),r=sh.findLine(this.media[t],"a=sctpmap:",this.session);if(n&&"string"==typeof n){let t=sh.parseSCTPPort(n);i.c("sctpmap",{number:t,protocol:"webrtc-datachannel",xmlns:sf.SCTP_DATA_CHANNEL}),i.attrs({streams:0}),i.up()}else if(r){let t=sh.parseSCTPMap(r);i.c("sctpmap",{number:t[0],protocol:t[1],xmlns:sf.SCTP_DATA_CHANNEL}),i.attrs({streams:t.length>2?t[2]:0}),i.up()}let o=sh.findLines(this.media[t],"a=fingerprint:",this.session),s=sh.findLine(this.media[t],"a=cryptex",this.session);o.forEach(n=>{let r=sh.parseFingerprint(n);r.xmlns=sf.DTLS_SRTP,i.c("fingerprint").t(r.fingerprint),delete r.fingerprint;let o=sh.findLine(this.media[t],"a=setup:",this.session);o&&"string"==typeof o&&(r.setup=o.substr(8)),s&&(r.cryptex="true"),i.attrs(r),i.up()});let a=sh.iceparams(this.media[t],this.session);a&&(a.xmlns=sf.ICE_UDP_TRANSPORT,i.attrs(a),sh.findLines(this.media[t],"a=candidate:",this.session).forEach(t=>{let n=sh.candidateToJingle(t);this.failICE&&(n.ip="1.1.1.1");let r=n&&"string"==typeof n.protocol?n.protocol.toLowerCase():"";this.removeTcpCandidates&&("tcp"===r||"ssltcp"===r)||this.removeUdpCandidates&&"udp"===r||i.c("candidate",n).up()})),i.up()}}class sx{constructor(){this._ssrcCache=new Map,this._numOfLayers=o4.length}_fillSsrcsFromCache(t){let i=t.mid,n=this._ssrcCache.get(i),r=this._parseSimLayers(t),o=this._getSsrcAttribute(t,r[0],"msid"),s=this._getSsrcAttribute(t,r[0],"cname");for(let i of(t.ssrcs=[],t.ssrcGroups=[],n))t.ssrcs.push({attribute:"msid",id:i,value:o}),t.ssrcs.push({attribute:"cname",id:i,value:s});return t.ssrcGroups.push({semantics:o9.SIM,ssrcs:n.join(" ")}),t}_generateNewSsrcsForSimulcast(t,i){let n=this._getSsrcAttribute(t,i,"cname"),r=this._getSsrcAttribute(t,i,"msid");r||(r=t.msid,t.ssrcs.forEach(i=>{t.ssrcs.push({attribute:"msid",id:i.id,value:r})}));let o=[];for(let i=0;i<this._numOfLayers-1;++i){let i=this._generateSsrc();t.ssrcs.push({attribute:"cname",id:i,value:n}),t.ssrcs.push({attribute:"msid",id:i,value:r}),o.push(i)}return t.ssrcGroups=t.ssrcGroups||[],t.ssrcGroups.push({semantics:o9.SIM,ssrcs:`${i} ${o.join(" ")}`}),t}_generateSsrc(){return Math.floor(0xffffffff*Math.random())}_getSsrcAttribute(t,i,n){var r;return null==(r=t.ssrcs)||null==(r=r.find(t=>Number(t.id)===i&&t.attribute===n))?void 0:r.value}_parseSimLayers(t){var i,n;let r=null==(i=t.ssrcGroups)?void 0:i.find(t=>t.semantics===o9.SIM);return r?r.ssrcs.split(" ").map(t=>Number(t)):null!=(n=t.ssrcs)&&n.length?[Number(t.ssrcs[0].id)]:null}mungeLocalDescription(t){if(null==t||!t.sdp)return t;let i=oX.parse(t.sdp);for(let t of i.media){var n,r,o,s;let i;if(t.direction===o0.RECVONLY||t.direction===o0.INACTIVE||t.type!==nx.VIDEO)continue;let a=t.mid,d=new Set(null==(n=t.ssrcs)?void 0:n.map(t=>
64t.id)),c=null!=(r=null==(o=t.ssrcGroups)?void 0:o.length)?r:0;if(!(0===d.size||d.size>2||2===d.size&&0===c)){if(1===d.size)i=Number(null==(s=t.ssrcs[0])?void 0:s.id);else{let n=t.ssrcGroups.find(t=>t.semantics===o9.FID);n&&(i=Number(n.ssrcs.split(" ")[0]))}if(this._ssrcCache.has(a))t=this._fillSsrcsFromCache(t);else{t=this._generateNewSsrcsForSimulcast(t,i);let n=this._parseSimLayers(t);this._ssrcCache.set(a,n)}}}return new RTCSessionDescription({sdp:oX.write(i),type:t.type})}}let sR=function(t){return t.ACTIVE="active",t.INACTIVE="inactive",t.INTERRUPTED="interrupted",t.RESTORING="restoring",t}({}),sA=(0,m.getLogger)("connectivity:TrackStreamingStatus");class sw{static _getNewStateForJvbMode(t,i,n,r){return n?sR.ACTIVE:nf.supportsVideoMuteOnConnInterrupted()||r?r?t?i?sR.INTERRUPTED:sR.RESTORING:sR.INACTIVE:sR.ACTIVE:t?sR.ACTIVE:sR.INACTIVE}static _getNewStateForP2PMode(t,i){return nf.supportsVideoMuteOnConnInterrupted()||i?t||!i?sR.ACTIVE:sR.INTERRUPTED:sR.ACTIVE}constructor(t,i,n,r){this.rtc=t,this.conference=i,this.track=n,this.restoringTimer=null,this.rtcMutedTimestamp=null,this.streamingStatusMap={},this.trackTimer=null,this._lastFramesDecoded=null,this._lastFramesDecodedAt=null,this._statsTrackFrozen=!1,this.outOfForwardedSourcesTimeout="number"==typeof r.outOfForwardedSourcesTimeout?r.outOfForwardedSourcesTimeout:500,this.p2pRtcMuteTimeout="number"==typeof r.p2pRtcMuteTimeout?r.p2pRtcMuteTimeout:2500,this.rtcMuteTimeout="number"==typeof r.rtcMuteTimeout?r.rtcMuteTimeout:1e4,sA.info(`RtcMuteTimeout set to: ${this.rtcMuteTimeout}`)}_getVideoFrozenTimeout(){let t=this.track.getSourceName();return this.rtc.isInForwardedSources(t)?this.rtcMuteTimeout:this.conference.isP2PActive()?this.p2pRtcMuteTimeout:this.outOfForwardedSourcesTimeout}init(){this._onP2PStatus=this.figureOutStreamingStatus.bind(this),this.conference.on(tT.P2P_STATUS,this._onP2PStatus),this._onUserLeft=this.onUserLeft.bind(this),this.conference.on(tT.USER_LEFT,this._onUserLeft),nf.supportsVideoMuteOnConnInterrupted()&&(this._onTrackRtcMuted=this.onTrackRtcMuted.bind(this),this.rtc.addListener(nJ.REMOTE_TRACK_MUTE,this._onTrackRtcMuted),this._onTrackRtcUnmuted=this.onTrackRtcUnmuted.bind(this),this.rtc.addListener(nJ.REMOTE_TRACK_UNMUTE,this._onTrackRtcUnmuted),this._onSignallingMuteChanged=this.onSignallingMuteChanged.bind(this),this.track.on(is.TRACK_MUTE_CHANGED,this._onSignallingMuteChanged),this._onTrackVideoTypeChanged=this.onTrackVideoTypeChanged.bind(this),this.track.on(is.TRACK_VIDEOTYPE_CHANGED,this._onTrackVideoTypeChanged)),this._onForwardedSourcesChanged=this.onForwardedSourcesChanged.bind(this),this.conference.on(tT.FORWARDED_SOURCES_CHANGED,this._onForwardedSourcesChanged),this._onLastNValueChanged=this.figureOutStreamingStatus.bind(this),this.rtc.on(nJ.LASTN_VALUE_CHANGED,this._onLastNValueChanged),!nf.supportsVideoMuteOnConnInterrupted()&&this.track.isVideoTrack()&&(this._onConnectionStats=(t,i)=>this._handleFramesDecodedUpdate(i),this.conference.statistics.addConnectionStatsListener(this._onConnectionStats))}dispose(){nf.supportsVideoMuteOnConnInterrupted()?(this.rtc.removeListener(nJ.REMOTE_TRACK_MUTE,this._onTrackRtcMuted),this.rtc.removeListener(nJ.REMOTE_TRACK_UNMUTE,this._onTrackRtcUnmuted),this.track.off(is.TRACK_MUTE_CHANGED,this._onSignallingMuteChanged),this.track.off(is.TRACK_VIDEOTYPE_CHANGED,this._onTrackVideoTypeChanged)):this.track.isVideoTrack()&&(this.conference.statistics.removeConnectionStatsListener(this._onConnectionStats),this._statsTrackFrozen=!1),this.conference.off(tT.FORWARDED_SOURCES_CHANGED,this._onForwardedSourcesChanged),this.conference.off(tT.P2P_STATUS,this._onP2PStatus),this.conference.off(tT.USER_LEFT,this._onUserLeft),this.rtc.removeListener(nJ.LASTN_VALUE_CHANGED,this._onLastNValueChanged),this.clearTimeout(),this.clearRtcMutedTimestamp(),this.maybeSendTrackStreamingStatusEvent(Date.now()),this.figureOutStreamingStatus()}_changeStreamingStatus(t){if(this.track.getTrackStreamingStatus()!==t){let i=this.track.getSourceName();this.track._setTrackStreamingStatus(t),sA.debug(`Emit track streaming status(${Date.now()}) ${i}: ${t}`),this.track.emit(is.TRACK_STREAMING_STATUS_CHANGED,this.track,t),t===sR.INACTIVE?ns.sendStatsEntry(ni.REMOTE_SOURCE_SUSPENDED_EVENT):t===sR.INTERRUPTED&&ns.sendStatsEntry(ni.REMOTE_SOURCE_INTERRUPTED_EVENT)}}clearTimeout(){this.trackTimer&&(window.clearTimeout(this.trackTimer),this.trackTimer=null)}clearRtcMutedTimestamp(){this.rtcMutedTimestamp=null}isVideoTrackFrozen(){if(this._statsTrackFrozen)return!0;
64if(!nf.supportsVideoMuteOnConnInterrupted())return!1;let t=this.track.isWebRTCTrackMuted(),i=this.rtcMutedTimestamp,n=this._getVideoFrozenTimeout();return t&&"number"==typeof i&&Date.now()-i>=n}_handleFramesDecodedUpdate(t){var i;if(this.track.isP2P!==this.conference.isP2PActive())return this._lastFramesDecoded=null,this._lastFramesDecodedAt=null,void(this._statsTrackFrozen&&(this._statsTrackFrozen=!1,this.figureOutStreamingStatus()));if(this.track.isMuted()||null==t.framesDecoded)return;let n=this.track.getSsrc(),r=t.framesDecoded.get(n),o=Date.now();if(null==r)null===this._lastFramesDecodedAt&&(this._lastFramesDecodedAt=o);else if(r>(null!=(i=this._lastFramesDecoded)?i:-1))return this._lastFramesDecodedAt=o,this._lastFramesDecoded=r,void(this._statsTrackFrozen&&(sA.debug(`Stats-based freeze cleared for ${this.track.getSourceName()}`),this._statsTrackFrozen=!1,this.figureOutStreamingStatus()));null!==this._lastFramesDecodedAt&&o-this._lastFramesDecodedAt>=this._getVideoFrozenTimeout()&&!this._statsTrackFrozen&&(sA.debug(`Stats-based freeze detected for ${this.track.getSourceName()}`),this._statsTrackFrozen=!0,this.figureOutStreamingStatus())}figureOutStreamingStatus(){let t=this.track.getSourceName(),i=this.conference.isP2PActive(),n=this._isRestoringTimedout(),r=0===this.conference.getLastN(),o=this.track.isMuted()||r,s=this.isVideoTrackFrozen(),a=this.rtc.isInForwardedSources(t),d=i?sw._getNewStateForP2PMode(o,s):sw._getNewStateForJvbMode(a,n,o,s);d!==sR.RESTORING&&this._clearRestoringTimer(),sA.debug(`Figure out conn status for ${t}, is video muted: ${o} video track frozen: ${s} p2p mode: ${i} is in forwarded sources: ${a} currentStatus => newStatus: ${this.track.getTrackStreamingStatus()} => ${d}`);let c=this.streamingStatusMap||{};if(!("p2p"in c)||!("streamingStatus"in c)||c.p2p!==i||c.streamingStatus!==d){let t=Date.now();this.maybeSendTrackStreamingStatusEvent(t),this.streamingStatusMap={...c,p2p:i,startedMs:t,streamingStatus:d},"videoType"in this.streamingStatusMap||(this.streamingStatusMap.videoType=this.track.getVideoType())}this._changeStreamingStatus(d)}maybeSendTrackStreamingStatusEvent(t){let i=this.streamingStatusMap;i&&"startedMs"in i&&"videoType"in i&&"streamingStatus"in i&&"p2p"in i&&(i.value=t-i.startedMs,n$.sendAnalytics(function(){return{action:"duration",attributes:arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},source:"track.streaming.status",type:na.TYPE_OPERATIONAL}}(i)))}onForwardedSourcesChanged(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2?arguments[2]:void 0,r=this.track.getSourceName();nf.supportsVideoMuteOnConnInterrupted()||this.figureOutStreamingStatus(),t.includes(r)&&(this.track._clearEnteredForwardedSourcesTimestamp(),this._clearRestoringTimer(),nf.supportsVideoMuteOnConnInterrupted()&&this.figureOutStreamingStatus()),i.includes(r)&&(this.track._setEnteredForwardedSourcesTimestamp(n),nf.supportsVideoMuteOnConnInterrupted()&&this.figureOutStreamingStatus())}_clearRestoringTimer(){let t=this.restoringTimer;t&&(clearTimeout(t),this.restoringTimer=null)}_isRestoringTimedout(){let t=this.track._getEnteredForwardedSourcesTimestamp();return!!(t&&Date.now()-t>=1e4)||(this.restoringTimer||(this.restoringTimer=setTimeout(()=>this.figureOutStreamingStatus(),1e4)),!1)}_isCurrentTrack(t){return t.getSourceName()===this.track.getSourceName()}onUserLeft(t){this.track.getParticipantId()===t&&(this.maybeSendTrackStreamingStatusEvent(Date.now()),this.streamingStatusMap={})}onTrackRtcMuted(t){if(!this._isCurrentTrack(t))return;let i=t.getSourceName();if(sA.debug(`Detector track RTC muted: ${i}`,Date.now()),this.rtcMutedTimestamp=Date.now(),!t.isMuted()){this.clearTimeout();let t=this._getVideoFrozenTimeout();this.trackTimer=window.setTimeout(()=>{sA.debug(`Set track RTC muted for: ${i} after the timeout of ${t} ms`),this.clearTimeout(),this.figureOutStreamingStatus()},t)}}onTrackRtcUnmuted(t){if(!this._isCurrentTrack(t))return;let i=this.track.getSourceName();sA.debug(`Detector track RTC unmuted: ${i}`,Date.now()),this.clearTimeout(),this.clearRtcMutedTimestamp(),this.figureOutStreamingStatus()}onSignallingMuteChanged(t){this._isCurrentTrack(t)&&this.figureOutStreamingStatus()}onTrackVideoTypeChanged(t){let i=Date.now();this.maybeSendTrackStreamingStatusEvent(i),this.streamingStatusMap={...this.streamingStatusMap||{},startedMs:i,videoType:t}}}let sI=sw,sk=(0,m.getLogger)("rtc:JitsiRemoteTrack"),sO=!1,sN=!1,sP=["abort","canplaythrough","ended","error","stalled","suspend","waiting"];class sL extends oz{constructor(t,i,n,r,o,s,a,d,c,l,u){if(super(i,r,o,()=>{}
64,s,a),this._rtc=t,"number"!=typeof d)throw TypeError(`SSRC ${d} is not a number`);this._ssrc=d,this.ownerEndpointId=n,this._muted=c,this.isP2P=l,this._sourceName=u,this._trackStreamingStatus=null,this._trackStreamingStatusImpl=null,this.rtcId=null,this._enteredForwardedSourcesTimestamp=null,this.addEventListener=this.on=this._addEventListener.bind(this),this.removeEventListener=this.off=this._removeEventListener.bind(this),sk.debug(`New remote track created: ${this}`),this._hasBeenMuted=c,this._bindTrackHandlers(),this._containerHandlers={},sP.forEach(t=>{this._containerHandlers[t]=this._containerEventHandler.bind(this,t)})}_bindTrackHandlers(){this.track.addEventListener("mute",()=>this._onTrackMute()),this.track.addEventListener("unmute",()=>this._onTrackUnmute()),this.track.addEventListener("ended",()=>{sk.debug(`"onended" event(${Date.now()}): ${this}`)})}_addEventListener(t,i){super.addListener(t,i),t===is.TRACK_STREAMING_STATUS_CHANGED&&this.listenerCount(is.TRACK_STREAMING_STATUS_CHANGED)&&!this._trackStreamingStatusImpl&&(this._initTrackStreamingStatus(),sk.debug(`Initializing track streaming status: ${this._sourceName}`))}_removeEventListener(t,i){super.removeListener(t,i),t!==is.TRACK_STREAMING_STATUS_CHANGED||this.listenerCount(is.TRACK_STREAMING_STATUS_CHANGED)||(this._disposeTrackStreamingStatus(),sk.debug(`Disposing track streaming status: ${this._sourceName}`))}_onTrackMute(){sk.debug(`"onmute" event(${Date.now()}): ${this}`),this.videoType!==rw.DESKTOP?this._rtc.eventEmitter.emit(nJ.REMOTE_TRACK_MUTE,this):sk.debug("Ignoring mute event on desktop tracks.")}_onTrackUnmute(){sk.debug(`"onunmute" event(${Date.now()}): ${this}`),this._rtc.eventEmitter.emit(nJ.REMOTE_TRACK_UNMUTE,this)}_playCallback(){if(!this.conference.room)return;let t=this.isVideoTrack()?"video":"audio",i=window.performance.now();sk.info(`(TIME) Render ${t}: `,i),this.conference.getConnectionTimes()[`${t}.render`]=i;let n=window.connectionTimes["obtainPermissions.start"],r=window.connectionTimes["obtainPermissions.end"],o=nO(r)&&nO(n)?r-n:0,s=i-(this.conference.getConnectionTimes()["session.initiate"]-this.conference.getConnectionTimes()["muc.joined"])-o;this.conference.getConnectionTimes()[`${t}.ttfm`]=s,sk.info(`(TIME) TTFM ${t}: `,s),n$.sendAnalytics(nc("ttfm",{media_type:t,muted:this._hasBeenMuted,value:s}))}_containerEventHandler(t){sk.debug(`${t} handler was called for a container with attached ${this}`)}_getStatus(){let t=this.track,i=t.enabled,n=t.muted;return`readyState: ${t.readyState}, muted: ${n}, enabled: ${i}`}_initTrackStreamingStatus(){let t=this.conference.options.config;this._trackStreamingStatus=sR.ACTIVE,this._trackStreamingStatusImpl=new sI(this._rtc,this.conference,this,{outOfForwardedSourcesTimeout:t._peerConnStatusOutOfLastNTimeout,p2pRtcMuteTimeout:t._p2pConnStatusRtcMuteTimeout,rtcMuteTimeout:t._peerConnStatusRtcMuteTimeout}),this._trackStreamingStatusImpl.init(),this._trackStreamingStatusImpl.isVideoTrackFrozen()||this._rtc.eventEmitter.emit(is.TRACK_STREAMING_STATUS_CHANGED,this,this._trackStreamingStatus)}_disposeTrackStreamingStatus(){this._trackStreamingStatusImpl&&(this._trackStreamingStatusImpl.dispose(),this._trackStreamingStatusImpl=null,this._trackStreamingStatus=null)}_onTrackAttach(t){sP.forEach(i=>{t.addEventListener(i,this._containerHandlers[i])})}_onTrackDetach(t){sP.forEach(i=>{t.removeEventListener(i,this._containerHandlers[i])})}_attachTTFMTracker(t){sO&&this.isAudioTrack()||sN&&this.isVideoTrack()||(this.isAudioTrack()&&(sO=!0),this.isVideoTrack()&&(sN=!0),t.addEventListener("canplay",this._playCallback.bind(this)))}_setVideoType(t){this.videoType!==t&&(this.videoType=t,this.emit(is.TRACK_VIDEOTYPE_CHANGED,t))}_setTrackStreamingStatus(t){this._trackStreamingStatus=t}_clearEnteredForwardedSourcesTimestamp(){this._enteredForwardedSourcesTimestamp=null}_setEnteredForwardedSourcesTimestamp(t){this._enteredForwardedSourcesTimestamp=t}_getEnteredForwardedSourcesTimestamp(){return this._enteredForwardedSourcesTimestamp}async dispose(){if(!this.disposed)return this._disposeTrackStreamingStatus(),super.dispose()}setMute(t){this._muted!==t&&(t&&(this._hasBeenMuted=!0),this.stream&&(this.stream.muted=t),this._muted=t,sk.info(`Mute ${this}: ${t}
64`),this.emit(is.TRACK_MUTE_CHANGED,this))}isMuted(){return this._muted}getParticipantId(){return this.ownerEndpointId}getSsrc(){return this._ssrc}getSourceName(){return this._sourceName}setOwner(t){this.ownerEndpointId=t}setSourceName(t){this._sourceName=t}getTrackStreamingStatus(){return this._trackStreamingStatus}toString(){return`RemoteTrack[userID: ${this.getParticipantId()}, type: ${this.getType()}, ssrc: ${this.getSsrc()}, p2p: ${this.isP2P}, sourceName: ${this._sourceName}, status: {${this._getStatus()}}]`}}let sM=function(t){return t.L1T3="L1T3",t.L2T3="L2T3",t.L2T3_KEY="L2T3_KEY",t.L3T3="L3T3",t.L3T3_KEY="L3T3_KEY",t}({}),sF=(0,m.getLogger)("rtc:TPCUtils"),sj=[oZ.AV1,oZ.H264,oZ.VP8,oZ.VP9];class sV{constructor(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.pc=t,this.options=i,this.codecSettings=rA(o7);const n=this.options.videoQuality;if(n)for(const t of sj){var r,o;const i=n[t],s=null!=(r=null==i?void 0:i.maxBitratesVideo)?r:null==n||null==(o=n.maxbitratesvideo)?void 0:o[t.toUpperCase()];s&&[...Object.values(st),"ssHigh"].forEach(i=>{s[i]&&(this.codecSettings[t].maxBitratesVideo[i]=s[i])}),i&&(this.codecSettings[t].scalabilityModeEnabled&&(void 0===i.scalabilityModeEnabled||i.scalabilityModeEnabled)?(void 0!==i.useSimulcast&&(this.codecSettings[t].useSimulcast=i.useSimulcast),void 0!==i.useKSVC&&(this.codecSettings[t].useKSVC=i.useKSVC)):this.codecSettings[t].scalabilityModeEnabled=!1)}}_calculateActiveEncodingParams(t,i,n){var r;let o=this.codecSettings[i].maxBitratesVideo,s=t.getCaptureResolution(),a=n>s?s:n,d=(null==(r=this.options.videoQuality)?void 0:r.desktopbitrate)||o.ssHigh,c=t.getVideoType()===rw.DESKTOP,l=this.codecSettings[i].useKSVC?sM.L3T3_KEY:sM.L3T3,u=se.find(t=>t.height<=a),h=u.height,p=u.level,m,g=o4[2].scaleFactor;this._isScreenshareBitrateCapped(t)?(l=sM.L1T3,m=d):c?m=o.ssHigh:(m=o[p],a&&(g=s/a),h!==a&&sF.debug(`Quality level with height=${h} was picked when requested height=${n} fortrack with capture height=${s}`));let f={active:a>0,maxBitrate:m,rid:void 0,scalabilityMode:l,scaleResolutionDownBy:g};if(!f.active||c)return f;switch(p){case st.ULTRA:case st.FULL:case st.HIGH:f.scalabilityMode=this.codecSettings[i].useKSVC?sM.L3T3_KEY:sM.L3T3;break;case st.STANDARD:f.scalabilityMode=this.codecSettings[i].useKSVC?sM.L2T3_KEY:sM.L2T3;break;default:f.scalabilityMode=sM.L1T3}return f}_getConfiguredVideoCodecsImpl(t){return Array.from(new Set(t.media.find(t=>t.type===nx.VIDEO).rtp.filter(t=>"rtx"!==t.codec.toLowerCase()).map(t=>t.codec.toLowerCase())))}_getVideoStreamEncodings(t,i){let n=t.getCaptureResolution(),r=this.codecSettings[i].maxBitratesVideo,o=t.getVideoType(),s,a=o4.map(t=>t.scaleFactor);if(o===rw.CAMERA){let t=se.find(t=>t.height<=n).level;s=r[t],t===st.ULTRA?(a[1]=6,a[0]=12):t===st.FULL&&(a[1]=3,a[0]=6)}let d=o===rw.DESKTOP?r.ssHigh:s,c=[r.low,r.standard,d];!nf.isFirefox()||nf.supportsScalabilityModeAPI()||o!==rw.DESKTOP&&!nf.isVersionLessThan(117)||(c=c.reverse(),a=a.reverse());let l=[{active:this.pc.videoTransferActive,maxBitrate:c[0],rid:o4[0].rid,scaleResolutionDownBy:a[0]},{active:this.pc.videoTransferActive,maxBitrate:c[1],rid:o4[1].rid,scaleResolutionDownBy:a[1]},{active:this.pc.videoTransferActive,maxBitrate:c[2],rid:o4[2].rid,scaleResolutionDownBy:a[2]}];if(this.codecSettings[i].scalabilityModeEnabled){if(this.codecSettings[i].useSimulcast||i===oZ.H264){for(let t of l)t.scalabilityMode=sM.L1T3;return l}return[{active:this.pc.videoTransferActive,maxBitrate:c[2],rid:o4[0].rid,scalabilityMode:this.codecSettings[i].useKSVC?sM.L3T3_KEY:sM.L3T3,scaleResolutionDownBy:a[2]},{active:!1,maxBitrate:0},{active:!1,maxBitrate:0}]}return l}_isRunningInFullSvcMode(t){return(t===oZ.VP9||t===oZ.AV1)&&this.codecSettings[t].scalabilityModeEnabled&&!this.codecSettings[t].useSimulcast}_isScreenshareBitrateCapped(t){return t.getVideoType()===rw.DESKTOP&&this.pc._capScreenshareBitrate&&!nf.isWebKitBased()}_stripSdesMid(t){if(!nf.isFirefox())return t;let i=t;for(let t of i.media)t.ext&&(t.ext=t.ext.filter(t=>"urn:ietf:params:rtp-hdrext:sdes:mid"!==t.uri));return i}calculateEncodingsActiveState(t,i,n){let r=t.getCaptureResolution(),o=this._getVideoStreamEncodings(t,i);return o.map(t=>r/t.scaleResolutionDownBy).map((r,s)=>{var a;let d=!1;if(!this.pc.videoTransferActive)return d;if(!this.pc.isSpatialScalabilityOn()||this._isRunningInFullSvcMode(i)){let r=this._calculateActiveEncodingParams(t,i,n).active;return 0===s?r:d}return n>0&&(d=t.getVideoType()===rw.CAMERA?r<=n||(null==(a=o[s])?void 0:a.scaleResolutionDownBy)===o4[0].scaleFactor:o[s].scaleResolutionDownBy===o4[2].scaleFactor||!this._isScreenshareBitrateCapped(t)),d})}calculateEncodingsBitrates(t,i,n){var r;
64let o=this.codecSettings[i].maxBitratesVideo,s=(null==(r=this.options.videoQuality)?void 0:r.desktopbitrate)||o.ssHigh;return this._getVideoStreamEncodings(t,i).map((r,o)=>{let a=r.maxBitrate;if(!this.pc.isSpatialScalabilityOn()||this._isRunningInFullSvcMode(i)){let r=this._calculateActiveEncodingParams(t,i,n).maxBitrate;return 0===o?r:0}return this._isScreenshareBitrateCapped(t)&&(a=s),a})}calculateEncodingsScalabilityMode(t,i,n){if(!this.codecSettings[i].scalabilityModeEnabled)return;if(!this.pc.isSpatialScalabilityOn())return[sM.L1T3];let r=[sM.L1T3,sM.L1T3,sM.L1T3];if(this._isRunningInFullSvcMode(i)){let o=this._calculateActiveEncodingParams(t,i,n).scalabilityMode;return r[0]=o,r[1]=void 0,r[2]=void 0,r}return r}calculateEncodingsScaleFactor(t,i,n){return this.pc.isSpatialScalabilityOn()&&this.isRunningInSimulcastMode(i)?this._getVideoStreamEncodings(t,i).map(t=>t.scaleResolutionDownBy):[this._calculateActiveEncodingParams(t,i,n).scaleResolutionDownBy,void 0,void 0]}ensureCorrectOrderOfSsrcs(t){let i=oX.parse(t.sdp);return i.media.forEach(t=>{var i;if(t.type===nx.AUDIO||null==(i=t.ssrcGroups)||!i.length)return;let n=[],r=new Set;t.ssrcGroups.map(t=>t.ssrcs.split(" ").filter(Boolean).forEach(t=>r.add(t))),r.forEach(i=>{let r=t.ssrcs.filter(t=>t.id.toString()===i);n=n.concat(r)}),t.ssrcs=n}),new RTCSessionDescription({sdp:oX.write(i),type:t.type})}getConfiguredVideoCodec(t){var i;let n=null!=t?t:this.pc.getLocalVideoTracks()[0],r=this.pc.findSenderForTrack(n.getTrack());if(this.pc.usesCodecSelectionAPI()&&r){let t=r.getParameters().encodings;if(t[0].codec)return t[0].codec.mimeType.split("/")[1].toLowerCase()}let o=null==(i=this.pc.remoteDescription)?void 0:i.sdp;if(!o)return oZ.VP8;let s=oX.parse(o).media.find(t=>t.mid.toString()===this.pc.localTrackTransceiverMids.get(n.rtcId)),a=s.payloads.split(" ")[0],d=s.rtp.find(t=>t.payload===Number(a)).codec;return d?Object.values(oZ).find(t=>t===d.toLowerCase()):oZ.VP8}getConfiguredVideoCodecs(t){var i;let n=null!=t?t:null==(i=this.pc.localDescription)?void 0:i.sdp;if(!n)return[];let r=oX.parse(n);return this._getConfiguredVideoCodecsImpl(r)}getDesiredMediaDirection(t){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.pc.getLocalTracks(t).length>0;return i?n?o0.SENDRECV:o0.SENDONLY:n?o0.RECVONLY:o0.INACTIVE}getStreamEncodings(t){if(t.isAudioTrack())return[{active:this.pc.audioTransferActive}];let i=this.getConfiguredVideoCodec(t);return this.pc.isSpatialScalabilityOn()?this._getVideoStreamEncodings(t,i):[{active:this.pc.videoTransferActive,maxBitrate:this.codecSettings[i].maxBitratesVideo.high}]}injectSsrcGroupForSimulcast(t){let i=oX.parse(t.sdp),n=i.media.filter(t=>"video"===t.type),r=!1;for(let t of n){if(!t.simulcast&&!t.simulcast_03||(t.ssrcGroups=t.ssrcGroups||[],t.ssrcGroups.find(t=>t.semantics===o9.SIM)))continue;let i=t.ssrcGroups.filter(t=>t.semantics===o9.FID),n=[];null!=i&&i.length?i.forEach(t=>{n.push(t.ssrcs.split(" ")[0])}):t.ssrcs&&t.ssrcs.forEach(t=>{"msid"===t.attribute&&n.push(t.id)});for(let i=0;i<n.length;i+=3){let o=n.slice(i,i+3);t.ssrcGroups.push({semantics:o9.SIM,ssrcs:o.join(" ")}),r=!0}}return r?new RTCSessionDescription({sdp:oX.write(i),type:t.type}):t}insertUnifiedPlanSimulcastReceive(t){if(nf.usesSdpMungingForSimulcast())return t;let i=[{direction:"recv",id:o4[0].rid},{direction:"recv",id:o4[1].rid},{direction:"recv",id:o4[2].rid}],n=`recv ${i.map(t=>t.id).join(";")}`,r=oX.parse(t.sdp),o=r.media.filter(t=>t.type===nx.VIDEO),s=Array.from(this.pc.localTrackTransceiverMids.values());return o.forEach((t,r)=>{s.find(i=>
64t.mid.toString()===i.toString())||0===r||nf.supportsEncodingsConfig()&&t.direction===o0.RECVONLY?t.simulcast_03&&t.simulcast||(t.rids=i,t.simulcast_03={value:n}):(t.rids=void 0,t.simulcast=void 0,t.simulcast_03=void 0)}),new RTCSessionDescription({sdp:oX.write(r),type:t.type})}isRunningInSimulcastMode(t){var i;return!(null==(i=this.codecSettings)||!i[t])&&(t===oZ.VP8||!this.codecSettings[t].scalabilityModeEnabled&&t===oZ.VP9||!this.codecSettings[t].scalabilityModeEnabled&&this.codecSettings[t].useSimulcast&&t===oZ.AV1||this.codecSettings[t].scalabilityModeEnabled&&(t===oZ.H264||this.codecSettings[t].useSimulcast))}mungeCodecOrder(t){let i=this.pc.codecSettings;if(!i)return t;let n=t,r=this.options.isP2P;for(let t of n.media.filter(t=>t.type===i.mediaType)){for(let i of this._getConfiguredVideoCodecsImpl(n))r&&(i!==oZ.H264&&i!==oZ.VP9||sh.stripCodec(t,i,!0),i!==oZ.ULPFEC&&i!==oZ.RED||sh.stripCodec(t,i,!1));if(!this.pc.usesCodecSelectionAPI())for(let n of i.codecList.slice().reverse())sh.preferCodec(t,n,r)}return n}mungeOpus(t,i){if(!i||"boolean"!=typeof i.enableOpusDtx&&"boolean"!=typeof i.stereo&&"number"!=typeof i.opusMaxAverageBitrate)return t;let n=t;for(let t of n.media.filter(t=>t.type===nx.AUDIO)){let n=t.rtp.find(t=>t.codec===oZ.OPUS).payload;if(!n)continue;let r=t.fmtp.find(t=>t.payload===n);r||(r={config:"",payload:n});let o=oX.parseParams(r.config),s=!1;if("boolean"==typeof(null==i?void 0:i.stereo)&&(o.stereo=+!!i.stereo,o["sprop-stereo"]=+!!i.stereo,s=!0),"number"==typeof(null==i?void 0:i.opusMaxAverageBitrate)&&(o.maxaveragebitrate=i.opusMaxAverageBitrate,s=!0),!nf.isFirefox()&&null!=i&&i.enableOpusDtx&&(o.usedtx=1,s=!0),!s)continue;let a="";for(let t of Object.keys(o))a+=`${t}=${o[t]}; `;r.config=a.trim()}return n}setMaxBitrates(t){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.pc.codecSettings;if(!n)return t;let r=t,o=i?o0.RECVONLY:o0.SENDONLY,s=r.media.filter(t=>t.type===nx.VIDEO&&t.direction!==o),a=n.codecList[0],d=this.codecSettings[a];for(let t of s){let i=a===oZ.VP9&&!d.scalabilityModeEnabled,n=this.pc.getLocalVideoTracks().find(i=>this.pc.localTrackTransceiverMids.get(i.rtcId)===t.mid.toString());if(n&&(i||this._isRunningInFullSvcMode(a)&&!this.pc.usesCodecSelectionAPI())){let i;if(n.getVideoType()===rw.DESKTOP)i=d.maxBitratesVideo.ssHigh;else{let t=se.find(t=>t.height<=n.getCaptureResolution()).level;i=d.maxBitratesVideo[t]}t.bandwidth=[{limit:Math.floor(i/1e3),type:"AS"}]}else t.bandwidth=void 0}return r}}function sB(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return sU(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?sU(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 65In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function sU(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}function s$(t,i,n){return(i=function(t){var i=function(t){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,"string");if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof i?i:i+""}(i))in t?Object.defineProperty(t,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[i]=n,t}let sH=(0,m.getLogger)("rtc:TraceablePeerConnection");class sJ{constructor(t,i,n,r,o,s,a){var d,c,l,u,h,p=this;if(s$(this,"_configureSenderEncodings",async t=>{var i,n;let r=t.getType(),o=null!=t&&t.track&&t.getOriginalStream()?this.peerconnection.getTransceivers().find(i=>{var n;return(null==(n=i.sender)||null==(n=n.track)?void 0:n.id)===t.getTrackId()}):this.peerconnection.getTransceivers().find(t=>{var i;return(null==(i=t.receiver)||null==(i=i.track)?void 0:i.kind)===r}),s=null==o||null==(i=o.sender)?void 0:i.getParameters();if(null==s||null==(n=s.encodings)||!n.length)return;let a=this.tpcUtils.getStreamEncodings(t);if(nf.supportsEncodingsConfig()){if(s.encodings.length!==a.length)return;
65s.encodings.forEach((t,i)=>{let n=a[i];n&&(void 0!==n.active&&(t.active=n.active),void 0!==n.maxBitrate&&(t.maxBitrate=n.maxBitrate),void 0!==n.scaleResolutionDownBy&&(t.scaleResolutionDownBy=n.scaleResolutionDownBy),void 0!==n.scalabilityMode&&(t.scalabilityMode=n.scalabilityMode))})}else s.encodings=a;await o.sender.setParameters(s)}),s$(this,"_enableSenderEncodings",async(t,i)=>{var n;let r=t.getParameters();if(null!=r&&null!=(n=r.encodings)&&n.length)for(let t of r.encodings)t.active=i;await t.setParameters(r)}),s$(this,"addTrack",async function(t){var i;let n,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=t.rtcId;if(p.localTracks.has(o))throw Error(`${t} is already in ${p}`);sH.info(`${p} adding ${t}`);let s=t.getOriginalStream(),a=t.getTrack();if(r){let i=[];s&&i.push(s);let r={direction:o0.SENDRECV,sendEncodings:[],streams:i};nf.isFirefox()&&!nf.supportsEncodingsConfig()||(r.sendEncodings=p.tpcUtils.getStreamEncodings(t)),n=p.peerconnection.addTransceiver(a,r)}else{let t=p.peerconnection.addTrack(a);n=p.peerconnection.getTransceivers().find(i=>i.sender===t)}if(null!=(i=n)&&i.mid){let i=n.mid.toString();p.localTrackTransceiverMids.set(t.rtcId,i),p._midsWithSentTrack.add(i)}t&&p.localTracks.set(o,t),nf.isFirefox()&&!nf.supportsEncodingsConfig()&&s&&p.doesTrueSimulcast(t)&&await p._setEncodings(t)}),this.audioTransferActive=!0!==a.startSilent,this._dtmfSender=void 0,this._dtmfTonesQueue=[],this.videoTransferActive=!0,this.rtc=t,this.id=i,this._pcId=`PC_${this.id}`,this.isP2P=s,this.remoteTracksBySsrc=new Map,this.remoteTracks=new Map,this.localTracks=new Map,this.localSSRCs=new Map,this.remoteSSRCs=new Set,this.remoteSources=new Map,this._localUfrag=null,this._remoteUfrag=null,this._dtlsTransport=null,this._signalingLayer=n,this._peerVideoTypeChanged=this._peerVideoTypeChanged.bind(this),this._signalingLayer.on(o1.PEER_VIDEO_TYPE_CHANGED,this._peerVideoTypeChanged),this._peerMutedChanged=this._peerMutedChanged.bind(this),this._signalingLayer.on(o1.PEER_MUTED_CHANGED,this._peerMutedChanged),this.options=a,null!=(h=this.options)&&h.audioQuality){const t=this.options.audioQuality,i="boolean"==typeof t.stereo?t.stereo:void 0,n=i?null!=(d=null!=(c=t.opusMaxAverageBitrateStereo)?c:t.opusMaxAverageBitrateMono)?d:t.opusMaxAverageBitrate:null!=(l=null!=(u=t.opusMaxAverageBitrateMono)?u:t.opusMaxAverageBitrateStereo)?l:t.opusMaxAverageBitrate,r={enableOpusDtx:t.enableOpusDtx,opusMaxAverageBitrate:n,stereo:i};this.audioQualityLocal=r,this.audioQualityRemote=r}this._signalingLayer.on(o1.SOURCE_MUTED_CHANGED,(t,i)=>this._sourceMutedChanged(t,i)),this._signalingLayer.on(o1.SOURCE_VIDEO_TYPE_CHANGED,(t,i)=>this._sourceVideoTypeChanged(t,i));const m=o||{};m.optional=m.optional||[],Array.isArray(m.optional)?m.optional.push({rtcStatsSFUP2P:this.isP2P}):sH.warn("Optional param is not an array, rtcstats p2p data is omitted."),this.peerconnection=new RTCPeerConnection(r,m),this.tpcUtils=new sV(this,{audioQuality:a.audioQuality,isP2P:this.isP2P,videoQuality:a.videoQuality}),this.updateLog=[],this.stats={},this.statsinterval=null,this._capScreenshareBitrate=this.options.capScreenshareBitrate,this.codecSettings=this.options.codecSettings,nf.supportsCodecPreferences()&&sH.info("Using RTCRtpTransceiver#setCodecPreferences for codec selection"),this._usesCodecSelectionAPI=this.options.usesCodecSelectionAPI,this._midsWithSentTrack=new Set,this.maxstats=a.maxstats,this.simulcast=new sx,this.localSdpMunger=new sc(this,this.rtc.getLocalEndpointId()),this.eventEmitter=t.eventEmitter,this.rtxModifier=new sg,this._senderMaxHeights=new Map,this.localTrackTransceiverMids=new Map,this._localSsrcMap=null,this._remoteSsrcMap=new Map,this._pendingStreams=[],this._addPendingStreams=()=>{if("stable"===this.signalingState&&"connected"===this.iceConnectionState){for(let i of this._pendingStreams){var t=sB(i,2);let n=t[0],r=t[1];if(this.trace("onsignalingstatechange",n),r){let t=this.peerconnection.getTransceivers().find(t=>t.mid===r),i=this.peerconnection.getRemoteStreams().find(t=>t.id===n);i&&t&&this._remoteTrackAdded(i,t.receiver.track,t)}else sH.error("No transceiver mid for pending stream",n)}
65this._pendingStreams=[]}},this._maybeAddPending=(t,i)=>!nf.isFirefox()&&(this.trace(t,`${this.iceConnectionState}, ${this.signalingState}: ${i.id}`),"have-remote-offer"===this.signalingState),this._maybeRemovePending=(t,i)=>{this.trace(t,`${this.iceConnectionState}, ${this.signalingState}: ${i.id}`);let n=this._pendingStreams.findIndex(t=>t[0]===i.id);return -1!==n&&(this._pendingStreams.splice(n,1),!0)},this.trace=(t,i)=>{sH.trace(t,i),this.updateLog.push({time:new Date,type:t,value:i||""})},this.onicecandidate=null,this.peerconnection.onicecandidate=t=>{this.trace("onicecandidate",JSON.stringify(t.candidate,null," ")),null!==this.onicecandidate&&this.onicecandidate(t)},this.onTrack=t=>{let i=t.streams[0];this._maybeAddPending("ontrack",i)?this._pendingStreams.push([i.id,t.transceiver.mid]):this._remoteTrackAdded(i,t.track,t.transceiver),i.addEventListener("removetrack",t=>{this._maybeRemovePending("onremovetrack",i)||this._remoteTrackRemoved(i,t.track)})},this.peerconnection.addEventListener("track",this.onTrack),this.onsignalingstatechange=null,this.peerconnection.onsignalingstatechange=t=>{this.trace("onsignalingstatechange",this.signalingState),null!==this.onsignalingstatechange&&this.onsignalingstatechange(t),this._addPendingStreams()},this.oniceconnectionstatechange=null,this.peerconnection.oniceconnectionstatechange=t=>{this.trace("oniceconnectionstatechange",this.iceConnectionState),null!==this.oniceconnectionstatechange&&this.oniceconnectionstatechange(t),this._addPendingStreams(),"closed"===this.iceConnectionState&&(this._pendingStreams=[])},this.onnegotiationneeded=null,this.peerconnection.onnegotiationneeded=t=>{this.trace("onnegotiationneeded"),null!==this.onnegotiationneeded&&this.onnegotiationneeded(t)},this.onconnectionstatechange=null,this.peerconnection.onconnectionstatechange=t=>{this.trace("onconnectionstatechange",this.connectionState),null!==this.onconnectionstatechange&&this.onconnectionstatechange(t)},this.ondatachannel=null,this.peerconnection.ondatachannel=t=>{this.trace("ondatachannel"),null!==this.ondatachannel&&this.ondatachannel(t)},this.maxstats&&(this.statsinterval=window.setInterval(()=>{this.getStats().then(t=>{if("function"==typeof(null==t?void 0:t.result)){let i=t.result();for(let t=0;t<i.length;++t){let n=i[t];n.names().forEach(t=>{this._processStat(n,t,n.stat(t))})}}else t.forEach(t=>this._processStat(t,"",t))})},1e3)),this._lastVideoSenderUpdatePromise=Promise.resolve(),sH.info(`Create new ${this}`)}_peerMutedChanged(t,i,n){if(!t)return void sH.error(`${this} On peerMuteChanged - no endpoint ID`);let r=this.getRemoteTracks(t,i);r.length&&r[0].setMute(n)}_sourceVideoTypeChanged(t,i){let n=this.getRemoteTracks().slice().reverse().find(i=>i.getSourceName()===t);n&&n._setVideoType(i)}_getReceiversByEndpointIds(t,i){let n=[];for(let r of t)n=n.concat(this.getRemoteTracks(r,i));let r=n.map(t=>{var i;return null==(i=t.track)?void 0:i.id});return this.peerconnection.getReceivers().filter(t=>t.track&&t.track.kind===i&&r.find(i=>i===t.track.id))}_peerVideoTypeChanged(t,i){if(!t)return void sH.error(`${this} No endpointID on peerVideoTypeChanged`);let n=this.getRemoteTracks(t,nx.VIDEO);n.length&&n[0]._setVideoType(i)}_adjustRemoteMediaDirection(t){let i=new ss(null==t?void 0:t.sdp);return[nx.AUDIO,nx.VIDEO].forEach(t=>{let n=i.selectMedia(t),r=this.getLocalTracks(t).length,o=this.getRemoteTracks(null,t).length;n.forEach((t,i)=>{t.direction=r&&r===o?o0.SENDRECV:r||o?r?o?r>o?i?o0.RECVONLY:o0.SENDRECV:i?o0.SENDONLY:o0.SENDRECV:o0.RECVONLY:o0.SENDONLY:o0.INACTIVE})}),new RTCSessionDescription({sdp:i.toRawSDP(),type:t.type})}_getPreferredCodecForScreenshare(t){if(!this.usesCodecSelectionAPI())return t;let i=this.codecSettings.screenshareCodec;return i&&this.codecSettings.codecList.find(t=>t===i)?i:this.codecSettings.codecList.find(t=>t===oZ.AV1)?oZ.AV1:t}_initializeDtlsTransport(){if(!this.peerconnection.getSenders||this._dtlsTransport)return;let t=this.peerconnection.getSenders();0!==t.length&&t[0].transport&&(this._dtlsTransport=t[0].transport,this._dtlsTransport.onerror=t=>{sH.error(`${this} DtlsTransport error: ${t}`)},this._dtlsTransport.onstatechange=()=>{this.trace("dtlsTransport.onstatechange",this._dtlsTransport.state)})}_setEncodings(t){return t.getType()===nx.VIDEO?this._updateVideoSenderParameters(()=>this._configureSenderEncodings(t)):this._configureSenderEncodings(t)}_mungeDescription(t){let i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.trace("RTCSessionDescription::preTransform",sJ.dumpSDP(t));let n=oX.parse(null==t?void 0:t.sdp),r=this.audioQualityLocal;n=this.tpcUtils.mungeOpus(n,r),n=this.tpcUtils.mungeCodecOrder(n),n=this.tpcUtils.setMa
65xBitrates(n,!0),i||(n=this.tpcUtils._stripSdesMid(n));let o=new RTCSessionDescription({sdp:oX.write(n),type:t.type});return this.trace("RTCSessionDescription::postTransform",sJ.dumpSDP(o)),o}_updateVideoSenderParameters(t){let i=this._lastVideoSenderUpdatePromise.finally(t);return this._lastVideoSenderUpdatePromise=i,i}_updateVideoSenderEncodings(t,i,n){var r;let o=this.findSenderForTrack(i.getTrack()),s=i.getVideoType(),a=s===rw.DESKTOP;if(!o)return Promise.resolve();let d=o.getParameters();if(null==d||null==(r=d.encodings)||!r.length)return Promise.resolve();let c=a&&this._capScreenshareBitrate?"maintain-resolution":"maintain-framerate";d.degradationPreference=c;let l=null!=n?n:this.tpcUtils.getConfiguredVideoCodec(i),u=a?this._getPreferredCodecForScreenshare(l):l,h=this.tpcUtils.calculateEncodingsActiveState(i,u,t),p=this.tpcUtils.calculateEncodingsBitrates(i,u,t),m=this.tpcUtils.calculateEncodingsScalabilityMode(i,u,t),g=this.tpcUtils.calculateEncodingsScaleFactor(i,u,t),f=!1;for(let t in u===oZ.VP9&&nf.supportsSVC()&&this.isSpatialScalabilityOn()&&!this.tpcUtils.codecSettings[u].scalabilityModeEnabled&&(g=g.map(()=>{}),p=p.map(()=>{})),d.encodings)if(d.encodings.hasOwnProperty(t)){let i=d.encodings[t],n=i.active,r=void 0===n?void 0:n,o=i.codec,a=void 0===o?void 0:o,l=i.maxBitrate,_=void 0===l?void 0:l,v=i.scalabilityMode,y=void 0===v?void 0:v,E=i.scaleResolutionDownBy,S=void 0===E?void 0:E;r!==h[t]&&(i.active=h[t],f=!0),nf.isFirefox()&&(i.degradationPreference=c),S!==g[t]&&(i.scaleResolutionDownBy=g[t],f=!0),_!==p[t]&&(i.maxBitrate=p[t],f=!0),m?y!==m[t]&&(i.scalabilityMode=m[t],f=!0):i.scalabilityMode=void 0;let b=`${nx.VIDEO}/${u.toUpperCase()}`;this.usesCodecSelectionAPI()&&(null==a?void 0:a.mimeType)!==b&&(i.codec=d.codecs.find(t=>t.mimeType===b),f=!0,n$.sendAnalytics(na.VIDEO_CODEC_CHANGED,{value:u,videoType:s}))}return f?(sH.info(`${this} setting max height=${t},encodings=${JSON.stringify(d.encodings)}`),o.setParameters(d).then(()=>{i.maxEnabledResolution=t,this.eventEmitter.emit(nJ.LOCAL_TRACK_MAX_ENABLED_RESOLUTION_CHANGED,i)})):Promise.resolve()}_onToneChange(t){if(this._dtmfSender&&""===t.tone&&this._dtmfTonesQueue.length){let t=this._dtmfTonesQueue.shift(),i=t.tones,n=t.duration,r=t.interToneGap;this._dtmfSender.insertDTMF(i,n,r)}}_createOfferOrAnswer(t,i){let n=t?"Offer":"Answer";this.trace(`create${n}`,JSON.stringify(i,null," "));let r=(t,i,r)=>{try{var o,s;this.trace(`create${n}OnSuccess::preTransform`,sJ.dumpSDP(t)),this.isSpatialScalabilityOn()&&nf.usesSdpMungingForSimulcast()&&(t=this.simulcast.mungeLocalDescription(t),this.trace(`create${n} OnSuccess::postTransform (simulcast)`,sJ.dumpSDP(t))),!this.options.disableRtx&&nf.usesSdpMungingForSimulcast()&&(t=new RTCSessionDescription({sdp:this.rtxModifier.modifyRtxSsrcs(null==(s=t)?void 0:s.sdp),type:t.type}),this.trace(`create${n}OnSuccess::postTransform (rtx modifier)`,sJ.dumpSDP(t))),null!=(o=t)&&o.sdp&&this._processAndExtractSourceInfo(t.sdp),i(t)}catch(i){this.trace(`create${n}OnError`,i),this.trace(`create${n}OnError`,sJ.dumpSDP(t)),sH.error(`${this} create${n}OnError`,i,sJ.dumpSDP(t)),r(i)}},o=(t,i)=>{this.trace(`create${n}OnFailure`,t),i(t)};if(nf.supportsCodecPreferences()&&this.codecSettings){var s;let t=this.codecSettings,i=t.codecList,n=t.mediaType,r=this.peerconnection.getTransceivers().filter(t=>{var i;return t.receiver&&(null==(i=t.receiver)||null==(i=i.track)?void 0:i.kind)===n}),o=null==(s=RTCRtpReceiver.getCapabilities(n))?void 0:s.codecs;if(r.length&&o){for(let t of i.slice().reverse())o.sort(i=>i.mimeType.toLowerCase()===`${n}/${t}`?-1:1);for(let t of(this.isP2P&&n===nx.VIDEO&&(o=o.filter(t=>t.mimeType.toLowerCase()!==`${nx.VIDEO}/${oZ.ULPFEC}`&&t.mimeType.toLowerCase()!==`${nx.VIDEO}/${oZ.RED}`)),r))t.setCodecPreferences(o)}}return new Promise((n,s)=>{(t?this.peerconnection.createOffer(i):this.peerconnection.createAnswer(i)).then(t=>r(t,n,s),t=>o(t,s))})}_extractPrimarySSRC(t){var i,n;return null!=t&&null!=(i=t.groups)&&i.length?t.groups[0].ssrcs[0]:null!=t&&null!=(n=t.ssrcs)&&n.length?t.ssrcs[0]:null}_sendRtcStatsEvent(t,i){t.getType()===nx.AUDIO?ns.sendStatsEntry(ni.AUDIO_MUTE_CHANGED_EVENT,this._pcId,i):t.getVideoType()===rw.DESKTOP?ns.sendStatsEntry(ni.SCREENSHARE_MUTE_CHANGED_EVENT,this._pcId,i):ns.sendStatsEntry(ni.VIDEO_MUTE_CHANGED_EVENT,this._pcId,i)}_sourceMutedChanged(t,i){let n=this.getRemoteTracks().slice().reverse().find(i=>i.getSourceName()===t);n?n.setMute(i):sH.debug(`Remote track not found for source=${t}, mute update failed!`)}_processStat(t,i,n){let r=`${t.id}-${i}`,o=this.stats[r],s=new Date;o||(this.stats[r]=o={endTime:s,startTime:s,times:[],values:[]}),o.values.push(n),o.times.push(s.getTime()),o.values.length>this.maxstats&&(o.values.shift(),o.times.shift()),o.endTime=s}getConnectionState(){let t=this.peerconnection.iceConnectionState;return"completed"===t?"connected":t}getDesiredMediaDirection(t){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.tpcUtils.getDesiredMediaDirection(t,i)}
65isSpatialScalabilityOn(){let t=this.tpcUtils.codecSettings[oZ.H264].scalabilityModeEnabled;return!this.options.disableSimulcast&&(this.codecSettings.codecList[0]!==oZ.H264||t)}getAudioLevels(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i={};return(t.length?this._getReceiversByEndpointIds(t,nx.AUDIO):this.peerconnection.getReceivers().filter(t=>t.track&&t.track.kind===nx.AUDIO&&t.track.enabled)).forEach(t=>{let n=t.getSynchronizationSources();null!=n&&n.length&&(i[n[0].source]=n[0].audioLevel)}),i}doesTrueSimulcast(t){let i=this.tpcUtils.getConfiguredVideoCodec(t);return this.isSpatialScalabilityOn()&&this.tpcUtils.isRunningInSimulcastMode(i)}getLocalVideoSSRCs(t){var i;let n=[];if(null==t||!t.isVideoTrack())return n;let r=this.isSpatialScalabilityOn()?o9.SIM:o9.FID;return(null==(i=this.localSSRCs.get(t.rtcId))||null==(i=i.groups)||null==(i=i.find(t=>t.semantics===r))?void 0:i.ssrcs)||n}getLocalTracks(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,i=Array.from(this.localTracks.values());return void 0!==t&&(i=i.filter(i=>i.getType()===t)),i}getLocalVideoTracks(){return this.getLocalTracks(nx.VIDEO)}getRemoteTracks(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=[];if(nR.isSsrcRewritingSupported()){for(let r of this.remoteTracksBySsrc.values()){let o=r.getParticipantId();!o||t&&o!==t||i&&r.getType()!==i||n.push(r)}return n}for(let r of t?[t]:this.remoteTracks.keys()){let t=this.remoteTracks.get(r);if(t)for(let r of t.keys())i&&i!==r||(n=n.concat(Array.from(t.get(r))))}return n}getRemoteSourceInfoBySourceName(t){return rA(this._remoteSsrcMap.get(t))}getRemoteSourceInfoByParticipant(t){let i=new Map,n=this.getRemoteTracks(t);if(null==n||!n.length)return i;let r=n.map(t=>t.getSsrc());for(let t of this._remoteSsrcMap){var o,s=sB(t,2);let n=s[0],a=s[1];null!=(o=a.ssrcList)&&o.some(t=>r.includes(Number(t)))&&i.set(n,a)}return i}getTargetVideoBitrates(t){let i=this.tpcUtils.getConfiguredVideoCodec(t);return this.tpcUtils.codecSettings[i].maxBitratesVideo}getTrackBySSRC(t){if("number"!=typeof t)throw Error(`SSRC ${t} is not a number`);for(let n of this.localTracks.values()){var i;if((null!=(i=this.localSSRCs.get(n.rtcId))?i:{ssrcs:[]}).ssrcs.find(i=>Number(i)===t))return n}if(nR.isSsrcRewritingSupported())return this.remoteTracksBySsrc.get(t);for(let i of this.getRemoteTracks())if(i.getSsrc()===t)return i;return null}getSsrcByTrackId(t){let i=i=>i.getTrack().id===t,n=this.getLocalTracks().find(i);if(n)return this.getLocalSSRC(n);let r=this.getRemoteTracks().find(i);return r?r.getSsrc():null}_remoteTrackAdded(t,i){var n,r,o;let s,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,d=t.id,c=i.kind;if(!this.isP2P&&!oJ.isUserStreamById(d))return;if(sH.info(`${this} Received track event for remote stream[id=${d},type=${c}]`),!c)return void sH.error(`MediaType undefined for remote track, stream id: ${d}, track creation failed!`);let l=new sT(null==(n=this.remoteDescription)?void 0:n.sdp);if(null!=a&&a.mid){let t=a.mid;s=l.media.find(i=>sh.findLine(i,`a=mid:${t}`))}else s=l.media.find(t=>{let i=sh.findLine(t,"a=msid:");return"string"==typeof i&&d===i.substring(7).split(" ")[0]});if(!s)return void sH.error(`Matching media line not found in remote SDP for remote stream[id=${d},type=${c}],track creation failed!`);let u=sh.findLines(s,"a=ssrc:"),h=null!=(r=window.cordova)&&null!=(r=r.plugins)&&r.iosrtc?d.slice(0,d.lastIndexOf("_")):d;if(!(u=u.filter(t=>-1!==t.indexOf(`msid:${h}`))).length)return void sH.error(`No SSRC lines found in remote SDP for remote stream[msid=${d},type=${c}]track creation failed!`);let p=Number(u[0].substring(7).split(" ")[0]),m=this._signalingLayer.getSSRCOwner(p);if(!nO(p)||p<0)return void sH.error(`Invalid SSRC for remote stream[ssrc=${p},id=${d},type=${c}]track creation failed!`);if(!m)return void sH.error(`No SSRC owner known for remote stream[ssrc=${p},id=${d},type=${c}]track creation failed!`);let g=this._signalingLayer.getTrackSourceName(p),f=this._signalingLayer.getPeerMediaInfo(m,c,g),_={mediaType:c,muted:null==(o=null==f?void 0:f.muted)||o,ssrc:p,stream:t,track:i,videoType:null==f?void 0:f.videoType};this._remoteSsrcMap.has(g)&&c===nx.VIDEO&&(_.videoType=this._remoteSsrcMap.get(g).videoType),this._createRemoteTrack(m,g,_)}_createRemoteTrack(t,i,n){var r;let o,s,a=n.mediaType,d=n.muted,c=n.ssrc,l=n.stream,u=n.track,h=n.videoType;if(sH.info(`${this} creating remote track[endpoint=${t},ssrc=${c},type=${a},sourceName=${i}
65]`),nR.isSsrcRewritingSupported()){if(this.remoteTracksBySsrc.get(c))return void sH.info(`${this} ignored duplicated track event for SSRC[ssrc=${c},type=${a}]`)}else if((o=this.remoteTracks.get(t))||((o=new Map).set(nx.AUDIO,new Set),o.set(nx.VIDEO,new Set),this.remoteTracks.set(t,o)),null!=(r=s=o.get(a))&&r.size&&Array.from(s).find(t=>t.getTrack()===u))return void sH.info(`${this} ignored duplicated track event for track[endpoint=${t},type=${a}]`);let p=new sL(this.rtc,this.rtc.conference,t,l,u,a,h,c,d,this.isP2P,i);nR.isSsrcRewritingSupported()?this.remoteTracksBySsrc.set(c,p):s.add(p),this.eventEmitter.emit(nJ.REMOTE_TRACK_ADDED,p,this)}_remoteTrackRemoved(t,i){let n=t.id,r=null==i?void 0:i.id;if(!oJ.isUserStreamById(n))return;if(!n)return void sH.error(`${this} remote track removal failed - no stream ID`);if(!r)return void sH.error(`${this} remote track removal failed - no track ID`);let o=this.getRemoteTracks().find(t=>t.getStreamId()===n&&t.getTrackId()===r);o?this._removeRemoteTrack(o):sH.error(`${this} remote track removal failed - track not found`)}_removeRemoteTrack(t){sH.info(`${this} Removing remote track stream[id=${t.getStreamId()},trackId=${t.getTrackId()}]`),t.dispose();let i=t.getParticipantId();if(!nR.isSsrcRewritingSupported()||i){if(!nR.isSsrcRewritingSupported()){var n;let r=this.remoteTracks.get(i);r?null!=(n=r.get(t.getType()))&&n.delete(t)||sH.error(`${this} Failed to remove ${t} - type mapping messed up ?`):sH.error(`${this} removeRemoteTrack: no remote tracks map for endpoint=${i}`)}this.eventEmitter.emit(nJ.REMOTE_TRACK_REMOVED,t)}}_processAndExtractSourceInfo(t){let i=new Map;if(!t||"string"!=typeof t)throw Error("Local SDP must be a valid string, aborting!!");let n=oX.parse(t).media.filter(t=>t.direction===o0.SENDONLY||t.direction===o0.SENDRECV);if(n.length){for(let t of this.localTracks.values()){var r;let o=t.getSourceName(),s=o8(o),a=t.getType(),d=n.filter(t=>t.type===a),c=d[s].ssrcGroups,l=d[s].ssrcs;if(null!=(r=l)&&r.length){l=l.filter(t=>"cname"===t.attribute);let n={groups:[],msid:`${this.rtc.getLocalEndpointId()}-${a}-${s}`,ssrcs:[]};if(l.forEach(t=>n.ssrcs.push(t.id)),null!=c&&c.length){for(let t of c){let i={semantics:t.semantics,ssrcs:t.ssrcs.split(" ").map(t=>parseInt(t,10))};n.groups.push(i)}let t=c.find(t=>t.semantics===o9.SIM);if(this.isSpatialScalabilityOn()&&!t){let t=c.map(t=>t.ssrcs[0]);n.groups.push({semantics:o9.SIM,ssrcs:t})}}i.set(o,n);let r=this.localSSRCs.get(t.rtcId),d=this._extractPrimarySSRC(r),u=this._extractPrimarySSRC(n);d!==u&&(d&&sH.debug(`${this} Overwriting SSRC for track=${t}] with ssrc=${u}`),this.localSSRCs.set(t.rtcId,n),t.setSsrc(u))}}this._localSsrcMap=i}else this._localSsrcMap=i}getLocalSSRC(t){let i=this._getSSRC(t.rtcId.toString());return null==i?void 0:i.ssrcs[0]}get signalingState(){return this.peerconnection.signalingState}get iceConnectionState(){return this.peerconnection.iceConnectionState}get connectionState(){return this.peerconnection.connectionState}get localDescription(){let t=this.peerconnection.localDescription;return t?(this.trace("getLocalDescription::preTransform",sJ.dumpSDP(t)),this.isP2P||(t=this.tpcUtils.injectSsrcGroupForSimulcast(t),this.trace("getLocalDescription::postTransform (inject ssrc group)",sJ.dumpSDP(t))),t=this.localSdpMunger.transformStreamIdentifiers(t,this._localSsrcMap)):(sH.debug(`${this} getLocalDescription no localDescription found`),{})}get remoteDescription(){let t=this.peerconnection.remoteDescription;return t?(this.trace("getRemoteDescription::preTransform",sJ.dumpSDP(t)),this.isP2P&&(t=this._adjustRemoteMediaDirection(t)),t):(sH.debug(`${this} getRemoteDescription no remoteDescription found`),{})}_getSSRC(t){return this.localSSRCs.get(Number(t))}isSharingLowFpsScreen(){return this._isSharingScreen()&&this._capScreenshareBitrate}_isSharingScreen(){return!!this.getLocalVideoTracks().find(t=>t.videoType===rw.DESKTOP)}addTrackToPc(t){return sH.info(`${this} Adding track=${t} to PC`),this._assertTrackBelongs("addTrackToPc",t)?t.getOriginalStream()?this.replaceTrack(null,t,!0).then(()=>{let i=!1;if(t&&t.isAudioTrack()&&!t.sourceType&&!t.sourceId&&t.deviceId&&t.getTrack()){var n,r,o,s,a,d;let c=null==(n=t.getTrack())||null==(r=n.getSettings)||null==(r=r.call(n))?void 0:r.channelCount;if("number"==typeof c){let t=2===c,n=t?null==(o=this.options)||null==(o=o.audioQuality)?void 0:o.opusMaxAverageBitrateStereo:null==(s=this.options)||null==(s=s.audioQuality)?void 0:s.opusMaxAverageBitrateMono;(null==(a=this.audioQualityLocal)?void 0:a.stereo)===t&&(null==(d=this.audioQualityLocal)?void 0:d.opusMaxAverageBitrate)===n||(this.audioQualityLocal={...this.audioQualityLocal,opusMaxAverageBitrate:n,stereo:t},sH.info(`${this} audio quality updated: stereo=${t}, bitrate=${n}bps`),i=!0)}}return i}):(sH.error(`${this} Unable to add track=${t} to PC - no WebRTC stream`),Promise.reject("Stream not found")):Promise.reject("Track not found on the peerconnection")}_assertTrackBelongs(t,i){let n=this.localTracks.has(null==i?void 0:i.rtcId);return n||sH.error(`${this} ${t}: track=${i} does not belong to pc`),n}getConfiguredVideoCodecs(t){return this.tpcUtils.getConfiguredVideoCodecs(null==t?void 0:t.sdp)}setDesktopSharingFrameRate(t){let i=t<=5;this._capScreenshareBitrate=this.isSpatialScalabilityOn()&&i}setVideoCodecs(t,i){let n=!1;
65if(!this.codecSettings||null==t||!t.length||(this.codecSettings.codecList=t,i&&(this.codecSettings.screenshareCodec=i),!this.usesCodecSelectionAPI()))return n;for(let r of this.getLocalVideoTracks()){let o=this.tpcUtils.getConfiguredVideoCodec(r);i&&r.getVideoType()===rw.DESKTOP&&i!==o?(this.configureVideoSenderEncodings(r,i),n=!0):o!==t[0]&&(this.configureVideoSenderEncodings(r),n=!0)}return n&&ns.sendStatsEntry(ni.CODEC_CHANGED_EVENT,this._pcId,{camera:t[0],screenshare:i}),n}removeTrack(t){let i=t.getOriginalStream();this.trace("removeStream",t.rtcId.toString(),i?i.id:void 0),this._assertTrackBelongs("removeStream",t)&&(this.localTracks.delete(t.rtcId),this.localSSRCs.delete(t.rtcId),i&&this.peerconnection.removeStream(i))}findReceiverForTrack(t){return this.peerconnection.getReceivers().find(i=>i.track===t)}findSenderForTrack(t){return this.peerconnection.getSenders().find(i=>i.track===t)}processLocalSdpForTransceiverInfo(t){var i;let n=null==(i=this.localDescription)?void 0:i.sdp;n&&[nx.AUDIO,nx.VIDEO].forEach(i=>{let r=t.filter(t=>t.getType()===i),o=oX.parse(n).media.filter(t=>t.type===i);r.forEach((t,i)=>{this.localTrackTransceiverMids.has(t.rtcId)||this.localTrackTransceiverMids.set(t.rtcId,o[i].mid.toString())})})}replaceTrack(t,i){var n,r,o;let s,a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!t&&!i)return sH.info(`${this} replaceTrack called with no new track and no old track`),Promise.resolve(!1);sH.info(`${this} TPC.replaceTrack old=${t}, new=${i}`);let d=null!=(n=null==i?void 0:i.getType())?n:null==t?void 0:t.getType(),c=this.getLocalTracks(d),l=null!=(r=null==i?void 0:i.getTrack())?r:null,u=(null==c?void 0:c.length)&&!t&&i&&!c.find(t=>t===i);if(t&&!t.isMuted())s=this.peerconnection.getTransceivers().find(i=>i.sender.track===t.getTrack());else if(u)s=this.peerconnection.getTransceivers().find(t=>t.receiver.track.kind===d&&t.direction===o0.RECVONLY&&(this.isP2P&&t.currentDirection===o0.RECVONLY||t.currentDirection===o0.INACTIVE&&!t.stopped));else{s=this.peerconnection.getTransceivers().find(t=>t.receiver.track.kind===d);let n=null!=(o=null==i?void 0:i.getSourceName())?o:null==t?void 0:t.getSourceName();if(n){let i=o8(n);if(this.isP2P)s=this.peerconnection.getTransceivers().filter(t=>t.receiver.track.kind===d)[i];else if(t){let i=this.localTrackTransceiverMids.get(t.rtcId);s=this.peerconnection.getTransceivers().find(t=>t.mid===i)}else i&&(s=this.peerconnection.getTransceivers().filter(t=>t.receiver.track.kind===d&&t.direction!==o0.RECVONLY)[i])}}return s?s.sender.replaceTrack(l).then(()=>{if(a)return this._sendRtcStatsEvent(null!=t?t:i,t&&!i),Promise.resolve();if(t&&(this.localTracks.delete(t.rtcId),this.localTrackTransceiverMids.delete(t.rtcId)),i){var n;let t=null==(n=s)||null==(n=n.mid)?void 0:n.toString();this.localTrackTransceiverMids.set(i.rtcId,t),this.localTracks.set(i.rtcId,i),t&&this._midsWithSentTrack.add(t),this._sendRtcStatsEvent(i,!1)}if(t&&i){let n=this.localSSRCs.get(t.rtcId);if(n){this.localSSRCs.delete(t.rtcId),this.localSSRCs.set(i.rtcId,n);let r=this._extractPrimarySSRC(n);i.setSsrc(r)}t.getVideoType()===rw.DESKTOP&&ns.sendStatsEntry(ni.SCREENSHARE_MUTE_CHANGED_EVENT,this._pcId,!1)}return s.direction=i||nf.isFirefox()?o0.SENDRECV:o0.RECVONLY,(nf.isFirefox()&&!t&&i&&this.doesTrueSimulcast(i)?this._setEncodings(i):Promise.resolve()).then(()=>this.isP2P)}):Promise.reject(Error(`Replace track failed - no transceiver for old: ${t}, new: ${i}`))}removeTrackFromPc(t){let i=t.getOriginalStream();return this.trace("removeTrack",`${t.rtcId} ${i?i.id:"null"}`),this._assertTrackBelongs("removeTrack",t)?this.replaceTrack(t,null,!0).then(()=>!1):Promise.reject("Track not found in the peerconnection")}updateRemoteSources(t,i){for(let r of t){var n=sB(r,2);let t=n[0],o=n[1];i?this._remoteSsrcMap.set(t,o):this._remoteSsrcMap.delete(t)}}usesCodecSelectionAPI(){return this._usesCodecSelectionAPI&&this.codecSettings.codecList[0]!==oZ.H264}createDataChannel(t,i){return this.trace("createDataChannel",t,i),this.peerconnection.createDataChannel(t,i)}calculateExpectedSendResolution(t){let i=t.getCaptureResolution(),n=Math.min(t.maxEnabledResolution,i);if(t.getVideoType()===rw.CAMERA&&this.doesTrueSimulcast(t)){let r=this.findSenderForTrack(t.getTrack());if(!r)return n;n=r.getParameters().encodings.reduce((t,n)=>(n.active&&(t=Math.max(t,Math.floor(i/n.scaleResolutionDownBy))),t),0)}return n}configureAudioSenderEncodings(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(t)return this._setEncodings(t);let i=[];for(let t of this.getLocalTracks(nx.AUDIO))i.push(this._setEncodings(t));return Promise.allSettled(i)}configureVideoSenderEncodings(){var t,i;let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=null!=r?r:this.codecSett
65ings.codecList[0];if(n){let i=null!=(t=this._senderMaxHeights.get(n.getSourceName()))?t:se[0].height;return this.setSenderVideoConstraints(i,n,o)}let s=[];for(let t of this.getLocalVideoTracks()){let n=null!=(i=this._senderMaxHeights.get(t.getSourceName()))?i:se[0].height;s.push(this.setSenderVideoConstraints(n,t,o))}return Promise.allSettled(s)}setLocalDescription(t){let i=t;return i=this._mungeDescription(i,!0),new Promise((t,n)=>{this.peerconnection.setLocalDescription(i).then(()=>{this.trace("setLocalDescriptionOnSuccess");let n=sh.getUfrag(i.sdp);n!==this._localUfrag&&(this._localUfrag=n,this.eventEmitter.emit(nJ.LOCAL_UFRAG_CHANGED,this,n)),this._initializeDtlsTransport(),t()},t=>{this.trace("setLocalDescriptionOnFailure",t),n(t)})})}setRemoteDescription(t){let i=t;return this.isSpatialScalabilityOn()&&(i=this.tpcUtils.insertUnifiedPlanSimulcastReceive(i),this.trace("setRemoteDescription::postTransform (sim receive)",sJ.dumpSDP(i))),i=this.tpcUtils.ensureCorrectOrderOfSsrcs(i),this.trace("setRemoteDescription::postTransform (correct ssrc order)",sJ.dumpSDP(i)),i=this._mungeDescription(i,!1),new Promise((t,n)=>{this.peerconnection.setRemoteDescription(i).then(()=>{this.trace("setRemoteDescriptionOnSuccess");let n=sh.getUfrag(i.sdp);n!==this._remoteUfrag&&(this._remoteUfrag=n,this.eventEmitter.emit(nJ.REMOTE_UFRAG_CHANGED,this,n)),this._initializeDtlsTransport(),t()}).catch(t=>{this.trace("setRemoteDescriptionOnFailure",t),n(t)})})}setSenderVideoConstraints(t,i,n){if(t<0||!nO(t))throw Error(`Invalid frameHeight: ${t}`);if(!i)throw Error("Local video track is missing");let r=i.getSourceName();if(this._senderMaxHeights.set(r,t),i.isMuted())return Promise.resolve();let o=null!=n?n:this.codecSettings.codecList[0];return this._updateVideoSenderParameters(()=>this._updateVideoSenderEncodings(t,i,o))}setMediaTransferActive(t,i){sH.info(`${this} ${t?"Resuming":"Suspending"} media transfer.`);let n=this.peerconnection.getSenders().filter(t=>!!t.track&&(!i||t.track.kind===i)),r=[];for(let i of n)i.track.kind===nx.VIDEO?r.push(this._updateVideoSenderParameters(()=>this._enableSenderEncodings(i,t))):r.push(this._enableSenderEncodings(i,t));return Promise.allSettled(r).then(t=>{let i=t.filter(t=>"rejected"===t.status).map(t=>t.reason);return i.length?Promise.reject(Error(`Failed to change encodings on the RTCRtpSenders${i.join(" ")}`)):Promise.resolve()})}setVideoTransferActive(t){sH.debug(`${this} video transfer active: ${t}`);let i=this.videoTransferActive!==t;return this.videoTransferActive=t,i?this.setMediaTransferActive(t,nx.VIDEO):Promise.resolve()}sendTones(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200;if(!this._dtmfSender){if(this.peerconnection.getSenders){let t=this.peerconnection.getSenders().find(t=>t.dtmf);this._dtmfSender=null==t?void 0:t.dtmf,this._dtmfSender&&sH.info(`${this} initialized DTMFSender using getSenders`)}if(!this._dtmfSender){let t=Array.from(this.localTracks.values()).find(t=>t.isAudioTrack());this.peerconnection.createDTMFSender&&t&&(this._dtmfSender=this.peerconnection.createDTMFSender(t.getTrack())),this._dtmfSender&&sH.info(`${this} initialized DTMFSender using deprecated createDTMFSender`)}this._dtmfSender&&(this._dtmfSender.ontonechange=this._onToneChange.bind(this))}if(this._dtmfSender){if(this._dtmfSender.toneBuffer)return void this._dtmfTonesQueue.push({duration:i,interToneGap:n,tones:t});this._dtmfSender.insertDTMF(t,i,n)}else sH.warn(`${this} sendTones - failed to select DTMFSender`)}close(){if(this.trace("stop"),this._signalingLayer.off(o1.PEER_MUTED_CHANGED,this._peerMutedChanged),this._signalingLayer.off(o1.PEER_VIDEO_TYPE_CHANGED,this._peerVideoTypeChanged),this.peerconnection.removeEventListener("track",this.onTrack),nR.isSsrcRewritingSupported()){for(let t of this.remoteTracksBySsrc.values())this._removeRemoteTrack(t);this.remoteTracksBySsrc.clear()}else{for(let t of this.remoteTracks.values())for(let i of t.values())for(let t of i)this._removeRemoteTrack(t);this.remoteTracks.clear()}this._dtmfSender=null,this._dtmfTonesQueue=[],this.rtc._removePeerConnection(this)||sH.error(`${this} rtc._removePeerConnection returned false`),null!==this.statsinterval&&(window.clearInterval(this.statsinterval),this.statsinterval=null),sH.info(`${this} Closing peerconnection`),this.peerconnection.close()}createAnswer(t){return this._createOfferOrAnswer(!1,t)}createOffer(t){return this._createOfferOrAnswer(!0,t)}addRemoteSsrc(t){let i=this.remoteSSRCs.has(t);return i||this.remoteSSRCs.add(t),!i}addIceCandidate(t){return this.trace("addIceCandidate",JSON.stringify({candidate:t.candidate,sdpMLineIndex:t.sdpMLineIndex,sdpMid:t.sdpMid,usernameFragment:t.usernameFragment},null," ")),this.peerconnection.addIceCandidate(t)}getStats(){return this.peerconnection.getStats()}toString(){return`TPC[id=${this.id},type=${this.isP2P?"P2P":"JVB"}]`}}s$(sJ,"dumpSDP",function(t){return null!=t&&t.sdp?`type: ${t.type}\r 66${t.sdp}`:""});let sq=(0,m.getLogger)("rtc:RTC"),sG=0,sz=0;function sK(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).map(t=>{let i=t.constraints,n=t.sourceId,r=t.sourceType,o=t.stream,s=t.track,a=t.videoType,d=t.effects,c=s.getSettings(),l=c.deviceId,u=c.facingMode;return sz=nA(sz),new oQ({constraints:i,deviceId:l,effects:d,facingMode:u,mediaType:s.kind,rtcId:sz,sourceId:n,sourceType:r,stream
66:o,track:s,videoType:a||null})})}class sW extends rI{constructor(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this.conference=t,this.peerConnections=new Map,this.localTracks=[],this.options=i,this._channel=null,this._lastN=void 0,this._forwardedSources=null,this._forwardedSourcesChangeListener=this._onForwardedSourcesChanged.bind(this),this._onDeviceListChanged=this._onDeviceListChanged.bind(this),this._updateAudioOutputForAudioTracks=this._updateAudioOutputForAudioTracks.bind(this),oJ.isDeviceChangeAvailable("output")&&(oJ.addListener(nJ.AUDIO_OUTPUT_DEVICE_CHANGED,this._updateAudioOutputForAudioTracks),oJ.addListener(nJ.DEVICE_LIST_CHANGED,this._onDeviceListChanged))}destroy(){oJ.removeListener(nJ.AUDIO_OUTPUT_DEVICE_CHANGED,this._updateAudioOutputForAudioTracks),oJ.removeListener(nJ.DEVICE_LIST_CHANGED,this._onDeviceListChanged),this._channelOpenListener&&this.removeListener(nJ.DATA_CHANNEL_OPEN,this._channelOpenListener)}static createLocalTracks(t){return sK(t)}static obtainAudioAndVideoPermissions(t){return oJ.obtainAudioAndVideoPermissions(t).then(t=>sK(t))}initializeBridgeChannel(t,i){this._channel=new rN(t,i,this.eventEmitter,this.conference),this._channelOpenListener=()=>{let t=(t,i,n)=>{sq.error(`Cannot send ${i}(${JSON.stringify(n)}) endpoint message`,t)};if(this._receiverVideoConstraints)try{this._channel.sendReceiverVideoConstraintsMessage(this._receiverVideoConstraints)}catch(i){t(i,"ReceiverVideoConstraints",this._receiverVideoConstraints)}if(void 0!==this._lastN&&-1!==this._lastN)try{this._channel.sendSetLastNMessage(this._lastN)}catch(i){t(i,"LastNChangedEvent",this._lastN)}},this.addListener(nJ.DATA_CHANNEL_OPEN,this._channelOpenListener),this.addListener(nJ.FORWARDED_SOURCES_CHANGED,this._forwardedSourcesChangeListener)}_onDeviceListChanged(){this._updateAudioOutputForAudioTracks(oJ.getAudioOutputDevice())}_onForwardedSourcesChanged(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=this._forwardedSources||[],n=[],r=[],o=Date.now();this._forwardedSources=t,n=i.filter(t=>!this.isInForwardedSources(t)),r=t.filter(t=>-1===i.indexOf(t)),sq.debug(`Fowarded sources changed leaving=${n}, entering=${r} at ${o}`),this.conference.eventEmitter.emit(tT.FORWARDED_SOURCES_CHANGED,n,r,o)}onCallEnded(){this._channel&&(this._channel&&"websocket"===this._channel.mode&&this._channel.close(),this._channel=null)}setDesktopSharingFrameRate(t){oJ.setDesktopSharingFrameRate(t)}setReceiverVideoConstraints(t){ir(this._receiverVideoConstraints,t)||(this._receiverVideoConstraints=rA(t),this._channel&&this._channel.isOpen()&&this._channel.sendReceiverVideoConstraintsMessage(t))}sendSourceVideoType(t,i){this._channel&&this._channel.isOpen()&&this._channel.sendSourceVideoTypeMessage(t,i)}static addListener(t,i){oJ.addListener(t,i)}static removeListener(t,i){oJ.removeListener(t,i)}static init(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.options=t,oJ.init(this.options)}createPeerConnection(t,i,n,r){r.enableInsertableStreams&&(sq.debug("E2EE - setting insertable streams constraints"),i.encodedInsertableStreams=!0),r.forceTurnRelay&&(i.iceTransportPolicy="relay"),i.bundlePolicy="max-bundle";let o=new sJ(this,sG=nA(sG),t,i,{},n,r);return this.peerConnections.set(o.id,o),o}_removePeerConnection(t){let i=t.id;return!!this.peerConnections.has(i)&&(this.peerConnections.delete(i),!0)}addLocalTrack(t){if(!t)throw Error("track must not be null nor undefined");this.localTracks.push(t),t.conference=this.conference}getForwardedSources(){return this._forwardedSources}getLocalVideoTrack(){let t=this.getLocalTracks(nx.VIDEO);return t.length?t[0]:void 0}getLocalVideoTracks(){return this.getLocalTracks(nx.VIDEO)}getLocalAudioTrack(){let t=this.getLocalTracks(nx.AUDIO);return t.length?t[0]:void 0}getLocalEndpointId(){return this.conference.myUserId()}getLocalTracks(t){return t?this.localTracks.filter(i=>i.getType()===t):this.localTracks.slice()}getRemoteTracks(t){let i=[];for(let n of this.peerConnections.values()){let r=n.getRemoteTracks(void 0,t);r&&(i=i.concat(r))}return i}setAudioMute(){let t=[];return this.getLocalTracks(nx.AUDIO).forEach(i=>
66{t.push(i.mute())}),Promise.all(t)}setVideoMute(){let t=[];return this.localTracks.filter(t=>t.getType()===nx.VIDEO&&t.getVideoType()===rw.CAMERA).forEach(i=>t.push(i.mute())),Promise.all(t)}setDesktopMute(){let t=[];return this.localTracks.filter(t=>t.getType()===nx.VIDEO&&t.getVideoType()===rw.DESKTOP).forEach(i=>t.push(i.mute())),Promise.all(t)}removeLocalTrack(t){let i=this.localTracks.indexOf(t);-1!==i&&this.localTracks.splice(i,1)}static attachMediaStream(t,i){return oJ.attachMediaStream(t,i)}static isDeviceChangeAvailable(t){return oJ.isDeviceChangeAvailable(t)}static isWebRtcSupported(){return nf.isSupported()}static getAudioOutputDevice(){return oJ.getAudioOutputDevice()}static getCurrentlyAvailableMediaDevices(){return oJ.getCurrentlyAvailableMediaDevices()}static getEventDataForActiveDevice(t){return oJ.getEventDataForActiveDevice(t)}static setAudioOutputDevice(t){return oJ.setAudioOutputDevice(t)}static enumerateDevices(t){oJ.enumerateDevices(t)}static stopMediaStream(t){oJ.stopMediaStream(t)}static isDesktopSharingEnabled(){return oJ.isDesktopSharingEnabled()}closeBridgeChannel(){this._channel&&(this._channel.close(),this._channel=null)}setAudioLevel(t,i,n,r){let o=t.getTrackBySSRC(i);o&&(o.isAudioTrack()?(o.isLocal()!==r&&sq.error(`${o} was expected to ${r?"be":"not be"} local`),o.setAudioLevel(n,t)):sq.warn(`Received audio level for non-audio track: ${i}`))}sendChannelMessage(t,i){if(!this._channel)throw Error("BridgeChannel has not been initialized yet");this._channel.sendMessage(t,i)}sendEndpointStatsMessage(t){this._channel&&this._channel.isOpen()&&this._channel.sendEndpointStatsMessage(t)}sendReceiverAudioSubscriptionMessage(t){this._channel&&this._channel.isOpen()&&this._channel.sendReceiverAudioSubscriptionMessage(t)}setLastN(t){this._lastN!==t&&(this._lastN=t,this._channel&&this._channel.isOpen()&&this._channel.sendSetLastNMessage(t),this.eventEmitter.emit(nJ.LASTN_VALUE_CHANGED,t))}isInForwardedSources(t){return!this._forwardedSources||this._forwardedSources.indexOf(t)>-1}_updateAudioOutputForAudioTracks(t){for(let i of this.getRemoteTracks(nx.AUDIO))i.setAudioOutput(t)}}let sY=function(t){return t.LOCAL_STATS_UPDATED="cq.local_stats_updated",t.REMOTE_STATS_UPDATED="cq.remote_stats_updated",t}({}),sQ=(0,m.getLogger)("connectivity:ConnectionQuality");class sX{constructor(t,i,n){this.eventEmitter=i,this._conference=t,this._localStats={connectionQuality:100,jvbRTT:void 0},this._lastConnectionQualityUpdate=-1,this._options=n,this._remoteStats={},this._timeIceConnected=-1,this._timeVideoUnmuted=-1,t.on(tT.BRIDGE_BWE_STATS_RECEIVED,t=>{var i;t&&null!=(i=this._localStats)&&i.bandwidth&&(this._localStats.bandwidth.download=Math.floor(t/1e3))}),t.on(tT.CONNECTION_INTERRUPTED,()=>{this._updateLocalConnectionQuality(0),this.eventEmitter.emit(sY.LOCAL_STATS_UPDATED,this._localStats),this._broadcastLocalStats()}),t.room.addListener(nG.ICE_CONNECTION_STATE_CHANGED,(t,i)=>{t.isP2P||"connected"!==i||(this._timeIceConnected=window.performance.now())}),t.on(tT.ENDPOINT_MESSAGE_RECEIVED,(t,i)=>{"stats"===i.type&&this._updateRemoteStats(t.getId(),i.values)}),t.on(tT.ENDPOINT_STATS_RECEIVED,(t,i)=>{this._updateRemoteStats(t.getId(),i)}),this._options.config.disableLocalStats||t.statistics.addConnectionStatsListener(this._updateLocalStats.bind(this)),t.on(tT.TRACK_MUTE_CHANGED,t=>{t.isVideoTrack()&&(t.isMuted()?this._timeVideoUnmuted=-1:this._maybeUpdateUnmuteTime())}),t.on(tT.TRACK_ADDED,t=>{t.isVideoTrack()&&!t.isMuted()&&this._maybeUpdateUnmuteTime()}),t.on(tT.VIDEO_CODEC_CHANGED,this._resetVideoUnmuteTime.bind(this)),t.on(tT._MEDIA_SESSION_ACTIVE_CHANGED,this._resetVideoUnmuteTime.bind(this)),t.rtc.on(nJ.LOCAL_TRACK_MAX_ENABLED_RESOLUTION_CHANGED,t=>{this._localStats.maxEnabledResolution=t.maxEnabledResolution}),t.on(tT.SERVER_REGION_CHANGED,t=>{this._localStats.serverRegion=t}),t.on(tT.PROPERTIES_CHANGED,t=>{this._localStats.bridgeCount=Number(null==t?void 0:t["bridge-count"])})}_broadcastLocalStats(){if(this._options.config.disableLocalStatsBroadcast)return;let t={bitrate:this._localStats.bitrate,connectionQuality:this._localStats.connectionQuality,jvbRTT:this._localStats.jvbRTT,maxEnabledResolution:this._localStats.maxEnabledResolution,packetLoss:this._localStats.packetLoss,serverRegion:this._localStats.serverRegion};try{this._conference.sendEndpointStatsMessage(t)}catch(t){}}_calculateConnectionQuality(t,i,n){let r=oC[n],o,s=100;if(this._localStats.packetLoss&&(o=this._localStats.packetLoss.upload),i||!r||t===rw.DESKTOP||this._timeIceConnected<0||this._timeVideoUnmuted<0)void 0===o?(sQ.error("Cannot calculate connection quality, unknown packet loss."),s=100):s=o<=2?100:o<=4?70:o<=6?50:o<=8?30:10*(o<=12);else{let t=this._conference.getActivePeerConnection();if(t){var a,d;let i=window.performance.now()-Math.max(this._timeVideoUnmuted,this._timeIceConnected),n=null!=(a=null==(d=this._options.config)?void 0:d.pcStatsInterval)?a:1e4,o=function(t,i,n,r){let o=0,s=Math.min(i.height,i.width),a=se.find(t=>t.height<=s);if(a&&t)for(s=a.height;s>=180;s/=2){let t=s;if(!(a=se.find(i=>i.height===t)))break;o+=r[a.level]}else a&&(o=r[a.level]);return Math.min(o/1e3,function(t){return t>6e4?Number.MAX_SAFE_INTEGER:800*Math.pow(1.08,t/1e3)}(Math.max(0,n-1e3)))}(t.doesTrueSimulcast(void 0),r,i,t.getTargetVideoBitrates(void 0));o=Math.min(o,2500),i>n&&(s=100*this._localStats.bitrate.upload/o)}o&&o>=10&&(s=Math.min(s,30))}if(this._lastConnectionQualityUpdate>0){let t=2;s=Math.min(s,this._localStats.connectionQuality+(window.performance.now()-this._lastConnectionQualityUpdate)/1e3*t)}return Math.min(100,s)}_maybeUpdateUnmuteTime(){this._timeVideoUnmuted<0&&(this._timeVideoUnmuted=window.performance.now())}_resetVideoUnmuteTime(){this._timeVideoUnmuted=-1,this._maybeUpdateUnmuteTime()}_updateLocalConnectionQuality(t){this._localStats.connectionQuality=t,this._lastConnectionQualityUpdate=window.performance.now()}_updateLocalStats(t,i){let n;if(!t.isP2P){var r;let t=(null==(r=i.transport)?void 0:r.length)&&i.transport[0].rtt;this._localStats.jvbRTT=t||void 0}if(t!==this._conference.getActivePeerConnection())return;let o=!this._conference.isConnectionInterrupted(),s=this._conference.getLocalVideoTrack(),a=null==s?void 0:s.videoType,d=!s||s.isMuted(),c=s?Math.min(s.resolution,s.maxEnabledResolution).toString():null;for(n in d||this._maybeUpdateUnmuteTime(),i)i.hasOwnProperty(n)&&("bandwidth"===n&&i[n].hasOwnProperty("download")&&!t.isP2P?(this._localStats[n]||(this._localStats[n]={}),this._localStats[n].download=this._localStats[n].download||i[n].download,this._localStats[n].upload=i[n].upload):this._localStats[n]=i[n]);o&&this._updateLocalConnectionQuality(this._calculateConnectionQuality(a,d,c)),this.eventEmitter.emit(sY.LOCAL_STATS_UPDATED,this._localStats),this._broadcastLocalStats()}_updateRemoteStats(t,i){this._remoteStats[t]={bitrate:i.bitrate,connectionQuality:i.
66connectionQuality,jvbRTT:i.jvbRTT,maxEnabledResolution:i.maxEnabledResolution,packetLoss:i.packetLoss,serverRegion:i.serverRegion},this.eventEmitter.emit(sY.REMOTE_STATS_UPDATED,t,this._remoteStats[t])}getStats(){return this._localStats}}let sZ=(0,m.getLogger)("connectivity:IceFailedHandling");class s0{constructor(t){var i,n,r;i=this,r=!1,(n=function(t){var i=function(t){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,"string");if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof i?i:i+""}(n="_canceled"))in i?Object.defineProperty(i,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[n]=r,this._conference=t}_actOnIceFailed(){if(!this._conference.room)return;let t=this._conference.jvbJingleSession,i=null==t?void 0:t.getIceConnectionState();t?"connected"===i?sZ.info("ICE connection restored - not sending ICE failed"):(sZ.info(`Sending ICE failed - the connection did not recover, ICE state: ${i}`),ns.sendStatsEntry(ni.JVB_ICE_RESTARTED_EVENT),this._conference._stopJvbSession({reason:"connectivity-error",reasonDescription:"ICE FAILED",requestRestart:!0,sendSessionTerminate:!0})):sZ.warn("Not sending ICE failed - no JVB connection")}start(){this._conference.xmpp.ping(65e3).then(()=>{this._canceled||(this._iceFailedTimeout=window.setTimeout(()=>{this._iceFailedTimeout=void 0,this._actOnIceFailed()},2e3))},t=>{sZ.error("PING error/timeout - not sending ICE failed",t)})}cancel(){this._canceled=!0,window.clearTimeout(this._iceFailedTimeout)}}let s1=function(t){return t.AUDIO_INPUT_STATE_CHANGE="audio_input_state_changed",t.DETECTOR_STATE_CHANGE="detector_state_change",t.NO_AUDIO_INPUT="no_audio_input_detected",t.VAD_NOISY_DEVICE="detection.vad_noise_device",t.VAD_REPORT_PUBLISHED="vad-report-published",t.VAD_SCORE_PUBLISHED="detection.vad_score_published",t.VAD_TALK_WHILE_MUTED="detection.vad_talk_while_muted",t}({});class s2 extends nt{constructor(t){super(),this._conference=t,this._timeoutTrigger=null,this._hasAudioInput=null,this._audioTrack=null,this._eventFired=!1,t.on(tT.TRACK_ADDED,this._trackAdded.bind(this))}_clearTriggerTimeout(){this._timeoutTrigger&&(clearTimeout(this._timeoutTrigger),this._timeoutTrigger=null)}_handleAudioInputStateChange(t){let i=0!==t;null!==this._hasAudioInput&&this._hasAudioInput===i||(this._hasAudioInput=i,this.emit(s1.AUDIO_INPUT_STATE_CHANGE,this._hasAudioInput))}_handleNoAudioInputDetection(t){this._eventFired||(0!==t||this._timeoutTrigger?0!==t&&this._timeoutTrigger&&this._clearTriggerTimeout():this._timeoutTrigger=setTimeout(()=>{this._eventFired=!0,this.emit(s1.NO_AUDIO_INPUT)},4e3))}_audioLevel(t,i,n,r){if(!r||!this._audioTrack)return;let o=t.localSSRCs.get(this._audioTrack.rtcId);null!=o&&o.ssrcs.includes(i)&&(this._handleAudioInputStateChange(n),this._handleNoAudioInputDetection(n))}_trackAdded(t){t.isLocalAudioTrack()&&(this._audioTrack=t,this._eventFired=!1,this._clearTriggerTimeout(),t.on(is.NO_AUDIO_INPUT,t=>{this._handleNoAudioInputDetection(t)}),t.on(is.TRACK_AUDIO_LEVEL_CHANGED,t=>{this._handleNoAudioInputDetection(t),this._handleAudioInputStateChange(t)}))}}class s6{constructor(t){this.conference=t,t.addEventListener(tT.TRACK_AUDIO_LEVEL_CHANGED,this._audioLevel.bind(this)),this.myUserID=this.conference.myUserId()}_audioLevel(t,i){!this.conference.isP2PActive()||i<=.6||t===this.myUserID&&this.conference.getLocalAudioTrack().isMuted()||this.conference.rtc.eventEmitter.emit(nJ.DOMINANT_SPEAKER_CHANGED,t)}}function s8(t){let i=window.AudioContext||window.webkitAudioContext;if(i)return new i(t)}class s5 extends nt{constructor(t,i,n){super(),this._procNodeSampleRate=t,this._vadProcessor=i,this._localTrack=n,this._bufferResidue=new Float32Array([]),this._audioContext=s8({sampleRate:i.getRequiredPCMFrequency()}),this._vadSampleSize=i.getSampleLength(),this._onAudioProcess=this._onAudioProcess.bind(this),this._initializeAudioContext()}static create(t,i,n){return sW.obtainAudioAndVideoPermissions({devices:["audio"],micDeviceId:t}).then(r=>{if(!r[0])throw Error(`Failed to create jitsi local track for device id: ${t}`);return new s5(i,n,r[0])})}_initializeAudioContext(){this._audioSource=this._audioContext.createMediaStreamSource(this._localTrack.stream),this._audioProcessingNode=this._audioContext.createScriptProcessor(this._procNodeSampleRate,1,1)}_onAudioProcess(t){let i=t.inputBuffer.getChannelData(0),n=[...this._bufferResidue,...i],r=Date.now(),o=0;for(;o+this._vadSampleSize<n.length;o+=this._vadSampleSize){let t=n.slice(o,o+this._vadSampleSize),i=this._vadProcessor.calculateAudioFrameVAD(t.slice());
66this.emit(s1.VAD_SCORE_PUBLISHED,{deviceId:this._localTrack.getDeviceId(),pcmData:t,score:i,timestamp:r})}this._bufferResidue=new Float32Array(n.slice(o,n.length))}_connectAudioGraph(){this._audioProcessingNode.onaudioprocess=this._onAudioProcess,this._audioSource.connect(this._audioProcessingNode),this._audioProcessingNode.connect(this._audioContext.destination)}_disconnectAudioGraph(){this._audioProcessingNode.onaudioprocess=()=>{},this._audioProcessingNode.disconnect(),this._audioSource.disconnect()}_cleanupResources(){this._disconnectAudioGraph(),this._localTrack.stopStream()}start(){this._connectAudioGraph()}stop(){this._disconnectAudioGraph(),this._bufferResidue=new Float32Array([])}destroy(){this._destroyed||(this._cleanupResources(),this._destroyed=!0)}}let s4=(0,m.getLogger)("vad:VADAudioAnalyser");class s9 extends nt{constructor(t,i){super(),this._createVADProcessor=i,this._vadEmitter=null,this._isVADEmitterRunning=!1,this._detectionServices=[],this._vadInitTracker=Promise.resolve(),this._processVADScore=this._processVADScore.bind(this),t.on(tT.TRACK_ADDED,this._trackAdded.bind(this)),t.on(tT.TRACK_REMOVED,this._trackRemoved.bind(this)),t.on(tT.TRACK_MUTE_CHANGED,this._trackMuteChanged.bind(this))}addVADDetectionService(t){this._detectionServices.push(t),t.on(s1.DETECTOR_STATE_CHANGE,()=>{!this._detectionServices.filter(t=>!0===t.isActive()).length&&this._isVADEmitterRunning?this._stopVADEmitter():this._isVADEmitterRunning||this._startVADEmitter()})}_startVADEmitter(){this._vadEmitter&&(this._vadEmitter.on(s1.VAD_SCORE_PUBLISHED,this._processVADScore),this._vadEmitter.start(),this._isVADEmitterRunning=!0)}_stopVADEmitter(){this._vadEmitter&&(this._vadEmitter.removeListener(s1.VAD_SCORE_PUBLISHED,this._processVADScore),this._vadEmitter.stop()),this._isVADEmitterRunning=!1}_processVADScore(t){for(let i of this._detectionServices)i.processVADScore(t)}_changeDetectorsMuteState(t){for(let i of this._detectionServices)i.changeMuteState(t)}_trackAdded(t){t.isLocalAudioTrack()&&(this._vadInitTracker=this._vadInitTracker.then(()=>this._createVADProcessor()).then(i=>s5.create(t.getDeviceId(),4096,i)).then(i=>{s4.debug("Created VAD emitter for track: ",t.getTrackLabel()),this._vadEmitter=i,this._changeDetectorsMuteState(t.isMuted())}).catch(t=>{s4.warn("Failed to start VADAudioAnalyser",t)}))}_trackMuteChanged(t){t.isLocalAudioTrack()&&(this._vadInitTracker=this._vadInitTracker.then(()=>{this._changeDetectorsMuteState(t.isMuted())}))}_trackRemoved(t){t.isLocalAudioTrack()&&(this._vadInitTracker=this._vadInitTracker.then(()=>{for(let i of(s4.debug("Removing track from VAD detection - ",t.getTrackLabel()),this._vadEmitter&&(this._stopVADEmitter(),this._vadEmitter.destroy(),this._vadEmitter=null),this._detectionServices))i.reset()}))}}class s7 extends nt{constructor(){super(),this._processing=!1,this._scoreArray=[],this._audioLvlArray=[],this._active=!1,this._processTimeout=null,this._calculateNoisyScore=this._calculateNoisyScore.bind(this)}_calculateNoisyScore(){let t=nw(new Float32Array(this._scoreArray)),i=nw(new Float32Array(this._audioLvlArray));t<.2&&i>
66.04&&(this.emit(s1.VAD_NOISY_DEVICE),this._setActiveState(!1)),this.reset()}_setActiveState(t){this._active=t,this.emit(s1.DETECTOR_STATE_CHANGE,this._active)}_recordValues(t,i){this._scoreArray.push(t),this._audioLvlArray.push(i)}changeMuteState(t){this._setActiveState(!t),this.reset()}isActive(){return this._active}processVADScore(t){if(this._active){if(this._processing){let i=nI(Array.isArray(t.pcmData)?new Float32Array(t.pcmData):t.pcmData);return void this._recordValues(t.score,nw(new Float32Array(i)))}if(t.score<.2){let i=nI(Array.isArray(t.pcmData)?new Float32Array(t.pcmData):t.pcmData),n=nw(new Float32Array(i));n>.02&&(this._processing=!0,this._recordValues(t.score,n),this._processTimeout=setTimeout(this._calculateNoisyScore,1500))}}}reset(){this._processing=!1,this._scoreArray=[],this._audioLvlArray=[],this._processTimeout&&(clearTimeout(this._processTimeout),this._processTimeout=null)}}class s3 extends nt{constructor(){super(),this._processing=!1,this._scoreArray=[],this._active=!1,this._calculateVADScore=this._calculateVADScore.bind(this)}_calculateVADScore(){nw(new Float32Array(this._scoreArray))>.6&&(this.emit(s1.VAD_TALK_WHILE_MUTED),this._setActiveState(!1)),this.reset()}_setActiveState(t){this._active=t,this.emit(s1.DETECTOR_STATE_CHANGE,this._active)}changeMuteState(t){this._setActiveState(t),this.reset()}isActive(){return this._active}processVADScore(t){this._active&&(this._processing?this._scoreArray.push(t.score):t.score>.9&&(this._processing=!0,this._scoreArray.push(t.score),this._processTimeout=setTimeout(this._calculateVADScore,700)))}reset(){this._processing=!1,this._scoreArray=[],clearTimeout(this._processTimeout)}}class ae{constructor(){this.promise=new Promise((t,i)=>{this.resolve=i=>{this.clearRejectTimeout(),t(i)},this.reject=t=>{this.clearRejectTimeout(),i(t)}}),this.then=this.promise.then.bind(this.promise),this.catch=this.promise.catch.bind(this.promise)}clearRejectTimeout(){clearTimeout(this._timeout)}setRejectTimeout(t){this._timeout=setTimeout(()=>{this.reject(Error("timeout"))},t)}}let at=(0,m.getLogger)("e2ee:E2EEContext"),ai=Symbol("kJitsiE2EE");class an{constructor(){let t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).sharedKey,i="";const n=document.querySelector('script[src*="lib-jitsi-meet"]');if(n){const t=n.src.lastIndexOf("/");i=`${n.src.substring(0,t)}/`}let r=`${i}lib-jitsi-meet.e2ee-worker.js`;if(i&&"/"!==i){const t=new Blob([`importScripts("${r}");`],{type:"application/javascript"});r=window.URL.createObjectURL(t)}this._worker=new Worker(r,{name:"E2EE Worker"}),this._worker.onerror=t=>at.error(t),this._worker.postMessage({operation:"initialize",sharedKey:t})}cleanup(t){this._worker.postMessage({operation:"cleanup",participantId:t})}cleanupAll(){this._worker.postMessage({operation:"cleanupAll"})}
66handleReceiver(t,i,n){if(!t[ai])if(t[ai]=!0,window.RTCRtpScriptTransform){let i={operation:"decode",participantId:n};t.transform=new RTCRtpScriptTransform(this._worker,i)}else{let i=t.createEncodedStreams();this._worker.postMessage({operation:"decode",participantId:n,readableStream:i.readable,writableStream:i.writable},[i.readable,i.writable])}}handleSender(t,i,n){if(!t[ai])if(t[ai]=!0,window.RTCRtpScriptTransform){let i={operation:"encode",participantId:n};t.transform=new RTCRtpScriptTransform(this._worker,i)}else{let i=t.createEncodedStreams();this._worker.postMessage({operation:"encode",participantId:n,readableStream:i.readable,writableStream:i.writable},[i.readable,i.writable])}}setEnabled(t){this._worker.postMessage({enabled:t,operation:"setEnabled"})}setKey(t,i,n){this._worker.postMessage({key:i,keyIndex:n,operation:"setKey",participantId:t})}}let ar=(0,m.getLogger)("e2ee:KeyHandler");class ao extends rI{constructor(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this.conference=t,this.e2eeCtx=new an(i),this.enabled=!1,this._enabling=void 0,this._firstEnable=!1,this.conference.on(tT._MEDIA_SESSION_STARTED,this._onMediaSessionStarted.bind(this)),this.conference.on(tT.TRACK_ADDED,t=>t.isLocal()&&this._onLocalTrackAdded(t)),this.conference.rtc.on(nJ.REMOTE_TRACK_ADDED,(t,i)=>this._setupReceiverE2EEForTrack(i,t)),this.conference.on(tT.TRACK_MUTE_CHANGED,this._trackMuteChanged.bind(this))}isEnabled(){return this.enabled}async setEnabled(t){this._enabling&&await this._enabling,t!==this.enabled&&(this._enabling=new ae,this.enabled=t,this.conference.setLocalParticipantProperty("e2ee.enabled",t),this._setEnabled&&await this._setEnabled(t),!this._firstEnable&&t&&(this._firstEnable=!0,this.conference._restartMediaSessions()),this.e2eeCtx.setEnabled(t),this._enabling.resolve())}_onLocalTrackAdded(t){for(let i of this.conference.getMediaSessions())this._setupSenderE2EEForTrack(i,t)}_onMediaSessionStarted(t){for(let i of this.conference.getLocalTracks())this._setupSenderE2EEForTrack(t,i)}_setupReceiverE2EEForTrack(t,i){if(!this.enabled&&!this._firstEnable)return;let n=t.findReceiverForTrack(i.track);n?this.e2eeCtx.handleReceiver(n,i.getType(),i.getParticipantId()):ar.warn(`Could not handle E2EE for ${i}: receiver not found in: ${t}`)}_setupSenderE2EEForTrack(t,i){if(!this.enabled&&!this._firstEnable)return;let n=t.peerconnection,r=n&&n.findSenderForTrack(i.track);r?this.e2eeCtx.handleSender(r,i.getType(),i.getParticipantId()):ar.warn(`Could not handle E2EE for ${i}: sender not found in ${n}`)}_trackMuteChanged(t){if(nf.doesVideoMuteByStreamRemove()&&t.isLocal()&&t.isVideoTrack()&&!t.isMuted())for(let i of this.conference.getMediaSessions())this._setupSenderE2EEForTrack(i,t)}}class as extends ao{constructor(t){super(t,{sharedKey:!0})}setKey(t){this.e2eeCtx.setKey(void 0,{encryptionKey:t.encryptionKey},t.index)}}let aa=function(){return C.Date.now()};var ad=/\s/,ac=/^\s+/;let al=function(t){return t?t.slice(0,function(t){for(var i=t.length;i--&&ad.test(t.charAt(i)););return i}(t)+1).replace(ac,""):t},au=function(t){return"symbol"==typeof t||eC(t)&&"[object Symbol]"==k(t)};var ah=/^[-+]0x[0-9a-f]+$/i,ap=/^0b[01]+$/i,am=/^0o[0-7]+$/i,ag=parseInt;let af=function(t){if("number"==typeof t)return t;if(au(t))return NaN;if(O(t)){var i="function"==typeof t.valueOf?t.valueOf():t;t=O(i)?i+"":i}if("string"!=typeof t)return 0===t?t:+t;t=al(t);var n=ap.test(t);return n||am.test(t)?ag(t.slice(2),n?2:8):ah.test(t)?NaN:+t};var a_=Math.max,av=Math.min;let ay=function(t,i,n){var r,o,s,a,d,c,l=0,u=!1,h=!1,p=!0;if("function"!=typeof t)throw TypeError("Expected a function");function m(i){var n=r,s=o;return r=o=void 0,l=i,a=t.apply(s,n)}function g(t){var n=t-c;return void 0===c||n>=i||n<0||h&&t-l>=s}function f(){var t=aa();if(g(t))return _(t);d=setTimeout(f,function(t){var n=i-(t-c);return h?av(n,s-(t-l)):n}(t))}function _(t){return d=void 0,p&&r?m(t):(r=o=void 0,a)}function v(){var t=aa(),n=g(t);if(r=arguments,o=this,c=t,n){if(void 0===d)return function(t){return l=t,d=setTimeout(f,i),u?m(t):a}(c);if(h)return clearTimeout(d),d=setTimeout(f,i),m(c)}return void 0===d&&(d=setTimeout(f,i)),a}return i=af(i)||0,O(n)&&(u=!!n.leading,s=(h="maxWait"in n)?a_(af(n.maxWait)||0,i):s,p="trailing"in n?!!n.trailing:p),v.cancel=function(){void 0!==d&&clearTimeout(d),l=0,r=c=o=d=void 0}
66,v.flush=function(){return void 0===d?a:_(aa())},v};var aE=n(775);class aS extends Error{}aS.prototype.name="InvalidTokenError";var ab=D?D.prototype:void 0,aC=ab?ab.toString:void 0;let aD=function t(i){if("string"==typeof i)return i;if(ew(i))return function(t,i){for(var n=-1,r=null==t?0:t.length,o=Array(r);++n<r;)o[n]=i(t[n],n,t);return o}(i,t)+"";if(au(i))return aC?aC.call(i):"";var n=i+"";return"0"==n&&1/i==-1/0?"-0":n},aT=(ax={"&":"&","<":"<",">":">",""":'"',"'":"'"},function(t){return null==ax?void 0:ax[t]});var ax,aR=/&(?:amp|lt|gt|quot|#39);/g,aA=RegExp(aR.source);let aw=function(t){var i;return(t=null==(i=t)?"":aD(i))&&aA.test(t)?t.replace(aR,aT):t},aI=function(t){return t.CONFERENCE_REQUEST_FAILED="connection.conferenceRequestFailed",t.CONNECTION_DROPPED_ERROR="connection.droppedError",t.NOT_LIVE_ERROR="connection.notLiveError",t.OTHER_ERROR="connection.otherError",t.PASSWORD_REQUIRED="connection.passwordRequired",t.SERVER_ERROR="connection.serverError",t.SHARD_CHANGED_ERROR="connection.shardChangedError",t}({}),ak=aI.CONFERENCE_REQUEST_FAILED,aO=aI.CONNECTION_DROPPED_ERROR,aN=aI.NOT_LIVE_ERROR,aP=aI.OTHER_ERROR,aL=aI.PASSWORD_REQUIRED,aM=aI.SERVER_ERROR,aF=aI.SHARD_CHANGED_ERROR;function aj(t,i,n,r){return t<20?i&n|~i&r:t<40?i^n^r:t<60?i&n|i&r|n&r:i^n^r}function aV(t){return t<20?0x5a827999:t<40?0x6ed9eba1:t<60?-0x70e44324:-0x359d3e2a}function aB(t,i){var n=(65535&t)+(65535&i);return(t>>16)+(i>>16)+(n>>16)<<16|65535&n}function aU(t,i){return t<<i|t>>>32-i}let a$=function(t){return function(t){for(var i,n,r="",o=0;o<4*t.length;o+=3)for(i=(t[o>>2]>>8*(3-o%4)&255)<<16|(t[o+1>>2]>>8*(3-(o+1)%4)&255)<<8|t[o+2>>2]>>8*(3-(o+2)%4)&255,n=0;n<4;n++)8*o+6*n>32*t.length?r+="=":r+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(i>>6*(3-n)&63);return r}(function(t,i){t[i>>5]|=128<<24-i%32,t[15+(i+64>>9<<4)]=i;var n,r,o,s,a,d,c,l,u=Array(80),h=0x67452301,p=-0x10325477,m=-0x67452302,g=0x10325476,f=-0x3c2d1e10;for(n=0;n<t.length;n+=16){for(s=h,a=p,d=m,c=g,l=f,r=0;r<80;r++)u[r]=r<16?t[n+r]:aU(u[r-3]^u[r-8]^u[r-14]^u[r-16],1),o=aB(aB(aU(h,5),aj(r,p,m,g)),aB(aB(f,u[r]),aV(r))),f=g,g=m,m=aU(p,30),p=h,h=o;h=aB(h,s),p=aB(p,a),m=aB(m,d),g=aB(g,c),f=aB(f,l)}return[h,p,m,g,f]}(function(t){for(var i=[],n=0;n<8*t.length;n+=8)i[n>>5]|=(255&t.charCodeAt(n/8))<<24-n%32;return i}(t),8*t.length))},aH=["category","type","lang","name"],aJ=["category","type","lang"];function aq(t,i){let n=0;return aJ.some(r=>0!==(n=t[r]>i[r]?1:t[r]<i[r]&&-1)),n}function aG(t){let i=new Set,n=new Set;return sv(t,":scope>query>feature").forEach(t=>i.add(sy(t,"var"))),sv(t,":scope>query>identity").forEach(t=>n.add({category:sy(t,"category"),name:sy(t,"name"),type:sy(t,"type")})),{features:i,identities:n}}class az extends rI{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"http://jitsi.org/jitsimeet";if(super(),this.node=i,this.disco=t.disco,!this.disco)throw Error("Missing strophe-plugins (disco plugin is required)!");this.version="",this.rooms=new Set,this.externalFeatures=new Set;const n=t.emuc;n.addListener(nG.EMUC_ROOM_ADDED,t=>this._addChatRoom(t)),n.addListener(nG.EMUC_ROOM_REMOVED,t=>this._removeChatRoom(t)),Object.keys(n.rooms).forEach(t=>{this._addChatRoom(n.rooms[t])}),io.Strophe.addNamespace("CAPS","http://jabber.org/protocol/caps"),this.disco.addFeature(io.Strophe.NS.CAPS)}_getDiscoInfo(t,i,n){return new Promise((r,o)=>this.disco.info(t,i,t=>{r(aG(t))},o,n))}_addChatRoom(t){this.rooms.add(t),this._fixChatRoomPresenceMap(t),this._updateRoomWithExternalFeatures(t)}_fixChatRoomPresenceMap(t){t.addOrReplaceInPresence("c",{attributes:{hash:"sha-1",node:this.node,ver:this.version,xmlns:io.Strophe.NS.CAPS}})}_generateVersion(){this.version=function(t,i){return a$(t.sort(aq).reduce((t,i)=>`${aH.reduce((t,n,r)=>t+(0===r?"":"/")+(i[n]?i[n]:""),"")}<`,"")+i.sort().reduce((t,i)=>`${t+i}<`,""))}(this.disco._identities,this.disco._features),this._notifyVersionChanged()}_notifyVersionChanged(){this.rooms.forEach(t=>this._fixChatRoomPresenceMap(t))}_removeChatRoom(t){this.rooms.delete(t)}_updateRoomWithExternalFeatures(t){if(0===this.externalFeatures.size)t.removeFromPresence("features");else{let i=[];
66this.externalFeatures.forEach(t=>{i.push({attributes:{var:t},tagName:"feature"})}),t.addOrReplaceInPresence("features",{children:i})}}addFeature(t){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.disco.addFeature(t),this._generateVersion(),n&&!this.externalFeatures.has(t)&&(this.externalFeatures.add(t),this.rooms.forEach(t=>this._updateRoomWithExternalFeatures(t))),i&&this.submit()}getFeaturesAndIdentities(t,i){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e3;return this._getDiscoInfo(t,i,n)}removeFeature(t){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.disco.removeFeature(t),this._generateVersion(),n&&this.externalFeatures.has(t)&&(this.externalFeatures.delete(t),this.rooms.forEach(t=>this._updateRoomWithExternalFeatures(t))),i&&this.submit()}submit(){this.rooms.forEach(t=>t.sendPresence(void 0))}}let aK="file-sharing";class aW{constructor(t){this._mainRoom=t,this._xmpp=t.xmpp,this._handleMessages=this._handleMessages.bind(this),this._mainRoom.xmpp.addListener(nG.FILE_SHARING_EVENT,this._handleMessages)}dispose(){this._mainRoom.xmpp.removeListener(nG.FILE_SHARING_EVENT,this._handleMessages)}isSupported(){return!!this._xmpp.fileSharingComponentAddress}getIdentityType(){return aK}addFile(t){this._sendMessage({type:"add",xmlns:"http://jitsi.org/jitmeet"},t)}removeFile(t){let i={fileId:t,type:"remove",xmlns:"http://jitsi.org/jitmeet"};this._sendMessage(i)}_sendMessage(t,i){let n=$msg({to:this._xmpp.fileSharingComponentAddress});n.c(aK,t,i?JSON.stringify(i):void 0).up(),this._xmpp.connection.send(n)}_handleMessages(t){switch(t.event){case"add":this._mainRoom.eventEmitter.emit(nG.FILE_SHARING_FILE_ADDED,t.file);break;case"remove":this._mainRoom.eventEmitter.emit(nG.FILE_SHARING_FILE_REMOVED,t.fileId);break;case"list":this._mainRoom.eventEmitter.emit(nG.FILE_SHARING_FILES_RECEIVED,t.files)}}}let aY="NETWORK_INFO_CHANGED",aQ=(0,m.getLogger)("connectivity:NetworkInfo"),aX=new class extends rI{constructor(){super(),this._current={isOnline:!0}}updateNetworkInfo(t){let i=t.isOnline;aQ.debug("updateNetworkInfo",{isOnline:i}),this._current={isOnline:!0===i},this.eventEmitter.emit(aY,this._current)}isOnline(){return!0===this._current.isOnline}};function aZ(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2;return Math.floor(Math.random()*(1e3*Math.pow(n,t)-i)+i)}let a0=(0,m.getLogger)("xmpp:ResumeTask");class a1{constructor(t){this._stropheConn=t,this._resumeRetryN=0,this._retryDelay=void 0,this._resumeTimeout=void 0,this._networkOnlineListener=null}get retryCount(){return this._resumeRetryN}get retryDelay(){return this._retryDelay}_removeNetworkOnlineListener(){this._networkOnlineListener&&(this._networkOnlineListener(),this._networkOnlineListener=null)}_scheduleResume(){this._resumeTimeout||(this._retryDelay=aZ(this._resumeRetryN,1500*this._resumeRetryN,3),a0.info(`Will try to resume the XMPP connection in ${this.retryDelay}ms`),this._resumeTimeout=setTimeout(()=>this.resumeConnection(),this.retryDelay))}cancelResume(){this._resumeTimeout&&(a0.info("Canceling connection resume task"),clearTimeout(this._resumeTimeout),this._resumeTimeout=void 0,this._retryDelay=void 0)}resumeConnection(){this._resumeTimeout=void 0;let t=this._stropheConn.streamManagement,i=t.getResumeToken();if(!i)return;a0.info("Trying to resume the XMPP connection");let n=new URL(this._stropheConn.service),r=n.search,o=/(previd=)([\w-]+)/,s=r.match(o);s&&-1===s.indexOf(i)?r=r.replace(o,`$1${i}`):s||(r+=-1===r.indexOf("?")?`?previd=${i}`:`&previd=${i}`),n.search=r,this._stropheConn.service=n.toString();try{t.resume()}catch(t){a0.error("Failed to resume XMPP connection",t)}}cancel(){this.cancelResume(),this._removeNetworkOnlineListener(),this._resumeRetryN=0}schedule(){this.cancelResume(),this._removeNetworkOnlineListener(),this._resumeRetryN+=1,this._networkOnlineListener=aX.addCancellableListener(aY,t=>{t.isOnline?this._scheduleResume():this.cancelResume()}),aX.isOnline()&&this._scheduleResume()}}class a2{constructor(){this._lastSuccess=null,this._lastFailedMessage=null}startTracking(t,i){var n=this;let r=i.rawInput;i.rawInput=function(){for(var o=arguments.length,s=Array(o),a=0;a<o;a++)s[a]=arguments[a];let d=s[0];d.includes("failure")&&(n._lastFailedMessage=d),t.connected&&(n._lastSuccess=Date.now()),r.apply(i,s)}}getLastFailedMessage(){return this._lastFailedMessage}getTimeSinceLastSuccess(){return this._lastSuccess?Date.now()-this._lastSuccess:null}}let a6={logging:!1,autoSendCountOnEveryIncomingStanza:!1,requestResponseInterval:5,_c:null,_NS:"urn:xmpp:sm:3",_isStreamManagementEnabled:!1,_serverProcesssedStanzasCounter:null,_clientProcessedStanzasCounter:null,_clientSentStanzasCounter:null,_originalXMLOutput:null,_requestHandler:null,_incomingHandler:null,_requestResponseIntervalCount:0,_isSupported:!1,_unacknowledgedStanzas:[],_acknowledgedStanzaListeners:[],addAcknowledgedStanzaListener:function(t){this._acknowledgedStanzaListeners.push(t)},enable:function(t){if(!this._isSupported)throw Error("The server doesn't support urn:xmpp:sm:3 namespace");
66if(this._connectionStatus!==io.Strophe.Status.CONNECTED)throw Error("enable() can only be called in the CONNECTED state");this._c.send((0,io.$build)("enable",{xmlns:this._NS,resume:t})),this._c.flush(),this._c.pause()},getResumeToken:function(){return this._resumeToken},isSupported(){return this._isSupported},resume:function(){if(!this.getResumeToken())throw Error("No resume token");if(this._connectionStatus!==io.Strophe.Status.DISCONNECTED)throw Error("resume() can only be called in the DISCONNECTED state");this._c.options.explicitResourceBinding=!0,this._resuming=!0,this._originalConnect.apply(this._c,this._connectArgs)},requestAcknowledgement:function(){if(this._connectionStatus!==io.Strophe.Status.CONNECTED)throw Error("requestAcknowledgement() can only be called in the CONNECTED state");this._requestResponseIntervalCount=0,this._c.send((0,io.$build)("r",{xmlns:this._NS}))},getOutgoingCounter:function(){return this._clientSentStanzasCounter},getIncomingCounter:function(){return this._clientProcessedStanzasCounter},init:function(t){this._c=t,io.Strophe.addNamespace("SM",this._NS),this._originalXMLOutput=this._c.xmlOutput,this._c.xmlOutput=this.xmlOutput.bind(this),this._originalConnect=this._c.connect,this._c.connect=this._interceptConnectArgs.bind(this),this._originalOnStreamFeaturesAfterSASL=this._c._onStreamFeaturesAfterSASL,this._c._onStreamFeaturesAfterSASL=this._onStreamFeaturesAfterSASL.bind(this),this._originalDoDisconnect=this._c._doDisconnect,this._c._doDisconnect=this._interceptDoDisconnect.bind(this),this._originalDisconnect=this._c.disconnect,this._c.disconnect=this._interceptDisconnect.bind(this)},_interceptDisconnect:function(){this._resumeToken=void 0,this._originalDisconnect.apply(this._c,arguments)},_interceptDoDisconnect:function(){this.getResumeToken()&&!this._resuming&&this._c.connected&&!this._c.disconnecting&&(this._resumeState={handlers:this._c.handlers,timedHandlers:this._c.timedHandlers,removeTimeds:this._c.removeTimeds,removeHandlers:this._c.removeHandlers,addTimeds:this._c.addTimeds,addHandlers:this._c.addHandlers},this._storedJid=this._c.jid,this.logging&&io.Strophe.debug("SM stored resume state, handler count: "+this._resumeState.handlers.length)),this._c._data=[],this._originalDoDisconnect.apply(this._c,arguments)},_interceptConnectArgs:function(){this._connectArgs=arguments,this._originalConnect.apply(this._c,arguments)},_onStreamFeaturesAfterSASL:function(t){return this._isSupported=t.getElementsByTagNameNS(this._NS,"sm").length>0,this._originalOnStreamFeaturesAfterSASL.apply(this._c,arguments)},statusChanged:function(t){if(this._connectionStatus=t,this.getResumeToken()||t!==io.Strophe.Status.CONNECTED&&t!==io.Strophe.Status.DISCONNECTED)if(t===io.Strophe.Status.BINDREQUIRED){for(let t of(this._c.jid=this._storedJid,(this._resumeState.handlers||[]).concat(this._resumeState.addHandlers||[])))this._c._addSysHandler(t.handler,t.ns,t.name,t.type,t.id);for(let t of(this._resumeState.timedHandlers||[]).concat(this._resumeState.addTimeds))this._c.addTimedHandler(t.period,t.handler);for(let t of(this._resumeState.removeTimeds||[]).concat(this._resumeState.removeHandlers||[]))this._c.deleteTimedHandler(t);this._c.send((0,io.$build)("resume",{xmlns:this._NS,h:this._clientProcessedStanzasCounter,previd:this._resumeToken})),this._c.flush()}else t===io.Strophe.Status.ERROR&&(this.logging&&io.Strophe.debug("SM cleared resume token on error"),this._resumeToken=void 0);else this.logging&&io.Strophe.debug("SM reset state"),this._serverProcesssedStanzasCounter=0,this._clientProcessedStanzasCounter=0,this._clientSentStanzasCounter=0,this._isStreamManagementEnabled=!1,this._requestResponseIntervalCount=0,this._resuming=!1,t===io.Strophe.Status.DISCONNECTED&&(this._isSupported=!1),this._unacknowledgedStanzas=[],this._requestHandler&&this._c.deleteHandler(this._requestHandler),this._incomingHandler&&this._c.deleteHandler(this._incomingHandler),this._requestHandler=this._c.addHandler(this._handleServerRequestHandler.bind(this),this._NS,"r"),this._ackHandler=this._c.addHandler(this._handleServerAck.bind(this),this._NS,"a"),this._incomingHandler=this._c.addHandler(this._incomingStanzaHandler.bind(this)),this._enabledH
66andler=this._c._addSysHandler(this._handleEnabled.bind(this),this._NS,"enabled"),this._resumeFailedHandler=this._c._addSysHandler(this._handleResumeFailed.bind(this),this._NS,"failed"),this._resumedHandler=this._c._addSysHandler(this._handleResumed.bind(this),this._NS,"resumed")},xmlOutput:function(t){return(io.Strophe.isTagEqual(t,"iq")||io.Strophe.isTagEqual(t,"presence")||io.Strophe.isTagEqual(t,"message"))&&this._increaseSentStanzasCounter(t),this._originalXMLOutput.call(this._c,t)},_handleEnabled:function(t){return this._isStreamManagementEnabled=!0,this._resumeToken="true"===t.getAttribute("resume")&&t.getAttribute("id")||void 0,this._c.resume(),!0},_handleResumeFailed:function(t){let i=t&&(t.firstElementChild&&t.firstElementChild.tagName||t.firstChild&&t.firstChild.tagName);return this._c._changeConnectStatus(io.Strophe.Status.ERROR,i,t),this._c._doDisconnect(),!0},_handleResumed:function(t){var i=parseInt(t.getAttribute("h"));if(this._handleAcknowledgedStanzas(i,this._serverProcesssedStanzasCounter),this._resuming=!1,this._c.do_b
66ind=!1,this._c.authenticated=!0,this._c.restored=!0,this._unacknowledgedStanzas.length>0)for(let t of(this.logging&&io.Strophe.debug("SM Sending unacknowledged stanzas",this._unacknowledgedStanzas),this._unacknowledgedStanzas))this._c.send(t);else this.logging&&io.Strophe.debug("SM No unacknowledged stanzas",this._unacknowledgedStanzas);return this._c._changeConnectStatus(io.Strophe.Status.CONNECTED,null),!0},_incomingStanzaHandler:function(t){return(io.Strophe.isTagEqual(t,"iq")||io.Strophe.isTagEqual(t,"presence")||io.Strophe.isTagEqual(t,"message"))&&(this._increaseReceivedStanzasCounter(),this.autoSendCountOnEveryIncomingStanza&&this._answerProcessedStanzas()),!0},_handleAcknowledgedStanzas:function(t,i){var n=t-i;n<0&&this._throwError("New reported stanza count lower than previous. New: "+t+" - Previous: "+i),n>this._unacknowledgedStanzas.length&&this._throwError("Higher reported acknowledge count than unacknowledged stanzas. Reported Acknowledge Count: "+n+" - Unacknowledge Stanza Count: "+this._unacknowledgedStanzas.length+" - New: "+t+" - Previous: "+i);for(var r=0;r<n;r++)for(var o=this._unacknowledgedStanzas.shift(),s=0;s<this._acknowledgedStanzaListeners.length;s++)this._acknowledgedStanzaListeners[s](o);this.logging&&this._unacknowledgedStanzas.length>0&&io.Strophe.warn("SM Unacknowledged stanzas",this._unacknowledgedStanzas),this._serverProcesssedStanzasCounter=t,this.requestResponseInterval>0&&(this._requestResponseIntervalCount=0)},_handleServerRequestHandler:function(){return this._answerProcessedStanzas(),!0},_handleServerAck:function(t){var i=parseInt(t.getAttribute("h"));return this._handleAcknowledgedStanzas(i,this._serverProcesssedStanzasCounter),!0},_answerProcessedStanzas:function(){this._isStreamManagementEnabled&&this._c.send((0,io.$build)("a",{xmlns:this._NS,h:this._clientProcessedStanzasCounter}))},_increaseSentStanzasCounter:function(t){this._isStreamManagementEnabled&&-1===this._unacknowledgedStanzas.indexOf(t)&&(this._unacknowledgedStanzas.push(t),this._clientSentStanzasCounter++,this.requestResponseInterval>0&&(this._requestResponseIntervalCount++,this._requestResponseIntervalCount===this.requestResponseInterval&&setTimeout(()=>{this._connectionStatus===io.Strophe.Status.CONNECTED&&this.requestAcknowledgement()},1)))},_increaseReceivedStanzasCounter:function(){this._isStreamManagementEnabled&&this._clientProcessedStanzasCounter++},_throwError:function(t){throw io.Strophe.error(t),Error(t)}};function a8(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:class{};return class extends t{constructor(){super(...arguments),this.connection=null}init(t){this.connection=t}}}io.Strophe.addConnectionPlugin("streamManagement",a6);let a5=a8(),a4=a8(rI),a9=(0,m.getLogger)("xmpp:strophe.ping");class a7 extends a5{constructor(t){let i=t.getTimeSinceLastServerResponse,n=t.onPingThresholdExceeded,r=t.pingOptions,o=void 0===r?{}:r;super(),this.failedPings=0,this._onPingThresholdExceeded=n,this._getTimeSinceLastServerResponse=i,this.pingInterval="number"==typeof o.interval?o.interval:1e4,this.pingTimeout="number"==typeof o.timeout?o.timeout:5e3,this.pingThreshold="number"==typeof o.threshold?o.threshold:2,this.pingTimestampsToKeep=Math.round(12e4/this.pingInterval),this.pingExecIntervals=Array(this.pingTimestampsToKeep)}init(t){super.init(t),io.Strophe.addNamespace("PING","urn:xmpp:ping")}ping(t,i,n,r){this._addPingExecutionTimestamp();let o=(0,io.$iq)({to:t,type:"get"});o.c("ping",{xmlns:io.Strophe.NS.PING}),this.connection.sendIQ2(o,{timeout:r}).then(i,n)}startInterval(t){clearInterval(this.intervalId),this.intervalId=window.setInterval(()=>{let i=Date.now();this._getTimeSinceLastServerResponse()<i-this._lastServerCheck?(this._addPingExecutionTimestamp(),this._lastServerCheck=i,this.failedPings=0):this.ping(t,()=>{this._lastServerCheck=this._getTimeSinceLastServerResponse()+Date.now(),this.failedPings=0},t=>{this.failedPings+=1;let i="Ping "+(t?"error":"timeout");this.failedPings>=this.pingThreshold?(a9.error(i,t),this._onPingThresholdExceeded&&this._onPingThresholdExceeded()):a9.warn(i,t)},this.pingTimeout)},this.pingInterval),a9.info(`XMPP pings will be sent every ${this.pingInterval} ms`)}stopInterval(){this.intervalId&&(window.clearInterval(this.intervalId),this.intervalId=null,this.failedPings=0,a9.info("Ping interval cleared"))}_addPingExecutionTimestamp(){this.pingExecIntervals.push((new Date).getTime()),this.pingExecIntervals.length>this.pingTimestampsToKeep&&this.pingExecIntervals.shift()}getPingSuspendTime(){let t=this.pingExecIntervals.slice();t.push((new Date).getTime());let i=0,n=t[0];return t.forEach(t=>{let r=t-n;r>i&&(i=r),n=t}),Math.max(i-=this.pingInterval,0)}}let a3=(0,m.getLogger)("xmpp:XmppConnection"),de="token_refresh";var dt=function(t){return t[t.RESUMING=15]="RESUMING",t}(dt||{});class di extends rI{static get Events(){return{CONN_SHARD_CHANGED:"CONN_SHARD_CHANGED",CONN_STATUS_CHANGED:"CONN_STATUS_CHANGED"}}static get Status(){return{...io.Strophe.Status,...dt}}constructor(t){let i=t.enableWebsocketResume,n=t.websocketKeepAlive,r=t.websocketKeepAliveUrl,o=t.serviceUrl,s=t.shard,a=t.xmppPing;super(),this._options={enableWebsocketResume:void 0===i||i,pingOptions:a,shard:s,websocketKeepAlive:void 0===n?6e4:Number(n),websocketKeepAliveUrl:r},this._stropheConn=new io.Strophe.Connection(o),this._stropheConn.registerSASLMechanisms([io.Strophe.SASLAnonymous,io.Strophe.SASLPlain,io.Strophe.SASLSHA1]),this._usesWebsocket=o.startsWith("ws:")||o.startsWith("wss:"),this._stropheConn.maxRetries=3,this._rawInputTracker=new a2,this._rawInputTracker.startTracking(this,this._stropheConn),this._resumeTask=new a1(this._stropheConn),this._deferredIQs=[],this.addConnectionPlugin("ping",new a7({getTimeSinceLastServerResponse:()=>this.getTimeSinceLastSuccess(),onPingThresholdExceeded:()=>this._onPingErrorThresholdExceeded(),pingOptions:a})),this._oneSuccessfulConnect=!1}get connected(){var t;let i=null==(t=this._stropheConn)||null==(t=t._proto)?void 0:t.socket;
66return(this._status===io.Strophe.Status.CONNECTED||this._status===io.Strophe.Status.ATTACHED)&&(!this.isUsingWebSocket||i&&i.readyState===WebSocket.OPEN)}get disco(){return this._stropheConn.disco}get disconnecting(){return!0===this._stropheConn.disconnecting}get domain(){return this._stropheConn.domain}get isUsingWebSocket(){return this._usesWebsocket}get jid(){return this._stropheConn.jid}get lastResponseHeaders(){var t;return null==(t=this._stropheConn._proto)?void 0:t.lastResponseHeaders}get logger(){return this._stropheConn.logger}get options(){return this._stropheConn.options}get pingDomain(){var t;return(null==(t=this._options.pingOptions)?void 0:t.domain)||this.domain}get service(){return this._stropheConn.service}set shard(t){this._options.shard=t}get status(){return this._status}addConnectionPlugin(t,i){this[t]=i,i.init(this)}addHandler(){return this._stropheConn.addHandler(...arguments)}deleteHandler(){this._stropheConn.deleteHandler(...arguments)}attach(t,i,n,r){for(var o=arguments.length,s=Array(o>4?o-4:0),a=4;a<o;a++)s[a-4]=arguments[a];this._stropheConn.attach(t,i,n,this._stropheConnectionCb.bind(this,r),...s)}connect(t,i,n){for(var r=arguments.length,o=Array(r>3?r-3:0),s=3;s<r;s++)o[s-3]=arguments[s];this._stropheConn.connect(t,i,this._stropheConnectionCb.bind(this,n),...o)}_stropheConnectionCb(t,i,n,r){var o;if(this._status=i,i===io.Strophe.Status.CONNECTED||i===io.Strophe.Status.ATTACHED)this._maybeEnableStreamResume(),this._usesWebsocket&&(this._oneSuccessfulConnect?this._maybeStartWSKeepAlive(0):this._maybeStartWSKeepAlive(5e3)),this._oneSuccessfulConnect=!0,this._processDeferredIQs(),this._resumeTask.cancel(),this.ping.startInterval((null==(o=this._options.pingOptions)?void 0:o.domain)||this.domain);else if(i===io.Strophe.Status.DISCONNECTED){if(this.ping.stopInterval(),this._tryResumingConnection(n===de))return void(n!==de&&this.eventEmitter.emit(di.Events.CONN_STATUS_CHANGED,dt.RESUMING));clearTimeout(this._wsKeepAlive)}t(i,n,r),this.eventEmitter.emit(di.Events.CONN_STATUS_CHANGED,i)}_clearDeferredIQs(){for(let t of this._deferredIQs)t.reject(Error("disconnect"));this._deferredIQs=[]}closeWebsocket(){var t;null!=(t=this._stropheConn)&&t._proto&&(this._stropheConn._proto._closeSocket(),this._stropheConn._proto._onClose(null))}disconnect(){this._resumeTask.cancel(),clearTimeout(this._wsKeepAlive),this._clearDeferredIQs(),this._stropheConn.disconnect(...arguments)}flush(){this._stropheConn.flush(...arguments)}getTimeSinceLastSuccess(){return this._rawInputTracker.getTimeSinceLastSuccess()}getLastFailedMessage(){return this._rawInputTracker.getLastFailedMessage()}_maybeEnableStreamResume(){if(!this._options.enableWebsocketResume)return;let t=this._stropheConn.streamManagement;this.isUsingWebSocket?t?t.isSupported()?t.getResumeToken()||(a3.info("Enabling XEP-0198 stream management"),t.enable(!0)):a3.warn("Stream resume enabled, but XEP-0198 is not supported by the server"):a3.warn("Stream resume enabled, but Strophe streamManagement plugin is not installed"):a3.warn("Stream resume enabled, but WebSockets are not enabled")}_maybeStartWSKeepAlive(t){let i=this._options.websocketKeepAlive;if(this._usesWebsocket&&i>0){this._wsKeepAlive||a3.info(`WebSocket keep alive interval: ${i}ms`),clearTimeout(this._wsKeepAlive);let n=null!=t?t:i+60*Math.random()*1e3;a3.debug(`Scheduling next WebSocket keep-alive in ${n}ms`),this._wsKeepAlive=setTimeout(()=>this._keepAliveAndCheckShard().then(()=>this._maybeStartWSKeepAlive()),n)}}_keepAliveAndCheckShard(){let t=this._options,i=t.shard,n=t.websocketKeepAliveUrl||this.service.replace("wss://","https://").replace("ws://","http://");return fetch(n).then(t=>{if(!i)return;let n=t.headers.get("x-jitsi-shard");n||a3.warn("No x-jitsi-shard header present in keep-alive response"),n&&n!==i&&(a3.error(`Detected that shard changed from ${i} to ${n}`),this.eventEmitter.emit(di.Events.CONN_SHARD_CHANGED))}).catch(t=>{a3.error(`Websocket Keep alive failed for url: ${n}`,{error:t})})}_processDeferredIQs(){for(let t of this._deferredIQs)if(t.iq){clearTimeout(t.timeout);let i=Date.now()-t.start;this.sendIQ(t.iq,i=>t.resolve(i),i=>t.reject(i),i)}this._deferredIQs=[]}send(t){var i;if(!this.connected)throw a3.error(`Trying to send stanza while not connected. Status:${this._status} Proto:${this.isUsingWebSocket?null==(i=this._stropheConn)||null==(i=i._proto)||null==(i=i.socket)?void 0:i.readyState:"bosh"}`),Error("Not connected");this._stropheConn.send(t)}sendIQ(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;if(this.connected)return this._stropheConn.sendIQ(t,i,n,r);n("Not connected")}sendIQ2(t,i){let n=i.timeout;return new Promise((i,r)=>{if(this.connected)this.sendIQ(t,t=>i(t),t=>r(t),n);else{let o={iq:t,reject:r,resolve:i,start:Date.now(),timeout:setTimeout(()=>{o.iq=void 0,r(void 0)},n)};this._deferredIQs.push(o)}})}_onPingErrorThresholdExceeded(){this.isUsingWebSocket&&(a3.warn("Ping error threshold exceeded - killing the WebSocket"),this.closeWebsocket())}sendPresence(t,i,n,r){this.connected?this._stropheConn.sendPresence(t,i,n,r):n("Not connected")}sendUnavailableBeacon(){if(!navigator.sendBeacon||this._stropheConn.disconnecting||!this._stropheConn.connected)return!1;
66this._stropheConn._changeConnectStatus(io.Strophe.Status.DISCONNECTING),this._stropheConn.disconnecting=!0;let t=this._stropheConn._proto._buildBody().attrs({type:"terminate"}),i=(0,io.$pres)({type:"unavailable",xmlns:io.Strophe.NS.CLIENT});t.cnode(i.tree());let n=navigator.sendBeacon(-1===this.service.indexOf("https://")?`https:${this.service}`:this.service,io.Strophe.serialize(t.tree()));return a3.info(`Successfully send unavailable beacon ${n}`),this._stropheConn._proto._abortAllRequests(),this._stropheConn._doDisconnect(),!0}_tryResumingConnection(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this._stropheConn.streamManagement;if(null==i?void 0:i.getResumeToken()){if(t)return a3.info("Trying to resume XMPP connection immediately due to token refresh"),this._resumeTask.resumeConnection(),!0;this._resumeTask.schedule();let i=this._resumeTask.retryCount<=3;return i||a3.warn("Maximum resume tries reached (3), giving up."),i}return!1}refreshToken(t){return this._stropheConn.service=t,new Promise((t,i)=>{var n;let r,o=this.addCancellableListener(di.Events.CONN_STATUS_CHANGED,i=>{i===io.Strophe.Status.CONNECTED&&this._stropheConn.restored&&(clearTimeout(r),o(),t())});null==(n=this._stropheConn.streamManagement)||n._interceptDoDisconnect(de),r=setTimeout(()=>{o(),i(Error("Token refresh timed out"))},3e3)})}cancelResume(){this._resumeTask.cancelResume()}}let dn=(0,m.getLogger)("xmpp:StropheErrorHandler");function dr(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={},r=null;if(t){if(1===t.nodeType&&"ERROR"===t.tagName.toUpperCase())r=t;else if(1===t.nodeType){let i=t.getElementsByTagName("error");(null==i?void 0:i.length)>0&&(r=Array.from(i)[0]||null)}}if(r){n.code=r.getAttribute("code")||void 0;let t=Array.from(r.children)[0];t&&(n.reason=t.tagName);let i=Array.from(r.getElementsByTagName("text"))[0];null!=i&&i.textContent&&(n.msg=i.textContent),n.raw=r.outerHTML}else n.reason="string"==typeof t?t:t?"unknown":"timeout";Object.assign(n,i),dn.error("Strophe error:",JSON.stringify(n)),ns.sendStatsEntry(ni.STROPHE_ERROR_EVENT,null,n)}let ds=(0,m.getLogger)("xmpp:Moderator");function da(t){let i=1;return function(n){if(n)return void(i=1);let r=Math.pow(2,i-1);return i+=1,Math.min(r*t,12e4)}}class dd extends rI{constructor(t){var i,n;super(),this.getNextTimeout=da(1e3),this.getNextErrorTimeout=da(1e3),this.options=t.options,this.sipGatewayEnabled=!1,this.visitorsSupported=!1,this.xmpp=t,this.connection=t.connection,this.targetJid=null==(i=this.options.hosts)?void 0:i.focus,this.targetJid||(this.targetJid=`focus.${null==(n=this.options.hosts)?void 0:n.domain}`),this.targetUrl=this.options.conferenceRequestUrl,this.mode=this.targetUrl?"http":"xmpp",ds.info(`Using ${this.mode} for conference requests.`),this.focusUserJids=new Set,this.options.focusUserJid&&this.focusUserJids.add(this.options.focusUserJid),window.addEventListener("message",function(t){if(t.data&&t.data.sessionId){if(t.origin!==window.location.origin)return void ds.warn(`Ignoring sessionId from different origin: ${t.origin}`);ne.sessionId=t.data.sessionId}},!1)}isFocusJid(t){if(!t)return!1;for(let i of this.focusUserJids)if(0===t.indexOf(`${i}/`))return!0;return!1}isSipGatewayEnabled(){return this.sipGatewayEnabled}_createConferenceRequest(t){var i,n;let r=ne.sessionId,o=this.options,s={};void 0!==o.startAudioMuted&&(s.startAudioMuted=o.startAudioMuted),void 0!==o.startVideoMuted&&(s.startVideoMuted=o.startVideoMuted),null!=(i=null==o||null==(n=o.analytics)?void 0:n.rtcstatsEnabled)&&i||(s.rtcstatsEnabled=!1);let a={machineUid:ne.machineId,properties:s,room:t};return r&&(a.sessionId=r),o.iAmRecorder||o.iAmSipGateway||(a.properties["visitors-version"]=1,this.options.preferVisitor&&(a.properties.visitor=!0)),a}_createConferenceIq(t){let i=this._createConferenceRequest(t),n=(0,io.$iq)({to:this.targetJid,type:"set"});for(let r in n.c("conference",{"machine-uid":i.machineUid,room:t,token:this.xmpp.token,xmlns:"http://jitsi.org/protocol/focus"}),i.sessionId&&n.attrs({"session-id":i.sessionId}),i.properties)i.properties.hasOwnProperty(r)&&n.c("property",{name:r,value:i.properties[r]}).up();return n}_parseConferenceIq(t){let i={properties:{}},n=sb(t,"conference");return i.focusJid=sy(n,"focusjid"),i.sessionId=sy(n,"session-id"),i.identity=sy(n,"identity"),i.ready="true"===sy(n,"ready"),i.vnode=sy(n,"vnode"),sS(t,':scope>conference>property[name="authentication"][value="true"]')&&(i.properties.authentication="true"),sS(t,':scope>conference>property[name="externalAuth"][value="true"]')&&(i.properties.externalAuth="true"),sS(t,':scope>conference>property[name="sipGatewayEnabled"][value="true"]')&&(i.properties.sipGatewayEnabled="true"),sS(t,':scope>conference>property[name="live"][value="false"]')&&(i.properties.live="false"),i}
66sendConferenceRequest(t){return this.conferenceRequestSent?Promise.resolve():(this.conferenceRequestSent=!1,new Promise((i,n)=>{"xmpp"===this.mode?(ds.info(`Sending conference request over XMPP to ${this.targetJid}`),this.connection.sendIQ(this._createConferenceIq(t),r=>this._handleIqSuccess(t,r,i,n),r=>this._handleIqError(t,r,i,n)),this.connection.flush()):(ds.info(`Sending conference request over HTTP to ${this.targetUrl}`),fetch(this.targetUrl,{body:JSON.stringify(this._createConferenceRequest(t)),headers:{"Content-Type":"application/json",...this.xmpp.token?{Authorization:`Bearer ${this.xmpp.token}`}:{}},method:"POST"}).then(r=>{r.ok?r.json().then(r=>{this._handleSuccess(t,r,i,n)}):r.text().then(o=>{ds.warn(`Received HTTP ${r.status} ${r.statusText}. Body: ${o}`);let s=400===r.status&&o.indexOf("400 invalid-session")>0,a=403===r.status;this._handleError(t,s,a,i,n)}).catch(r=>{ds.warn(`Error: ${r}`),this._handleError(t,void 0,void 0,i,()=>n(r))})}).catch(r=>{ds.warn(`Error: ${r}`),this._handleError(t,void 0,void 0,i,()=>n(r))}))}).then(()=>{this.conferenceRequestSent=!0}).finally(()=>{this.xmpp.connection._breakoutMovingToMain=void 0}))}_handleSuccess(t,i,n,r){this.getNextErrorTimeout(!0),i.focusJid?(ds.info(`Adding focus JID: ${i.focusJid}`),this.focusUserJids.add(i.focusJid)):ds.warn("Conference request response contained no focusJid.");let o="true"===i.properties.authentication;if(ds.info(`Authentication enabled: ${o}`),i.sessionId&&(ds.info(`Received sessionId: ${i.sessionId}`),ne.sessionId=i.sessionId),this.eventEmitter.emit(nq.IDENTITY_UPDATED,o,i.identity),this.sipGatewayEnabled=i.properties.sipGatewayEnabled,ds.info(`Sip gateway enabled: ${this.sipGatewayEnabled}`),"false"===i.properties.live)return this.getNextTimeout(!0),ds.info("Conference is not live."),this.xmpp.eventEmitter.emit(nX,aN),void r();if(this.visitorsSupported=i.properties["visitors-supported"],i.ready){if(this.getNextTimeout(!0),i.vnode&&!this.options.iAmRecorder&&!this.options.iAmSipGateway)return this.connection._breakoutMovingToMain===t?(ds.info("Skipping redirect as we are moving from breakout to main."),void n()):(ds.warn(`Redirected to: ${i.vnode} with focusJid ${i.focusJid}`),this.xmpp.eventEmitter.emit(nZ,i.vnode,i.focusJid),void r());ds.info("Conference-request successful, ready to join the MUC."),n()}else{let i=this.getNextTimeout();ds.info(`Not ready yet, will retry in ${i} ms.`),window.setTimeout(()=>this.sendConferenceRequest(t).then(n).catch(r),i)}}_handleError(t,i,n,r,o){if(i&&(ds.info("Session expired! - removing"),ne.sessionId=void 0),n)return ds.warn("Unauthorized to start the conference"),this.eventEmitter.emit(nG.AUTHENTICATION_REQUIRED),void o();let s=this.getNextErrorTimeout();i&&s<6e4?(ds.info(`Invalid session, will retry after ${s} ms.`),this.getNextTimeout(!0),window.setTimeout(()=>this.sendConferenceRequest(t).then(r).catch(o),s)):(ds.error("Failed to get a successful response, giving up."),this.xmpp.eventEmitter.emit(nX,ak),o())}_handleIqError(t,i,n,r){dr(i,{mode:this.mode,operation:"conference request (IQ)",roomJid:t,targetJid:this.targetJid,userJid:this.connection.jid});let o=sb(i,":scope>error>reservation-error");if(o){let t,n=sy(o,"error-code"),s=sb(i,":scope>error>text");return s&&(t=sE(s)),this.eventEmitter.emit(nG.RESERVATION_ERROR,n,t),void r()}let s=!!(sS(i,":scope>error>session-invalid")||sS(i,":scope>error>not-acceptable")),a=sS(i,":scope>error>not-authorized");this._handleError(t,s,a,n,r)}_handleIqSuccess(t,i,n,r){let o=this._parseConferenceIq(i);this._handleSuccess(t,o,n,r)}authenticate(t){return new Promise((i,n)=>{this.connection.sendIQ(this._createConferenceIq(t),t=>{let n=sy(sb(t,"conference"),"session-id");n?(ds.info(`Received sessionId: ${n}`),ne.sessionId=n):ds.warn("Response did not contain a session-id"),i()},i=>{var r;dr(i,{operation:"authenticate conference",roomJid:t,targetJid:this.targetJid,userJid:this.connection.jid});let o=sb(i,":scope>iq>error"),s=(null==o||null==(r=o.children)?void 0:r.length)>0?o.children[0]:void 0;n({error:null==s?void 0:s.tagName,message:sE(sb(i,":scope>iq>error>text"))})})})}logout(t){let i=(0,io.$iq)({to:this.targetJid,type:"set"}),n=ne.sessionId;n?(i.c("logout",{"session-id":n,xmlns:"http://jitsi.org/protocol/focus"}),this.connection.sendIQ(i,i=>{ds.info("Log out OK",i),ne.sessionId=void 0,t()},t=>{dr(t,{operation:"logout",sessionId:n,targetJid:this.targetJid,userJid:this.connection.jid})})):t()}}io.Strophe.addConnectionPlugin("disco",{_connection:null,_identities:[],_features:[],_items:[],init:function(t){this._connection=t,this._identities=[],this._features=[],this._items=[],t.addHandler(this._onDiscoInfo.bind(this),io.Strophe.NS.DISCO_INFO,"iq","get",null,null),t.addHandler(this._onDiscoItems.bind(this),io.Strophe.NS.DISCO_ITEMS,"iq","get",null,null)},addIdentity:function(t,i,n,r){void 0===n&&(n=""),void 0===r&&(r="");for(var o=0;o<this._identities.length;o++)if(this._identities[o].category==t&&this._identities[o].type==i&&this._identities[o].name==n&&this._identities[o].lang==r)return!1;return this._identities.push({category:t,type:i,name:n,lang:r}),!0},addFeature:function(t){for(var i=0;i<this._features.length;i++)if(this._features[i]==t)return!1;return this._features.push(t),!0},removeFeature:function(t){for(var i=0;i<this._features.length;i++)if(this._features[i]===t)return this._features.splice(i,1),!0;return!1},addItem:function(t,i,n,r){return!(n&&!r||(this._items.push({jid:t,name:i,node:n,call_back:r}
66),0))},info:function(t,i,n,r,o){var s={xmlns:io.Strophe.NS.DISCO_INFO};i&&(s.node=i);var a=(0,io.$iq)({from:this._connection.jid,to:t,type:"get"}).c("query",s);this._connection.sendIQ(a,n,r?n=>{dr(n,{jid:t,node:i,operation:"disco info query",userJid:this._connection.jid}),r(n)}:void 0,o)},items:function(t,i,n,r,o){var s={xmlns:io.Strophe.NS.DISCO_ITEMS};i&&(s.node=i);var a=(0,io.$iq)({from:this._connection.jid,to:t,type:"get"}).c("query",s);this._connection.sendIQ(a,n,r?n=>{dr(n,{jid:t,node:i,operation:"disco items query",userJid:this._connection.jid}),r(n)}:void 0,o)},_buildIQResult:function(t,i){var n=t.getAttribute("id"),r=t.getAttribute("from"),o=(0,io.$iq)({type:"result",id:n});return null!==r&&o.attrs({to:r}),o.c("query",i)},_onDiscoInfo:function(t){var i,n=t.getElementsByTagName("query")[0].getAttribute("node"),r={xmlns:io.Strophe.NS.DISCO_INFO};n&&(r.node=n);var o=this._buildIQResult(t,r);for(i=0;i<this._identities.length;i++)r={category:this._identities[i].category,type:this._identities[i].type},this._identities[i].name&&(r.name=this._identities[i].name),this._identities[i].lang&&(r["xml:lang"]=this._identities[i].lang),o.c("identity",r).up();for(i=0;i<this._features.length;i++)o.c("feature",{var:this._features[i]}).up();return this._connection.send(o.tree()),!0},_onDiscoItems:function(t){var i,n,r={xmlns:io.Strophe.NS.DISCO_ITEMS},o=t.getElementsByTagName("query")[0].getAttribute("node");if(o){for(r.node=o,i=[],n=0;n<this._items.length;n++)if(this._items[n].node==o){i=this._items[n].call_back(t);break}}else i=this._items;var s=this._buildIQResult(t,r);for(n=0;n<i.length;n++){var a={jid:i[n].jid};i[n].name&&(a.name=i[n].name),i[n].node&&(a.node=i[n].node),s.c("item",a).up()}return this._connection.send(s.tree()),!0}});let dc=function(t){return t.OFF="OFF",t.ON="ON",t}({}),dl=dc.ON,du=dc.OFF,dh=(0,m.getLogger)("xmpp:AVModeration");class dp{constructor(t){this._xmpp=t.xmpp,this._mainRoom=t,this._moderationEnabledByType={[nx.AUDIO]:!1,[nx.DESKTOP]:!1,[nx.VIDEO]:!1},this._whitelistAudio=[],this._whitelistDesktop=[],this._whitelistVideo=[],this._onMessage=this._onMessage.bind(this),this._xmpp.addListener(nG.AV_MODERATION_RECEIVED,this._onMessage)}dispose(){this._xmpp.removeListener(nG.AV_MODERATION_RECEIVED,this._onMessage)}isSupported(){return!!this._xmpp.avModerationComponentAddress}enable(t,i){if(!this.isSupported()||!this._mainRoom.isModerator())return void dh.error(`Cannot enable:${t} AV moderation supported:${this.isSupported()}, 67 moderator:${this._mainRoom.isModerator()}`);if(t===this._moderationEnabledByType[i])return void dh.warn(`Moderation already in state:${t} for mediaType:${i}`);let n=(0,io.$msg)({to:this._xmpp.avModerationComponentAddress});n.c("av_moderation",{enable:t,mediaType:i}).up(),this._xmpp.connection.send(n)}approve(t,i){if(!this.isSupported()||!this._mainRoom.isModerator())return void dh.error(`Cannot approve in AV moderation supported:${this.isSupported()}, 68 moderator:${this._mainRoom.isModerator()}`);let n=(0,io.$msg)({to:this._xmpp.avModerationComponentAddress});n.c("av_moderation",{jidToWhitelist:i,mediaType:t}).up(),this._xmpp.connection.send(n)}reject(t,i){if(!this.isSupported()||!this._mainRoom.isModerator())return void dh.error(`Cannot reject in AV moderation supported:${this.isSupported()}, 69 moderator:${this._mainRoom.isModerator()}`);let n=(0,io.$msg)({to:this._xmpp.avModerationComponentAddress});n.c("av_moderation",{jidToBlacklist:i,mediaType:t}).up(),this._xmpp.connection.send(n)}_onMessage(t){let i=t.removed,n=t.mediaType,r=t.enabled,o=t.approved,s=t.actor,a=t.whitelists;if(a){let t;switch(n){case nx.AUDIO:t=this._whitelistAudio;break;case nx.DESKTOP:t=this._whitelistDesktop;break;case nx.VIDEO:t=this._whitelistVideo;break;default:return void dh.error(`Unknown media type: ${n}`)}let r=Array.isArray(a[n])?a[n]:[];switch(i?t.filter(t=>!r.includes(t)).forEach(t=>this._xmpp.eventEmitter.emit(nG.AV_MODERATION_PARTICIPANT_REJECTED,n,t)):r.filter(i=>!t.includes(i)).forEach(t=>this._xmpp.eventEmitter.emit(nG.AV_MODERATION_PARTICIPANT_APPROVED,n,t)),n){case nx.AUDIO:this._whitelistAudio=r;break;case nx.DESKTOP:this._whitelistDesktop=r;break;case nx.VIDEO:this._whitelistVideo=r}}else void 0!==r&&this._moderationEnabledByType[n]!==r?(this._moderationEnabledByType[n]=r,this._xmpp.eventEmitter.emit(nG.AV_MODERATION_CHANGED,r,n,s)):i?this._xmpp.eventEmitter.emit(nG.AV_MODERATION_REJECTED,n):o&&this._xmpp.eventEmitter.emit(nG.AV_MODERATION_APPROVED,n)}}function dm(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}
69finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return dg(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?dg(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 70In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function dg(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}let df="features/breakout-rooms",d_={ADD:`${df}/add`,MOVE_TO_ROOM:`${df}/move-to-room`,REMOVE:`${df}/remove`,RENAME:`${df}/rename`},dv=`${df}/move-to-room`,dy=`${df}/update`,dE=(0,m.getLogger)("xmpp:BreakoutRooms");class dS{constructor(t){this.room=t,this._handleMessages=this._handleMessages.bind(this),this.room.xmpp.addListener(nG.BREAKOUT_ROOMS_EVENT,this._handleMessages),this._rooms={}}dispose(){this.room.xmpp.removeListener(nG.BREAKOUT_ROOMS_EVENT,this._handleMessages)}createBreakoutRoom(t){if(!this.isSupported()||!this.room.isModerator())return void dE.error(`Cannot create breakout room - supported:${this.isSupported()}, 71 moderator:${this.room.isModerator()}`);dE.debug("Create breakout room");let i={subject:t,type:d_.ADD};this._sendMessage(i)}removeBreakoutRoom(t){if(!this.isSupported()||!this.room.isModerator())return void dE.error(`Cannot remove breakout room - supported:${this.isSupported()}, 72 moderator:${this.room.isModerator()}`);dE.debug(`Remove breakout room: ${t}`);let i={breakoutRoomJid:t,type:d_.REMOVE};this._sendMessage(i)}renameBreakoutRoom(t,i){if(!this.isSupported()||!this.room.isModerator())return void dE.error(`Cannot rename breakout room - supported:${this.isSupported()}, 73 moderator:${this.room.isModerator()}`);dE.debug(`Rename breakout room: ${t}`);let n={breakoutRoomJid:t,subject:i,type:d_.RENAME};this._sendMessage(n)}sendParticipantToRoom(t,i){if(!this.isSupported()||!this.room.isModerator())return void dE.error(`Cannot send participant to room - supported:${this.isSupported()}, 74 moderator:${this.room.isModerator()}`);dE.debug(`Send participant: ${t} to room: ${i}`);let n={participantJid:t,roomJid:i,type:d_.MOVE_TO_ROOM};this._sendMessage(n)}isFeatureSupported(t){return!!(this.room.xmpp.breakoutRoomsFeatures||{})[t]}isSupported(){return!!this.getComponentAddress()}getComponentAddress(){return this.room.xmpp.breakoutRoomsComponentAddress}_setIsBreakoutRoom(t){this._isBreakoutRoom=t}isBreakoutRoom(){return void 0!==this._isBreakoutRoom?this._isBreakoutRoom:io.Strophe.getDomainFromJid(this.room.myroomjid)===this.getComponentAddress()}_setMainRoomJid(t){this._mainRoomJid=t}getMainRoomJid(){return this._mainRoomJid}_handleMessages(t){switch(t.event){case dv:this.room.eventEmitter.emit(nG.BREAKOUT_ROOMS_MOVE_TO_ROOM,t.roomJid);break;case dy:{let i=this._filterUpdatePayload(t);this._rooms=i.rooms,this.room.eventEmitter.emit(nG.BREAKOUT_ROOMS_UPDATED,i)}}}_filterUpdatePayload(t){let i=this.room.options.hiddenDomain,n=t.rooms,r={};return Object.entries(n).forEach(t=>{let n=dm(t,2),o=n[0],s=n[1],a=s.participants,d={};Object.entries(void 0===a?{}:a).forEach(t=>{let n=dm(t,2),r=n[0],o=n[1];io.Strophe.getDomainFromJid(o.jid)!==i&&(d[r]=o)}),r[o]={...s,participants:d}}),{...t,rooms:r}}_sendMessage(t){let i=(0,io.$msg)({to:this.getComponentAddress()});i.c("breakout_rooms",t).up(),this.room.xmpp.connection.send(i)}}let db=(0,m.getLogger)("xmpp:Lobby"),dC="email";class dD{constructor(t){this.xmpp=t.xmpp,this.mainRoom=t;const i=this._maybeJoinLobbyRoom.bind(this);this.mainRoom.addEventListener(nG.LOCAL_ROLE_CHANGED,i),this.mainRoom.addEventListener(nG.MUC_MEMBERS_ONLY_CHANGED,i),this.mainRoom.addEventListener(nG.ROOM_CONNECT_MEMBERS_ONLY_ERROR,t=>{this.lobbyRoomJid=t})}isSupported(){return this.xmpp.lobbySupported}enable(){return this.isSupported()?this.mainRoom.initialDiscoRoomInfoReceived?this.mainRoom.membersOnlyEnabled?Promise.resolve():new Promise((t,i)=>{this.mainRoom.setMembersOnly(!0,t,i)}):new Promise((t,i)=>{let n=[],r=()=>
74{n.forEach(t=>t()),n=[]};n.push(this.mainRoom.addCancellableListener(nG.ROOM_DISCO_INFO_UPDATED,()=>{r(),this.mainRoom.membersOnlyEnabled?t():this.mainRoom.setMembersOnly(!0,t,i)})),n.push(this.mainRoom.addCancellableListener(nG.ROOM_DISCO_INFO_FAILED,t=>{r(),i(t)}))}):Promise.reject(Error("Lobby not supported!"))}disable(){this.isSupported()&&this.mainRoom.isModerator()&&this.lobbyRoom&&this.mainRoom.membersOnlyEnabled&&this.mainRoom.setMembersOnly(!1)}sendMessage(t){this.lobbyRoom&&this.lobbyRoom.sendMessage(JSON.stringify(t),"json-message")}sendPrivateMessage(t,i){this.lobbyRoom&&this.lobbyRoom.sendPrivateMessage(t,JSON.stringify(i),"json-message")}getLocalId(){if(this.lobbyRoom)return io.Strophe.getResourceFromJid(this.lobbyRoom.myroomjid)}addMessageListener(t){if(this.lobbyRoom){let i=(i,n)=>{t(n,io.Strophe.getResourceFromJid(i))};return this.lobbyRoom.on(nG.JSON_MESSAGE_RECEIVED,i),i}}removeMessageHandler(t){this.lobbyRoom&&this.lobbyRoom.off(nG.JSON_MESSAGE_RECEIVED,t)}leave(){return this.lobbyRoom?this.lobbyRoom.leave().then(()=>{this.lobbyRoom=void 0,db.info("Lobby room left!")}).catch(()=>{}):Promise.reject(Error("The lobby has already been left"))}setLobbyRoomJid(t){this.lobbyRoomJid=t}_maybeJoinLobbyRoom(){this.isSupported()&&this.mainRoom.joined&&this.mainRoom.isModerator()&&this.mainRoom.membersOnlyEnabled&&!this.lobbyRoom&&this.join().then(()=>db.info("Joined lobby room")).catch(t=>db.error("Failed joining lobby",t))}join(t,i){let n=this.mainRoom.joined&&this.mainRoom.isModerator();if(!this.lobbyRoomJid)return Promise.reject(Error("Missing lobbyRoomJid, cannot join lobby room."));let r=io.Strophe.getNodeFromJid(this.lobbyRoomJid),o=io.Strophe.getDomainFromJid(this.lobbyRoomJid);return this.lobbyRoom=this.xmpp.createRoom(r,{customDomain:o,disableDiscoInfo:!0,disableFocus:!0,disableRoomCreationRetry:!0,enableLobby:!1}),t&&this.lobbyRoom.addOrReplaceInPresence("nick",{attributes:{xmlns:"http://jabber.org/protocol/nick"},value:t}
74),n?(this.lobbyRoom.addPresenceListener(dC,(t,i)=>{this.mainRoom.eventEmitter.emit(nG.MUC_LOBBY_MEMBER_UPDATED,i,{email:t.value})}),this.lobbyRoom.addEventListener(nG.MUC_MEMBER_JOINED,(t,i,n,r,o,s,a,d,c)=>{if(!Object.values(this.mainRoom.members).find(t=>t.jid===c)){for(let t of Object.values(this.mainRoom.getBreakoutRooms()._rooms))if(Object.values(t.participants).find(t=>t.jid===c))return;this.mainRoom.eventEmitter.emit(nG.MUC_LOBBY_MEMBER_JOINED,io.Strophe.getResourceFromJid(t),i,a?a.avatar:void 0)}}),this.lobbyRoom.addEventListener(nG.MUC_MEMBER_LEFT,t=>{this.mainRoom.eventEmitter.emit(nG.MUC_LOBBY_MEMBER_LEFT,io.Strophe.getResourceFromJid(t))}),this.lobbyRoom.addEventListener(nG.MUC_DESTROYED,()=>{Object.keys(this.lobbyRoom.members).forEach(t=>this.mainRoom.eventEmitter.emit(nG.MUC_LOBBY_MEMBER_LEFT,io.Strophe.getResourceFromJid(t))),this.lobbyRoom.clean(),this.lobbyRoom=void 0,db.info("Lobby room left(destroyed)!")})):(this.lobbyRoom.addEventListener(nG.KICKED,t=>{t&&(this.mainRoom.eventEmitter.emit(nG.MUC_DENIED_ACCESS),this.lobbyRoom.clean())}),this.mainRoom.addEventListener(nG.INVITE_MESSAGE_RECEIVED,(t,i,n,r)=>{db.debug(`Received approval to join ${t} ${i} ${n}`),t===this.mainRoom.roomjid&&this.mainRoom.join(r)}),this.lobbyRoom.addEventListener(nG.MUC_DESTROYED,(t,i)=>{var n;null==(n=this.lobbyRoom)||n.clean(),this.lobbyRoom=void 0,db.info("Lobby room left(destroyed)!"),i?this.mainRoom.join():this.mainRoom.eventEmitter.emit(nG.MUC_DESTROYED,t)}),this.mainRoom.addEventListener(nG.MUC_JOINED,()=>{this.leave().catch(()=>{})})),new Promise((t,r)=>{this.lobbyRoom.addEventListener(nG.MUC_JOINED,()=>{t(),i&&!n&&this.lobbyRoom.addOrReplaceInPresence(dC,{value:i})&&this.lobbyRoom.sendPresence()}),this.lobbyRoom.addEventListener(nG.ROOM_JOIN_ERROR,r),this.lobbyRoom.addEventListener(nG.ROOM_CONNECT_ERROR,r),this.lobbyRoom.addEventListener(nG.ROOM_CONNECT_NOT_ALLOWED_ERROR,(t,i)=>{var n;t===tr.ROOM_CREATION_RESTRICTION?(db.info("Lobby room creation not allowed, we will retry on main room."),null==(n=this.lobbyRoom)||n.clean(),this.lobbyRoom=void 0,this.mainRoom.join()):r(t,i)}),this.lobbyRoom.join()})}denyAccess(t){if(!this.isSupported()||!this.mainRoom.isModerator())return;let i=Object.keys(this.lobbyRoom.members).find(i=>io.Strophe.getResourceFromJid(i)===t);i?this.lobbyRoom.kick(i):db.error(`Not found member for ${t} in lobby room.`)}approveAccess(t){if(!this.isSupported()||!this.mainRoom.isModerator())return;let i=this.mainRoom.roomjid;this.mainRoom.getBreakoutRooms().isBreakoutRoom()&&(i=this.mainRoom.getBreakoutRooms().getMainRoomJid());let n=[],r=t;if(Array.isArray(t)||(r=[t]),r.forEach(t=>{let i=Object.keys(this.lobbyRoom.members).find(i=>io.Strophe.getResourceFromJid(i)===t);i?n.push(this.lobbyRoom.members[i].jid):db.error(`Not found member for ${i} in lobby room.`)}),n.length>0){let t=(0,io.$msg)({to:i}).c("x",{xmlns:"http://jabber.org/protocol/muc#user"});n.forEach(i=>{t.c("invite",{to:i}).up()}),this.xmpp.connection.sendIQ(t,()=>{},t=>{dr(t,{membersToApprove:n,operation:"lobby approve members",roomJid:this.lobbyRoom,userJid:this.xmpp.connection.jid})})}}}let dT="answer-poll",dx="new-poll";class dR{constructor(t){this._mainRoom=t,this._xmpp=t.xmpp,this._handleMessages=this._handleMessages.bind(this),this._mainRoom.xmpp.addListener(nG.POLLS_EVENT,this._handleMessages)}isSupported(){return!!this._xmpp.pollsComponentAddress}dispose(){this._mainRoom.xmpp.removeListener(nG.POLLS_EVENT,this._handleMessages)}createPoll(t,i,n){this._mainRoom.sendPrivateMessage(this._xmpp.pollsComponentAddress,JSON.stringify({answers:n,command:dx,pollId:t,question:i,type:"polls"}),"json-message",!0)}answerPoll(t,i){this._mainRoom.sendPrivateMessage(this._xmpp.pollsComponentAddress,JSON.stringify({answers:i,command:dT,pollId:t,type:"polls"}),"json-message",!0)}_handleMessages(t){switch(t.command){case dx:this._mainRoom.eventEmitter.emit(nG.POLLS_RECEIVE_EVENT,t);break;case"old-polls":var i;null==t||null==(i=t.polls)||i.forEach(t=>{this._mainRoom.eventEmitter.emit(nG.POLLS_RECEIVE_EVENT,{history:!0,...t})});break;case dT:this._mainRoom.eventEmitter.emit(nG.POLLS_ANSWER_EVENT,t)}}}let dA=(0,m.getLogger)("xmpp:RoomMetadata");class dw{constructor(t){this.room=t,this._handleMessages=this._handleMessages.bind(this),this.room.xmpp.addListener(nG.ROOM_METADATA_EVENT,this._handleMessages),this._metadata={}}dispose(){this.room.xmpp.removeListener(nG.ROOM_METADATA_EVENT,this._handleMessages)}setMetadata(t,i){if(!this.isSupported())return void dA.error(`Cannot set room metadata - supported:${this.isSupported()}`);let n={data:i,key:t};this._sendMessage(n)}getMetadata(){return this._metadata}isSupported(){return!!this.getComponentAddress()}getComponentAddress(){return this.room.xmpp.roomMetadataComponentAddress}_handleMessages(t){let i=t.metadata;i&&!ir(this._metadata,i)&&(this._metadata=i,dA.debug("Received metadata update",JSON.stringify(i)),this.room.eventEmitter.emit(nG.ROOM_METADATA_UPDATED,i))}_sendMessage(t){t[cT]="room_metadata";let i=(0,io.$msg)({to:this.getComponentAddress()});i.c("room_metadata",{room:this.room.roomjid,xmlns:"http://jitsi.org/jitmeet"},JSON.stringify(t)).up(),this.room.xmpp.connection.send(i)}}function dI(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}
74finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return dk(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?dk(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 75In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function dk(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}let dO=(0,m.getLogger)("xmpp:ChatRoom"),dN=/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g,dP={json2packet(t,i){for(let n=0;n<t.length;n++){let r=t[n];r&&(i.c(r.tagName,r.attributes),r.value&&i.t(r.value),r.children&&this.json2packet(r.children,i),i.up())}},packet2JSON(t,i){for(let n of Array.from(t.children)){let t={attributes:{},children:[],tagName:n.tagName};for(let i of Array.from(n.attributes))t.attributes[i.name]=i.value;let r=io.Strophe.getText(n);r&&(t.value=io.Strophe.xmlunescape(r)),i.push(t),this.packet2JSON(n,t.children)}}};function dL(t,i){let n=[];for(let r=0;r<t.length;r++)t[r].tagName===i&&n.push(t[r]);return n}let dM=["owner","admin","member"];function dF(t,i){let n={},r=t.children.find(t=>"user"===t.tagName),o="hidden-from-recorder";if(r){for(let t of(n.user={},r.children))t.tagName&&void 0!==t.value&&t.tagName!==o&&(n.user[t.tagName]=t.value);if(i){let t=r.children.find(t=>t.tagName===o);t&&(n.user[o]=t.value)}}let s=t.children.find(t=>"group"===t.tagName);return s&&(n.group=s.value),n}class dj extends rI{constructor(t,i,n,r,o){super(),this.xmpp=r,this.connection=t,this.roomjid=io.Stro
75phe.getBareJidFromJid(i),this.myroomjid=i,this.password=n,this.replaceParticipant=!1,dO.info(`Joining MUC as ${this.myroomjid}`),this.members={},this.presMap={nodes:[]},this.presHandlers={},this._removeConnListeners=[],this.joined=!1,this.inProgressEmitted=!1,this.role=null,this.focusMucJid=null,this.noBridgeAvailable=!1,this.options=o||{},this.eventsForwarder=new nH(this.xmpp.moderator,this.eventEmitter),this.eventsForwarder.forward(nq.IDENTITY_UPDATED,nq.IDENTITY_UPDATED),this.eventsForwarder.forward(nG.AUTHENTICATION_REQUIRED,nG.AUTHENTICATION_REQUIRED),this.eventsForwarder.forward(nG.FOCUS_DISCONNECTED,nG.FOCUS_DISCONNECTED),this.eventsForwarder.forward(nG.RESERVATION_ERROR,nG.RESERVATION_ERROR),(void 0===this.options.enableLobby||this.options.enableLobby)&&(this.lobby=new dD(this)),this.avModeration=new dp(this),this.breakoutRooms=new dS(this),this.fileSharing=new aW(this),this.polls=new dR(this),this.roomMetadata=new dw(this),this.initPresenceMap(o),this.lastPresences={},this.phoneNumber=null,this.phonePin=null,this.connectionTimes={},this.participantPropertyListener=null,this.locked=!1,this.transcriptionStatus=du,this.initialDiscoRoomInfoReceived=!1}initPresenceMap(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.presMap.to=this.myroomjid,this.presMap.xns="http://jabber.org/protocol/muc",this.presMap.nodes=[],t.statsId&&this.presMap.nodes.push({tagName:"stats-id",value:t.statsId}),this.presenceUpdateTime=Date.now()}_extractFeatures(t){let i=new Set;for(let n=0;n<t.children.length;n++){let r=t.children[n].attributes;null!=r&&r.var&&i.add(r.var)}return i}_initFocus(t,i){this.focusMucJid=t,this.focusFeatures=i}_onConnStatusChanged(t){t===di.Status.CONNECTED&&this.presenceUpdateTime>this.presenceSyncTime&&this.sendPresence()}_processNode(t,i){try{var n;(null!=(n=this.presHandlers[t.tagName])?n:[]).forEach(n=>{n(t,io.Strophe.getResourceFromJid(i),i)})}catch(i){dO.error(`Error processing:${t.tagName} node.`,i)}}clean(){this._removeConnListeners.forEach(t=>t()),this._removeConnListeners=[],this.eventsForwarder.removeListeners(nq.IDENTITY_UPDATED,nG.AUTHENTICATION_REQUIRED,nG.FOCUS_DISCONNECTED,nG.RESERVATION_ERROR),this.joined=!1,this.inProgressEmitted=!1}_parseReplyMessage(t){return sy(sb(t,':scope>reply[*|xmlns="urn:xmpp:reply:0"]'),"to")}join(t,i){return this.password=t,this.replaceParticipant=i,new Promise(t=>{this.options.disableFocus&&dO.info(`Conference focus disabled for ${this.roomjid}`),(this.options.disableFocus?Promise.resolve().finally(()=>{this.xmpp.connection._breakoutMovingToMain=void 0}):this.xmpp.moderator.sendConferenceRequest(this.roomjid)).then(()=>{this.sendPresence(!0),this._removeConnListeners.push(this.connection.addCancellableListener(di.Events.CONN_STATUS_CHANGED,this._onConnStatusChanged.bind(this))),t()}).catch(t=>dO.trace("PreJoin rejected",t))})}sendPresence(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.presMap.to;if(!this.connection||!this.connection.connected||!i||!this.joined&&!t)return;let n=(0,io.$pres)({to:i});t&&(this.replaceParticipant&&n.c("flip_device").up(),n.c("x",{xmlns:this.presMap.xns}),this.password&&n.c("password").t(this.password).up(),this.xmpp.moderator.targetUrl&&n.c("billingid").t(ne.machineId).up(),n.up()),dP.json2packet(this.presMap.nodes,n),this.presenceSyncTime=Date.now(),this.connection.send(n),t&&this.connection.flush()}doLeave(t){dO.info("do leave",this.myroomjid);let i=(0,io.$pres)({to:this.myroomjid,type:"unavailable"});t&&i.c("status").t(t).up(),this.presMap.length=0,this.connection.isUsingWebSocket||this.connection.flush(),this.connection.send(i),this.connection.flush()}discoRoomInfo(){let t=(0,io.$iq)({to:this.roomjid,type:"get"}).c("query",{xmlns:io.Strophe.NS.DISCO_INFO});this.connection.sendIQ(t,t=>{let i=1===sv(t,':scope>query>feature[var="muc_passwordprotected"]').length;i!==this.locked&&(this.eventEmitter.emit(nG.MUC_LOCK_CHANGED,i),this.locked=i);let n=sb(t,':scope>query>x[type="result"]>field[var="muc#roominfo_meetingId"]>value');n?this.setMeetingId(sE(n)):dO.warn("No meeting ID from backend");let r=sb(t,':scope>query>x[type="result"]>field[var="muc#roominfo_created_timestamp"]>value');r?this.eventEmitter.emit(nG.CONFERENCE_TIMESTAMP_RECEIVED,sE(r)):dO.warn("No conference duration from backend");let o=1===sv(t,':scope>query>feature[var="muc_membersonly"]').length,s=sb(t,':scope>query>x[type="result"]>field[var="muc#roominfo_lobbyroom"]>value');this.lobby&&this.lobby.setLobbyRoomJid(s?sE(s):void 0);let a=!!sE(sb(t,':scope>query>x[type="result"]>field[var="muc#roominfo_isbreakout"]>value'));this.breakoutRooms._setIsBreakoutRoom(a);let d=sb(t,':scope>query>x[type="result"]>field[var="muc#roominfo_breakout_main_room"]>value');d&&this.breakoutRooms._setMainRoomJid(sE(d)),o!==this.membersOnlyEnabled&&(this.membersOnlyEnabled=o,this.eventEmitter.emit(nG.MUC_MEMBERS_ONLY_CHANGED,o));let c="1"===sE(sb(t,':scope>query>x[type="result"]>field[var="muc#roominfo_visitorsEnabled"]>value'));c!==this.visitorsSupported&&(this.visitorsSupported=c,this.eventEmitter.emit(nG.MUC_VISITORS_SUPPORTED_CHANGED,c)),this.initialDiscoRoomInfoReceived=!0,this.eventEmitter.emit(nG.ROOM_DISCO_INFO_UPDATED)},t=>{dr(t,{operation:"get room disco info",roomJid:this.roomjid,userJid:this.connection.jid}),this.eventEmitter.emit(nG.ROOM_DISCO_INFO_FAILED,t)},1e4)}setMeetingId(t){this.meetingId!==t&&(this.meetingId&&dO.warn(`Meeting Id changed from:${this.meetingId} to:${t}`),this.meetingId=t,this.eventEmitter.emit(nG.MEETING_ID_SET,t))}
75createNonAnonymousRoom(){if(this.options.disableDiscoInfo)return;let t=(0,io.$iq)({to:this.roomjid,type:"get"}).c("query",{xmlns:"http://jabber.org/protocol/muc#owner"}).c("x",{type:"submit",xmlns:"jabber:x:data"});this.connection.sendIQ(t,t=>{if(!sS(t,':scope>query>x[*|xmlns="jabber:x:data"]>field[var="muc#roomconfig_whois"]'))return void dO.error("non-anonymous rooms not supported");let i=(0,io.$iq)({to:this.roomjid,type:"set"}).c("query",{xmlns:"http://jabber.org/protocol/muc#owner"});i.c("x",{type:"submit",xmlns:"jabber:x:data"}),i.c("field",{var:"FORM_TYPE"}).c("value").t("http://jabber.org/protocol/muc#roomconfig").up().up(),i.c("field",{var:"muc#roomconfig_whois"}).c("value").t("anyone").up().up(),this.connection.sendIQ(i,void 0,t=>{dr(t,{operation:"submit room configuration form",roomJid:this.roomjid,userJid:this.connection.jid})})},t=>{dr(t,{operation:"get room configuration form",roomJid:this.roomjid,userJid:this.connection.jid})})}onPresence(t){let i=t.getAttribute("from"),n={},r=t.getElementsByTagName("status")[0];r&&(n.status=r.textContent||"");let o=!1,s=!1,a=t.getElementsByTagNameNS("http://jabber.org/protocol/muc#user","x")[0],d=null==a?void 0:a.getElementsByTagName("item")[0];n.isReplaceParticipant=t.getElementsByTagName("flip_device").length,n.affiliation=null==d?void 0:d.getAttribute("affiliation"),n.role=null==d?void 0:d.getAttribute("role");let c=null==d?void 0:d.getAttribute("jid");n.jid=c,n.isFocus=this.xmpp.moderator.isFocusJid(c),n.isHiddenDomain=(null==c?void 0:c.indexOf("@"))>0&&this.options.hiddenDomain===c.substring(c.indexOf("@")+1,c.indexOf("/")),this.eventEmitter.emit(nG.PRESENCE_RECEIVED,{fromHiddenDomain:n.isHiddenDomain,isFocus:n.isFocus,presence:t});let l=t.querySelector("x");l&&l.remove();let u=[];dP.packet2JSON(t,u),this.lastPresences[i]=u;for(let t=0;t<u.length;t++){let i=u[t];switch(i.tagName){case"bot":{let t=i.attributes;if(!t)break;n.botType=t.type;break}case"nick":n.nick=i.value;break;case"silent":n.isSilent=!!i.value;break;case"userId":n.id=i.value;break;case"stats-id":n.statsID=i.value;break;case"identity":n.identity=dF(i,this.options.hiddenFromRecorderFeatureEnabled);break;case"features":n.features=this._extractFeatures(i);break;case"jitsi_participant_region":n.region=i.value;break;case"stat":{let t=i.attributes;if(!t)break;"version"===t.name&&(n.version=t.value)}}}if(!this.joined&&!this.inProgressEmitted){let t=this.connectionTimes["muc.join.started"]=window.performance.now();dO.info("(TIME) MUC join started: ",t),this.eventEmitter.emit(nG.MUC_JOIN_IN_PROGRESS),this.inProgressEmitted=!0}if(i===this.myroomjid){let i=n.role||"none";if(!this.joined){var h;this.joined=!0;let t=this.connectionTimes["muc.joined"]=window.performance.now();dO.info("(TIME) MUC joined: ",t),this.password&&(this.locked=!0),n.region&&null!=(h=this.options)&&h.deploymentInfo&&(this.options.deploymentInfo.userRegion=n.region),this.presenceUpdateTime>this.presenceSyncTime&&this.sendPresence(),this.xmpp.moderator.conferenceRequestSent=!1,this.eventEmitter.emit(nG.MUC_JOINED),this.options.disableDiscoInfo||this.discoRoomInfo()}if(this.role!==i&&(this.role=i,this.eventEmitter.emit(nG.LOCAL_ROLE_CHANGED,this.role)),sS(a,':scope>status[code="110"]')){let i=sb(t,':scope>permissions[*|xmlns="http://jitsi.org/jitmeet"]');if(i){let t={};sv(i,"p").forEach(i=>{t[sy(i,"name")]=sy(i,"val")}),this.eventEmitter.emit(nG.PERMISSIONS_RECEIVED,t)}}}else if(void 0===c)dO.info("Ignoring member with undefined JID");else if(void 0===this.members[i])this.members[i]=n,dO.info("entered",i),o=void 0!==n.status,s=void 0!==n.version,n.isFocus?this._initFocus(i,n.features):(this.eventEmitter.emit(nG.MUC_MEMBER_JOINED,i,n.nick,n.role,n.isHiddenDomain,n.statsID,n.status,n.identity,n.botType,n.jid,n.features,n.isReplaceParticipant,n.isSilent),o=!1);else{let t=this.members[i];t.role!==n.role&&(t.role=n.role,this.eventEmitter.emit(nG.MUC_ROLE_CHANGED,i,n.role)),t.affiliation!==n.affiliation&&(t.affiliation=n.affiliation),t.botType!==n.botType&&(t.botType=n.botType,this.eventEmitter.emit(nG.MUC_MEMBER_BOT_TYPE_CHANGED,i,n.botType)),n.isFocus&&(t.isFocus=!0,this._initFocus(i,n.features)),n.displayName&&(t.displayName=n.displayName),n.isSilent&&(t.isSilent=n.isSilent),t.status!==n.status&&(o=!0,t.status=n.status),t.version!==n.version&&(s=!0,t.version=n.version),ir(t.features,n.features)||(t.features=n.features,this.eventEmitter.emit(nG.PARTICIPANT_FEATURES_CHANGED,i,n.features))}let p=new Map;for(let t=0;t<u.length;t++){let r=u[t];switch(r.tagName){case"nick":if(!n.isFocus){let t=this.xmpp.options.displayJids?io.Strophe.getResourceFromJid(i):n.nick;this.eventEmitter.emit(nG.DISPLAY_NAME_CHANGED,i,t)}break;case"silent":this.eventEmitter.emit(nG.SILENT_STATUS_CHANGED,i,n.isSilent);break;case"bridgeNotAvailable":n.isFocus&&!this.noBridgeAvailable&&(this.noBridgeAvailable=!0,this.eventEmitter.emit(nG.BRIDGE_DOWN));break;case"conference-properties":if(n.isFocus){let t={};for(let i=0;i<r.children.length;i++){let n=r.children[i].attributes;null!=n&&n.key&&(t[n.key]=n.value)}this.eventEmitter.emit(nG.CONFERENCE_PROPERTIES_CHANGED,t)}break;case"transcription-status":{let t=r.attributes;if(!t)break;let o=t.status;o&&o!==this.transcriptionStatus&&n.isHiddenDomain&&n.features.has(cR)&&(this.transcriptionStatus=o,this.eventEmitter.emit(nG.TRANSCRIPTION_STATUS_CHANGED,o,io.Strophe.getResourceFromJid(i)));break}case"call-control":{let t=r.attributes;if(!t)break;this.phoneNumber=t.phone||null,this.phonePin=t.pin||null,this.eventEmitter.emit(nG.PHONE_NUMBER_CHANGED);break}default:r.tagName.startsWith("jitsi_participant_")?p.set(r.tagName.substring(18),r.value):this._processNode(r,i)}}let m=io.Strophe.getResourceFromJid(i);for(let t of p){var g=dI(t,2);let i=g[0],n=g[1];this.participantPropertyListener(m,i,n)}o&&this.eventEmitter.emit(nG.PRESENCE_STATUS,i,n.status),s&&dO.info(`Received version for ${c}: ${n.version}`)}setParticipantPropertyListener(t){this.participantPropertyListener=t}sendMessage(t,i,n){let r=(0,io.$msg)({to:this.roomjid,type:"groupchat"});"body"===i?r.c(i,{},t):r.c(i,{xmlns:"http://jitsi.org/jitmeet"},t),n&&r.up().c("reply",{to:n}),this.connection.send(r),this.eventEmitter.emit(nG.SENDING_CHAT_MESSAGE,t)}sendReaction(t,i,n){let r=t.match(dN);if(null==r||!r[0])throw Error(`Invalid reaction: ${t}`);let o=n?(0,io.$msg)({to:`${this.roomjid}/${n}`,type:"chat"}):(0,io.$msg)({to:this.roomjid,type:"groupchat"});o.c("reactions",{id:i,xmlns:"urn:xmpp:reactions:0"}).c("reaction",{},r[0]).up().c("store",{xmlns:"urn:xmpp:hints"}),this.connection.send(o)}sendPrivateMessage(t,i,n){let r=arguments.length>4?arguments[4]:void 0,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3]?t:`${this.roomjid}/${t}`,s=(0,io.$msg)({to:o,type:"chat"});"body"===n?s.c(n,i).up():s.c(n,{xmlns:"http://jitsi.org/jitmeet"},i).up(),r&&s.c("reply",{to:r}),this.connection.send(s),this.eventEmitter.emit(nG.SENDING_PRIVATE_CHAT_MESSAGE,i)}setSubject(t){let i=t?t.trim():t;if(i===this.subject)return;let n=(0,io.$msg)({to:this.roomjid,type:"groupchat"});n.c("subject",i),this.connection.send(n)}onPresenceUnavailable(t,i){if(sS(t,':scope>ignore[*|xmlns="http://jitsi.org/jitmeet/"]'))return!0;let n=sb(t,':scope>x[*|xmlns="http://jabber.org/protocol/muc#user"]>destroy');if(n){let i,r=sb(t,':scope>x[*|xmlns="http://jabber.org/protocol/muc#user"]>destroy>reason');return r&&(i=sE(r)),this.eventEmitter.emit(nG.MUC_DESTROYED,i,sy(n,"jid")),this.connection.emuc.doLeave(this.roomjid),!0}let r=sS(t,':scope>x[*|xmlns="http://jabber.org/protocol/muc#user"]>status[code="110"]'),o=sS(t,':scope>x[*|xmlns="http://jabber.org/protocol/muc#user"]>status[code="307"]'),s=Object.keys(this.members),a=sS(t,"flip_device");if(o){let n,o,s=sb(t,':scope>x[*|xmlns="http://jabber.org/protocol/muc#user"]>item>actor');s&&(n=sy(s,"nick"));let d=sb(t,':scope>x[*|xmlns="http://jabber.org/protocol/muc#user"]>item>reason');d&&(o=sE(d)),dO.info(`Kicked by ${i}`),this.eventEmitter.emit(nG.KICKED,r,n,io.Strophe.getResourceFromJid(i),o,a)}if(r)s.forEach(t=>{let i=this.members[t];delete this.members[t],delete this.lastPresences[t],i.isFocus||this.eventEmitter.emit(nG.MUC_MEMBER_LEFT,t)}),this.connection.emuc.doLeave(this.roomjid),o||this.eventEmitter.emit(nG.MUC_LEFT);else{let n,r=sb(t,":scope>status"),o=this.members[i];r&&(n=sE(r)),delete this.members[i],delete this.lastPresences[i],this.eventEmitter.emit(nG.MUC_MEMBER_LEFT,i,n),o&&o.isHiddenDomain&&o.features.has(cR)&&this.transcriptionStatus!==du&&(this.transcriptionStatus=du,this.eventEmitter.emit(nG.TRANSCRIPTION_STATUS_CHANGED,this.transcriptionStatus,io.Strophe.getResourceFromJid(i),!0)),null!=o&&o.isFocus&&(dO.info("Focus has left the room - leaving conference"),this.eventEmitter.emit(nG.FOCUS_
75LEFT))}}onMessage(t,i){let n=t.getAttribute("type");if("error"===n){let i=sv(t,":scope>settings-error>text"),n=i.length?sE(i[0]):"";if(n.length)return this.eventEmitter.emit(nG.SETTINGS_ERROR_RECEIVED,n),!0;let r=sv(t,":scope>error>text"),o=r.length?sE(r[0]):"";return this.eventEmitter.emit(nG.CHAT_ERROR_RECEIVED,o),!0}let r=sv(t,':scope>[*|xmlns="urn:xmpp:reactions:0"]>reaction');if(r.length>0){let n=sy(sb(t,':scope>[*|xmlns="urn:xmpp:reactions:0"]'),"id"),o=[];return r.forEach(t=>{let i=sE(t).match(dN);null!=i&&i[0]&&o.push(i[0])}),o.length>0&&this.eventEmitter.emit(nG.REACTION_RECEIVED,i,o,n),!0}let o=sb(t,":scope>body"),s=o?sE(o):"",a=sb(t,":scope>subject");if(a){let t=sE(a);(t||""===t)&&(this.subject=t.trim(),this.eventEmitter.emit(nG.SUBJECT_CHANGED,t),dO.info(`Subject is changed to ${t}`))}let d=sy(sb(t,":scope>delay"),"stamp");if(!d&&(d=sy(sb(t,':scope>[*|xmlns="jabber:x:delay"]'),"stamp"))){let t=d.match(/(\d{4})(\d{2})(\d{2}T\d{2}:\d{2}:\d{2})/);4===(null==t?void 0:t.length)&&(d=`${t[1]}-${t[2]}-${t[3]}Z`)}if(i===this.roomjid){let n;if(sS(t,':scope>x[*|xmlns="http://jabber.org/protocol/muc#user"]>status[code="104"]'))this.discoRoomInfo();else if(n=sb(t,':scope>x[*|xmlns="http://jabber.org/protocol/muc#user"]>invite')){let r,o=sb(t,':scope>x[*|xmlns="http://jabber.org/protocol/muc#user"]>password');o&&(r=sE(o)),this.eventEmitter.emit(nG.INVITE_MESSAGE_RECEIVED,i,sy(n,"from"),s,r)}}let c=sE(sb(t,':scope>json-message[*|xmlns="http://jitsi.org/jitmeet"]'));if(c){let t=this.xmpp.tryParseJSONAndVerify(c);if(t&&null===d)return void this.eventEmitter.emit(nG.JSON_MESSAGE_RECEIVED,i,t)}if(s){let r=sy(t,"id")||i1(),o=this._parseReplyMessage(t),a=sb(t,':scope>display-name[*|xmlns="http://jitsi.org/protocol/display-name"]'),c="visitor"===sy(a,"source");if("chat"===n){let n,l;if(c){n=sE(a);let i=sb(t,':scope>addresses[*|xmlns="http://jabber.org/protocol/address"]');if(i){let t=sb(i,'address[type="ofrom"]');t&&(l=sy(t,"jid"))}}this.eventEmitter.emit(nG.PRIVATE_MESSAGE_RECEIVED,i,s,this.myroomjid,d,r,n,c,l,o)}else if("groupchat"===n){let t=a?sE(a):void 0,n=sy(a,"source");null===n&&(n=void 0);let l=c?void 0:n;this.eventEmitter.emit(nG.MESSAGE_RECEIVED,i,s,this.myroomjid,d,t,c,r,l,o)}}}onPresenceError(t,i){let n;if(i===this.myroomjid&&(this.xmpp.moderator.conferenceRequestSent=!1),sS(t,':scope>error[type="auth"]>not-authorized[*|xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"]'))dO.debug("on password required",i),this.eventEmitter.emit(nG.PASSWORD_REQUIRED);else if(sS(t,':scope>error[type="cancel"]>not-allowed[*|xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"]'))if(io.Strophe.getDomainFromJid(t.getAttribute("to"))===this.xmpp.options.hosts.anonymousdomain)this.eventEmitter.emit(nG.ROOM_JOIN_ERROR);else{var r;dO.warn("onPresError ",t);let n=sE(sb(t,':scope>error[type="cancel"]>text[*|xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"]')),o=tr.GENERAL;if("Room creation is restricted"===n){if(o=tr.ROOM_CREATION_RESTRICTION,!this.options.disableRoomCreationRetry&&(this._roomCreationRetries||(this._roomCreationRetries=0),this._roomCreationRetries++,this._roomCreationRetries<=3))return void setTimeout(()=>this.join(this.password,this.replaceParticipant),aZ(this._roomCreationRetries,500,1.5))}else sS(t,':scope>error[type="cancel"]>authentication-required[*|xmlns="http://jitsi.org/jitmeet"]')?o=tr.ROOM_UNAUTHENTICATED_ACCESS_DISABLED:sS(t,':scope>error[type="cancel"]>no-main-participants[*|xmlns="jitsi:visitors"]')?o=tr.NO_MAIN_PARTICIPANTS:sS(t,':scope>error[type="cancel"]>promotion-not-allowed[*|xmlns="jitsi:visitors"]')?o=tr.PROMOTION_NOT_ALLOWED:sS(t,':scope>error[type="cancel"]>no-visitors-lobby[*|xmlns="jitsi:visitors"]')&&(o=tr.NO_VISITORS_LOBBY);if(o===tr.GENERAL&&i===this.myroomjid&&null!=(r=this.getBreakoutRooms())&&r.isBreakoutRoom()){let t=this.getBreakoutRooms().getMainRoomJid();if(t)return dO.warn(`Breakout join not-allowed for ${i}; moving back to main room ${t}`),void this.eventEmitter.emit(nG.BREAKOUT_ROOMS_MOVE_TO_ROOM,t)}this.eventEmitter.emit(nG.ROOM_CONNECT_NOT_ALLOWED_ERROR,o,n)}else if(sS(t,":scope>error>service-unavailable"))dO.warn("Maximum users limit for the room has been reached",t),this.eventEmitter.emit(nG.ROOM_MAX_USERS_ERROR,{visitorsSupported:this.xmpp.moderator.visitorsSupported});else if(sS(t,':scope>error[type="auth"]>registration-required[*|xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"]')){let i,n=sb(t,':scope>error[type="auth"]>lobbyroom');n&&(i=sE(n));let r=sS(t,':scope>error[type="auth"]>waiting-for-host');this.eventEmitter.emit(nG.ROOM_CONNECT_MEMBERS_ONLY_ERROR,i,r)}else(n=sb(t,':scope>error[type="modify"]>displayname-required[*|xmlns="http://jitsi.org/jitmeet"]'))?(dO.warn("display name required ",t),this.eventEmitter.emit(nG.DISPLAY_NAME_REQUIRED,sy(n,"lobby"))):(dO.warn("onPresError ",t),this.eventEmitter.emit(nG.ROOM_CONNECT_ERROR))}setAffiliation(t,i){let n=(0,io.$iq)({to:this.roomjid,type:"set"}).c("query",{xmlns:"http://jabber.org/protocol/muc#admin"}
75).c("item",{affiliation:i,jid:io.Strophe.getBareJidFromJid(t)}).c("reason").t(`Your affiliation has been changed to '${i}'.`).up().up().up();this.connection.sendIQ(n,n=>dO.info("Set affiliation of participant with jid: ",t,"to",i,n),n=>{dr(n,{affiliation:i,operation:"set affiliation of participant",participantJid:t,roomJid:this.roomjid,userJid:this.connection.jid})})}kick(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"You have been kicked.",n=(0,io.$iq)({to:this.roomjid,type:"set"}).c("query",{xmlns:"http://jabber.org/protocol/muc#admin"}).c("item",{nick:io.Strophe.getResourceFromJid(t),role:"none"}).c("reason").t(i).up().up().up();this.connection.sendIQ(n,i=>dO.info("Kick participant with jid: ",t,i),n=>{dr(n,{operation:"kick participant",participantJid:t,reason:i,roomJid:this.roomjid,userJid:this.connection.jid})},void 0)}lockRoom(t,i,n,r){this.connection.sendIQ((0,io.$iq)({to:this.roomjid,type:"get"}).c("query",{xmlns:"http://jabber.org/protocol/muc#owner"}),o=>{if(sS(o,':scope>query>x[*|xmlns="jabber:x:data"]>field[var="muc#roomconfig_roomsecret"]')){let r=(0,io.$iq)({to:this.roomjid,type:"set"}).c("query",{xmlns:"http://jabber.org/protocol/muc#owner"});r.c("x",{type:"submit",xmlns:"jabber:x:data"}),r.c("field",{var:"FORM_TYPE"}).c("value").t("http://jabber.org/protocol/muc#roomconfig").up().up(),r.c("field",{var:"muc#roomconfig_roomsecret"}).c("value").t(t).up().up(),r.c("field",{var:"muc#roomconfig_passwordprotectedroom"}).c("value").t(null===t||0===t.length?"0":"1").up().up(),this.membersOnlyEnabled&&r.c("field",{var:"muc#roomconfig_membersonly"}).c("value").t("true").up().up(),r.c("field",{var:"muc#roomconfig_whois"}).c("value").t("anyone").up().up(),this.connection.sendIQ(r,()=>{this.password=t,i()},t=>{dr(t,{operation:"lock room (submit form)",roomJid:this.roomjid,userJid:this.connection.jid}),n(t)})}else r()},t=>{dr(t,{operation:"lock room (get configuration)",roomJid:this.roomjid,userJid:this.connection.jid}),n(t)})}setMembersOnly(t,i,n){if(t&&Object.values(this.members).filter(t=>!t.isFocus).length){let t=(0,io.$iq)({to:this.roomjid,type:"set"}).c("query",{xmlns:"http://jabber.org/protocol/muc#admin"}),i=!1;Object.values(this.members).forEach(n=>
75{n.jid&&!dM.includes(n.affiliation)&&(t.c("item",{affiliation:"member",jid:io.Strophe.getBareJidFromJid(n.jid)}).up(),i=!0)}),i&&this.xmpp.connection.sendIQ(t.up(),void 0,t=>{dr(t,{operation:"set members affiliation",roomJid:this.roomjid,userJid:this.xmpp.connection.jid})})}let r=n||(()=>{});this.xmpp.connection.sendIQ((0,io.$iq)({to:this.roomjid,type:"get"}).c("query",{xmlns:"http://jabber.org/protocol/muc#owner"}),n=>{if(sS(n,':scope>query>x[*|xmlns="jabber:x:data"]>field[var="muc#roomconfig_membersonly"]')){let n=(0,io.$iq)({to:this.roomjid,type:"set"}).c("query",{xmlns:"http://jabber.org/protocol/muc#owner"});n.c("x",{type:"submit",xmlns:"jabber:x:data"}),n.c("field",{var:"FORM_TYPE"}).c("value").t("http://jabber.org/protocol/muc#roomconfig").up().up(),n.c("field",{var:"muc#roomconfig_membersonly"}).c("value").t(t?"true":"false").up().up(),this.locked&&n.c("field",{var:"muc#roomconfig_passwordprotectedroom"}).c("value").t("1").up().up(),this.xmpp.connection.sendIQ(n,i,i=>{dr(i,{enabled:t,operation:"set members only (submit form)",roomJid:this.roomjid,userJid:this.xmpp.connection.jid}),r(i)})}else r(Error("Setting members only room not supported!"))},i=>{dr(i,{enabled:t,operation:"set members only (get configuration)",roomJid:this.roomjid,userJid:this.xmpp.connection.jid}),r(i)})}addOrReplaceInPresence(t,i){i.tagName=t;let n=this.presMap.nodes.filter(i=>t===i.tagName);return!(1===n.length&&ir(n[0],i)||(this.removeFromPresence(t),this.presMap.nodes.push(i),this.presenceUpdateTime=Date.now(),0))}getFromPresence(t){return this.presMap.nodes.find(i=>t===i.tagName)}removeFromPresence(t){let i=this.presMap.nodes.filter(i=>t!==i.tagName);this.presMap.nodes=i,this.presenceUpdateTime=Date.now()}addPresenceListener(t,i){if("function"!=typeof i)throw Error('"handler" is not a function');let n=this.presHandlers[t];n||(this.presHandlers[t]=n=[]),-1===n.indexOf(i)?n.push(i):dO.warn(`Trying to add the same handler more than once for: ${t}`)}removePresenceListener(t,i){let n=this.presHandlers[t],r=n?n.indexOf(i):-1;-1!==r?n.splice(r,1):dO.warn(`Handler for: ${t} was not registered`)}isFocus(t){let i=this.members[t];return i?i.isFocus:null}isModerator(){return"moderator"===this.role}getMediaPresenceInfo(t,i){let n=this.lastPresences[`${this.roomjid}/${t}`];if(!n)return null;let r={muted:!0,videoType:i===nx.VIDEO?rw.CAMERA:void 0},o=null;if(i===nx.AUDIO)o=dL(n,"audiomuted");else{if(i!==nx.VIDEO)return dO.error(`Unsupported media type: ${i}`),null;{o=dL(n,"videomuted");let t=dL(n,"jitsi_participant_codecType"),i=dL(n,"videoType");i.length>0&&(r.videoType=i[0].value),t.length>0&&(r.codecType=t[0].value)}}return o.length>0&&(r.muted="true"===o[0].value),r}getMemberRole(t){return this.members[t]?this.members[t].role:null}getLastPresence(t){return this.lastPresences[`${this.roomjid}/${t}`]}dial(t){return this.connection.rayo.dial(t,"fromnumber",io.Strophe.getBareJidFromJid(this.myroomjid),this.password,this.focusMucJid)}hangup(){return this.connection.rayo.hangup()}getLobby(){return this.lobby}getAVModeration(){return this.avModeration}getBreakoutRooms(){return this.breakoutRooms}getFileSharing(){return this.fileSharing}getMetadataHandler(){return this.roomMetadata}getPolls(){return this.polls}getPhoneNumber(){return this.phoneNumber}getPhonePin(){return this.phonePin}getMeetingId(){return this.meetingId}muteParticipant(t,i,n){dO.info("set mute",i,t);let r=(0,io.$iq)({to:this.focusMucJid,type:"set"}).c("mute",{jid:t,xmlns:`http://jitsi.org/jitmeet/${n}`}).t(i.toString()).up();this.connection.sendIQ(r,t=>dO.info("set mute",t),r=>{dr(r,{mediaType:n,mute:i,operation:"set mute participant",participantJid:t,roomJid:this.roomjid,userJid:this.connection.jid})})}onMute(t){if(t.getAttribute("from")!==this.focusMucJid)return void dO.warn("Ignored mute from non focus peer");let i=sb(t,"mute");"true"===sE(i)?this.eventEmitter.emit(nG.AUDIO_MUTED_BY_FOCUS,sy(i,"actor")):dO.warn("Ignoring a mute request which does not explicitly specify a positive mute command.")}onMuteVideo(t){if(t.getAttribute("from")!==this.focusMucJid)return void dO.warn("Ignored mute from non focus peer");let i=sb(t,"mute");"true"===sE(i)?this.eventEmitter.emit(nG.VIDEO_MUTED_BY_FOCUS,sy(i,"actor")):dO.warn("Ignoring a mute request which does not explicitly specify a positive mute command.")}onMuteDesktop(t){if(t.getAttribute("from")!==this.focusMucJid)return void dO.warn("Ignored mute from non focus peer");let i=sb(t,"mute");"true"===sE(i)?this.eventEmitter.emit(nG.DESKTOP_MUTED_BY_FOCUS,sy(i,"actor")):dO.warn("Ignoring a mute request which does not explicitly specify a positive mute command.")}leave(t){var i,n=this;this.avModeration.dispose(),this.breakoutRooms.dispose(),this.fileSharing.dispose(),this.polls.dispose(),this.roomMetadata.dispose();let r=[];return(null==(i=this.lobby)?void 0:i.lobbyRoom)&&r.push(this.lobby.leave()),r.push(new Promise((i,r)=>{let o=-1,s=function(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];n.eventEmitter.removeListener(nG.MUC_LEFT,s),clearTimeout(o),n.clean(),t?(n.connection.emuc.doLeave(n.roomjid),r(Error("The timeout for the confirmation about leaving the room expired."))):i(void 0)};this.joined?(o=setTimeout(()=>s(!0),5e3),this.eventEmitter.on(nG.MUC_LEFT,s),this.doLeave(t)):(this.connection.emuc.doLeave(this.roomjid),this.clean(),i(void 0))})),Promise.allSettled(r)}end(){if(this.breakoutRooms.isBreakoutRoom())return void dO.warn("Cannot end conference: this is a breakout room.");let t=(0,io.$msg)({to:this.xmpp.endConferenceComponentAddress});t.c("end_conference").up(),this.xmpp.connection.send(t)}getShortTermCredentials(t){return new Promise((i,n)=>{let r=this.cachedShortTermCredentials||{};r[t]?i(r[t]):this.connection.sendIQ((0,io.$iq)({to:this.xmpp.options.hosts.domain,type:"get"}).c("credentials",{xmlns:"urn:xmpp:extdisco:2"}
75).c("service",{host:t,type:"short-lived-token"}),n=>{let o=sb(n,':scope>credentials[*|xmlns="urn:xmpp:extdisco:2"]>service'),s=new Date,a=new Date(sy(o,"expires"));r[t]=sy(o,"password"),this.cachedShortTermCredentials=r,setTimeout(()=>{this.cachedShortTermCredentials[t]=void 0},a.getTime()-s.getTime()-1e4),i(this.cachedShortTermCredentials[t])},i=>{dr(i,{operation:"get short term credentials",roomJid:this.roomjid,service:t,userJid:this.connection.jid}),n(i)})})}}let dV=(0,m.getLogger)("xmpp:strophe.emuc");class dB extends a4{constructor(t){super(),this.xmpp=t,this.rooms={}}init(t){super.init(t),this.connection.addHandler(this.onPresence.bind(this),null,"presence",null,null,null,null),this.connection.addHandler(this.onPresenceUnavailable.bind(this),null,"presence","unavailable",null),this.connection.addHandler(this.onPresenceError.bind(this),null,"presence","error",null),this.connection.addHandler(this.onMessage.bind(this),null,"message",null,null),this.connection.addHandler(this.onMute.bind(this),"http://jitsi.org/jitmeet/audio","iq","set",null,null),this.connection.addHandler(this.onMuteVideo.bind(this),"http://jitsi.org/jitmeet/video","iq","set",null,null),this.connection.addHandler(this.onMuteDesktop.bind(this),"http://jitsi.org/jitmeet/desktop","iq","set",null,null),this.connection.addHandler(this.onVisitors.bind(this),"jitsi:visitors","iq","set",null,null)}createRoom(t,i,n){let r=io.Strophe.getBareJidFromJid(t);if(this.isRoomCreated(r)){let t="You are already in the room!";throw dV.error(t),Error(t)}return this.rooms[r]=new dj(this.connection,t,i,this.xmpp,n),this.eventEmitter.emit(nG.EMUC_ROOM_ADDED,this.rooms[r]),this.rooms[r]}isRoomCreated(t){return t in this.rooms}doLeave(t){this.eventEmitter.emit(nG.EMUC_ROOM_REMOVED,this.rooms[t]),delete this.rooms[t]}onPresence(t){let i=t.getAttribute("from");if(t.getAttribute("type"))return!0;let n=this.rooms[io.Strophe.getBareJidFromJid(i)];return!n||(sS(t,':scope>x[*|xmlns="http://jabber.org/protocol/muc#user"]>status[code="201"]')&&n.createNonAnonymousRoom(),n.onPresence(t),!0)}onPresenceUnavailable(t){let i=t.getAttribute("from"),n=this.rooms[io.Strophe.getBareJidFromJid(i)];return!n||(n.onPresenceUnavailable(t,i),!0)}onPresenceError(t){let i=t.getAttribute("from"),n=this.rooms[io.Strophe.getBareJidFromJid(i)];return!n||(n.onPresenceError(t,i),!0)}onMessage(t){let i=t.getAttribute("from"),n=this.rooms[io.Strophe.getBareJidFromJid(i)];return!n||(n.onMessage(t,i),!0)}onMute(t){let i=t.getAttribute("from"),n=this.rooms[io.Strophe.getBareJidFromJid(i)];return!n||(n.onMute(t),!0)}onMuteVideo(t){let i=t.getAttribute("from"),n=this.rooms[io.Strophe.getBareJidFromJid(i)];return!n||(n.onMuteVideo(t),!0)}onMuteDesktop(t){let i=t.getAttribute("from"),n=this.rooms[io.Strophe.getBareJidFromJid(i)];return!n||(n.onMuteDesktop(t),!0)}onVisitors(t){let i=t.getAttribute("from");if(!this.rooms[io.Strophe.getBareJidFromJid(i)])return!0;let n=sb(t,':scope>visitors[*|xmlns="jitsi:visitors"]'),r=sb(n,":scope>promotion-response");return n&&r&&("true"===String(sy(r,"allow")).toLowerCase()?(dV.info("Promotion request accepted. Redirected to main room."),this.xmpp.eventEmitter.emit(nZ,void 0,sy(n,"focusjid"),sy(r,"username"))):(dV.info("Promotion request rejected."),this.xmpp.eventEmitter.emit(nG.VISITORS_REJECTION))),!0}}let dU=(0,m.getLogger)("xmpp:JingleHelperFunctions");function d$(t,i){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=i.v?rw.DESKTOP:void 0;!r&&n&&(r=rw.CAMERA);let o=(0,io.$build)("source",{name:i.n,ssrc:i.s,videoType:r,xmlns:sf.SOURCE_ATTRIBUTES});return i.m&&o.c("parameter",{name:"msid",value:i.m}).up(),o.c("ssrc-info",{owner:t,xmlns:"http://jitsi.org/jitmeet"}).up(),o.node}function dH(t){var i;let n=(0,io.$build)("ssrc-group",{semantics:"f"===(i=t[0])?o9.FID:"s"===i?o9.SIM:null,xmlns:sf.SOURCE_ATTRIBUTES});for(let i=1;i<t.length;i++)n.c("source",{ssrc:t[i],xmlns:sf.SOURCE_ATTRIBUTES}).up();return n.node}function dJ(t,i){let n=sb(t,"jingle"),r=sb(n,`:scope>content[name="${i}"]`);r||(r=(0,io.$build)("content",{name:i}).node,null==n||n.appendChild(r));let o=sb(r,"description");return o||(o=(0,io.$build)("description",{media:i,xmlns:sf.RTP_MEDIA}).node,r.appendChild(o)),o}function dq(t,i){var n,r,o;let s;try{s=iX(i.textContent||"")}
75catch(t){return dU.error(`json-message XML contained invalid JSON, ignoring: ${i.textContent}`),null}if(null==(n=s)||!n.sources)return null;let a=dJ(t,nx.AUDIO),d=dJ(t,nx.VIDEO),c=new Map;for(let t in s.sources)if(s.sources.hasOwnProperty(t)){let i=[],n=s.sources[t],l=null!=n&&n.length?n[0]:[],u=(null==n?void 0:n.length)>1?n[1]:[],h=(null==n?void 0:n.length)>2?n[2]:[],p=(null==n?void 0:n.length)>3?n[3]:[];if(null!=l&&l.length)for(let n=0;n<l.length;n++)d.appendChild(d$(t,l[n],!0)),i.push(null==(r=l[n])?void 0:r.s);if(null!=u&&u.length)for(let t=0;t<u.length;t++)d.appendChild(dH(u[t]));if(null!=h&&h.length)for(let n=0;n<h.length;n++)a.appendChild(d$(t,h[n])),i.push(null==(o=h[n])?void 0:o.s);if(null!=p&&p.length)for(let t=0;t<p.length;t++)a.appendChild(dH(p[t]));c.set(t,i)}return c}function dG(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return dz(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?dz(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 76In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function dz(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}class dK{constructor(t,i,n){this.isP2P=n,this.mySdp=t,this.othersSdp=i}getNewMedia(){let t=this.mySdp.getMediaSsrcMap(),i=this.othersSdp.getMediaSsrcMap(),n={};for(let o of i.entries()){var r=dG(o,2);let i=r[0],s=r[1],a=t.get(i);if(!a){n[i]=s;continue}let d=Object.keys(s.ssrcs);d.length&&!ir(Object.keys(a.ssrcs).sort(),[...d].sort())&&(n[i]=s)}return n}toJingle(t){let i=!1;for(let n of Object.values(this.getNewMedia()))i=!0,t.c("content",{name:this.isP2P?n.mid:n.mediaType}),t.c("description",{media:n.mediaType,xmlns:sf.RTP_MEDIA}),Object.keys(n.ssrcs).forEach(i=>{let r=n.ssrcs[i],o=r.lines,s=sh.parseSourceNameLine(o),a=sh.parseVideoTypeLine(o);t.c("source",{xmlns:sf.SOURCE_ATTRIBUTES}),t.attrs({name:s,ssrc:r.ssrc,videoType:a});let d=sh.parseMSIDAttribute(o);d&&t.c("parameter",{name:"msid",value:d}).up(),t.up()}),n.ssrcGroups.forEach(i=>{i.ssrcs.length&&(t.c("ssrc-group",{semantics:i.semantics,xmlns:sf.SOURCE_ATTRIBUTES}),i.ssrcs.forEach(i=>{t.c("source",{ssrc:i}).up()}),t.up())}),t.up(),t.up();return i}}function dW(t){return function(){if(null===t)throw Error("Callback was already called.");var i=t;t=null;for(var n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=arguments[o];i.apply(this,r)}}var dY="function"==typeof queueMicrotask&&queueMicrotask,dQ="function"==typeof setImmediate&&setImmediate,dX="object"==typeof process&&"function"==typeof process.nextTick;let dZ=(r=dY?queueMicrotask:dQ?setImmediate:dX?process.nextTick:function(t){setTimeout(t,0)},function(t){for(var i=arguments.length,n=Array(i>1?i-1:0),o=1;o<i;o++)n[o-1]=arguments[o];return r(()=>t(...n))});class d0{constructor(){this.head=this.tail=null,this.length=0}removeLink(t){return t.prev?t.prev.next=t.next:this.head=t.next,t.next?t.next.prev=t.prev:this.tail=t.prev,t.prev=t.next=null,this.length-=1,t}empty(){for(;this.head;)this.shift();return this}insertAfter(t,i){i.prev=t,i.next=t.next,t.next?t.next.prev=i:this.tail=i,t.next=i,this.length+=1}insertBefore(t,i){i.prev=t.prev,i.next=t,t.prev?t.prev.next=i:this.head=i,t.prev=i,this.length+=1}unshift(t){this.head?this.insertBefore(this.head,t):d1(this,t)}push(t){this.tail?this.insertAfter(this.tail,t):d1(this,t)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){for(var t=this.head;t;)yield t.data,t=t.next}remove(t){for(var i=this.head;i;){var n=i.next;t(i)&&this.removeLink(i),i=n}return this}}function d1(t,i){t.length=1,t.head=t.tail=i}function d2(t,i){return t.then(t=>{d6(i,null,t)},t=>{d6(i,t&&t.message?t:Error(t))})}function d6(t,i,n){try{t(i,n)}catch(t){dZ(t=>{throw t},t)}}function d8(t){return"AsyncFunction"===t[Symbol.toStringTag]}let d5=function(t){if("function"!=typeof t)throw Error("expected a function");return d8(t)?function(t){var i;return d8(t)?function(){for(var i=arguments.length,n=Array(i),r=0;r<i;r++)n[r]=arguments[r];let o=n.pop();return d2(t.apply(this,n),o)}:(i=function(i,n){var r;try{r=t.apply(this,i)}catch(t){return n(t)}if(r&&"function"==typeof r.then)return d2(r,n);n(null,r)},function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];var o=n.pop();return i.call(this,n,o)})}(t):t};function d4(t,i,n){if(null==i)i=1;else if(0===i)throw RangeError("Concurrency must not be zero");var r=d5(t),o=0,s=[];let a={error:[],drain:[],saturated:[],unsaturated:[],empty:[]};function d(t,i){return t?i?void(a[t]=a[t].filter(t=>
76t!==i)):a[t]=[]:Object.keys(a).forEach(t=>a[t]=[])}function c(t){for(var i=arguments.length,n=Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];a[t].forEach(t=>t(...n))}var l=!1;function u(t,i,n,r){if(null!=r&&"function"!=typeof r)throw Error("task callback must be a function");function o(t){if(t)return n?a(t):s();for(var i=arguments.length,r=Array(i>1?i-1:0),o=1;o<i;o++)r[o-1]=arguments[o];if(r.length<=1)return s(r[0]);s(r)}f.started=!0;var s,a,d=f._createTaskItem(t,n?o:r||o);if(i?f._tasks.unshift(d):f._tasks.push(d),l||(l=!0,dZ(()=>{l=!1,f.process()})),n||!r)return new Promise((t,i)=>{s=t,a=i})}function h(t){return function(i){o-=1;for(var n=arguments.length,r=Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];for(var d=0,l=t.length;d<l;d++){var u=t[d],h=s.indexOf(u);0===h?s.shift():h>0&&s.splice(h,1),u.callback(i,...r),null!=i&&c("error",i,u.data)}o<=f.concurrency-f.buffer&&c("unsaturated"),f.idle()&&c("drain"),f.process()}}function p(t){return!(0!==t.length||!f.idle()||(dZ(()=>c("drain")),0))}let m=t=>i=>{if(!i)return new Promise((i,n)=>{!function(t){let r=function(){d(t,r),((t,r)=>{if(t)return n(t);i(r)})(...arguments)};a[t].push(r)}(t)});d(t),function(t,i){a[t].push(i)}(t,i)};var g=!1,f={_tasks:new d0,_createTaskItem:(t,i)=>({data:t,callback:i}),*[Symbol.iterator](){yield*f._tasks[Symbol.iterator]()},concurrency:i,payload:n,buffer:i/4,started:!1,paused:!1,push(t,i){if(Array.isArray(t)){if(p(t))return;return t.map(t=>u(t,!1,!1,i))}return u(t,!1,!1,i)},pushAsync(t,i){if(Array.isArray(t)){if(p(t))return;return t.map(t=>u(t,!1,!0,i))}return u(t,!1,!0,i)},kill(){d(),f._tasks.empty()},unshift(t,i){if(Array.isArray(t)){if(p(t))return;return t.map(t=>u(t,!0,!1,i))}return u(t,!0,!1,i)},unshiftAsync(t,i){if(Array.isArray(t)){if(p(t))return;return t.map(t=>u(t,!0,!0,i))}return u(t,!0,!0,i)},remove(t){f._tasks.remove(t)},process(){if(!g){for(g=!0;!f.paused&&o<f.concurrency&&f._tasks.length;){var t=[],i=[],n=f._tasks.length;f.payload&&(n=Math.min(n,f.payload));for(var a=0;a<n;a++){var d=f._tasks.shift();t.push(d),s.push(d),i.push(d.data)}o+=1,0===f._tasks.length&&c("empty"),o===f.concurrency&&c("saturated"),r(i,dW(h(t)))}g=!1}},length:()=>f._tasks.length,running:()=>o,workersList:()=>s,idle:()=>f._tasks.length+o===0,pause(){f.paused=!0},resume(){!1!==f.paused&&(f.paused=!1,dZ(f.process))}};return Object.defineProperties(f,{saturated:{writable:!1,value:m("saturated")},unsaturated:{writable:!1,value:m("unsaturated")},empty:{writable:!1,value:m("empty")},drain:{writable:!1,value:m("drain")},error:{writable:!1,value:m("error")}}),f}let d9=(0,m.getLogger)("utils:AsyncQueue");class d7 extends Error{constructor(t){super(t),this.name="ClearedQueueError"}}class d3{constructor(){var t;this._queue=(t=d5(this._processQueueTasks.bind(this)),d4((i,n)=>{t(i[0],n)},1,1)),this._stopped=!1,this._taskCallbacks=new Map}_processQueueTasks(t,i){try{t(i)}catch(t){d9.error(`Task failed: ${null==t?void 0:t.stack}`),i(t)}finally{this._taskCallbacks.delete(t)}}clear(){for(let t of this._taskCallbacks.values())try{null==t||t(new d7("The queue has been cleared"))}catch(t){d9.error("Error in callback while clearing the queue:",t)}this._queue.kill()}pause(){this._queue.pause()}push(t,i){this._stopped?i&&i(Error("The queue has been stopped")):(this._taskCallbacks.set(t,i),this._queue.push(t,i))}resume(){this._queue.resume()}shutdown(){this._stopped=!0}}let ce=function(t){return t.ACTIVE="active",t.ENDED="ended",t.PENDING="pending",t}({});ce.PENDING,ce.ACTIVE,ce.ENDED;let ct=(0,m.getLogger)("xmpp:JingleSession");class ci extends rI{constructor(t,i,n,r,o,s,a){super(),this.sid=t,this.localJid=i,this.remoteJid=n,this.connection=r,this.mediaConstraints=o,this.pcConfig=s,this.isInitiator=a,this.usedrip=!0,this.dripContainer=[],this.room=null,this._signalingLayer=null,this.state=null,this.rtc=null}get initiatorJid(){return this.isInitiator?this.localJid:this.remoteJid}get responderJid(){return this.isInitiator?this.remoteJid:this.localJid}doInitialize(t){}initialize(t,i,n,r){if(null!==this.state){let t=`attempt to initiate on session ${this.sid} 77 in state ${this.state}`;throw ct.error(t),Error(t)}this.room=t,this.rtc=i,this._signalingLayer=n,this.state=ce.PENDING,this.doInitialize(r)}addIceCandidates(t){}getState(){return this.state}addSources(t){}removeSources(t){}terminate(t,i,n){}acceptOffer(t,i,n){}}let cn=function(t){return t.REMOTE_SOURCE_CONSTRAINTS_CHANGED="media_session.REMOTE_SOURCE_CONSTRAINTS_CHANGED",t.VIDEO_CODEC_CHANGED="media_session.VIDEO_CODEC_CHANGED",t}({});function cr(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}
77finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return co(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?co(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 78In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function co(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}let cs=(0,m.getLogger)("xmpp:JingleSessionPC"),ca=1e4;function cd(t){return io.Strophe.getResourceFromJid(t)||t}function cc(t,i,n,r){var o;t.c("source",{name:i.source,ssrc:n,videoType:null==(o=i.videoType)?void 0:o.toLowerCase(),xmlns:sf.SOURCE_ATTRIBUTES}).c("parameter",{name:"msid",value:r}).up().c("ssrc-info",{owner:i.owner,xmlns:"http://jitsi.org/jitmeet"}).up().up()}class cl extends ci{static parseVideoSenders(t){let i=sy(sb(t,':scope>content[name="video"]'),"senders");return"both"===i||"initiator"===i||"responder"===i||"none"===i?i:null}static parseSourceMaxFrameHeight(t){let i,n,r=[],o=sv(t,':scope>content[name="video"]>source-frame-height');return o.length?(o.forEach(t=>{n=t.getAttribute("sourceName"),i=t.getAttribute("maxHeight"),r.push({maxHeight:i,sourceName:n})}),r):null}constructor(t,i,n,r,o,s,a,d){super(t,i,n,r,o,s,d),this._bridgeSessionId=null,this._cachedOldLocalSdp=void 0,this._cachedNewLocalSdp=void 0,this._iceCheckingStartedTimestamp=null,this._gatheringStartedTimestamp=null,this._sourceReceiverConstraints=void 0,this._localSendReceiveVideoActive=!0,this._remoteSendReceiveVideoActive=!0,this._gatheringReported=!1,this.lasticecandidate=!1,this.isP2P=a,this.numRemoteVideoSources=0,this.numRemoteAudioSources=0,this.remoteSourceMaxFrameHeights=void 0,this.modificationQueue=new d3,this.modificationQueue.pause(),this.wasConnected=!1,this.establishmentDuration=void 0,this._xmppListeners=[],this._xmppListeners.push(r.addCancellableListener(di.Events.CONN_STATUS_CHANGED,this.onXmppStatusChanged.bind(this))),this._removeSenderVideoConstraintsChangeListener=void 0}_addOrRemoveRemoteStream(t,i){let n=t?"addRemoteStream":"removeRemoteStream";cs.debug(`${this} Queued ${n} task`),this.modificationQueue.push(r=>{var o;if(null==(o=this.peerconnection.remoteDescription)||!o.sdp){let t=`${n} - received before remoteDescription is set, ignoring!!`;return cs.error(t),void r(t)}cs.debug(`${this} Processing ${n}`);let s=new sT(this.peerconnection.remoteDescription.sdp,this.isP2P),a=this._processSourceMapFromJingle(i,t);for(let i of(a.size||(cs.debug(`${this} ${n} - no sources to ${t?"add":"remove"}`),r(void 0)),cs.debug(`${t?"adding":"removing"} sources=${Array.from(a.keys())}`),s.updateRemoteSources(a,t)))if(this.isP2P){let n=sh.parseMLine(s.media[i].split(`\r 79`)[0]).media,r=this.peerconnection.getDesiredMediaDirection(n,t);(t?[o0.RECVONLY,o0.INACTIVE]:[o0.SENDRECV,o0.SENDONLY]).forEach(t=>{s.media[i]=s.media[i].replace(`a=${t}`,`a=${r}`)}),s.raw=s.session+s.media.join("")}this._renegotiate(s.raw).then(()=>{cs.debug(`${this} ${n} - OK`),r(void 0)},t=>{cs.error(`${this} ${n} failed:`,t),r(t)})})}_addRemoveTrack(t,i){if(!i)return Promise.reject('invalid "track" argument value');let n=t?"removeTrack":"addTrack",r=r=>{let o=this.peerconnection;o?(t?o.removeTrackFromPc(i):o.addTrackToPc(i)).then(t=>{t?this._renegotiate().then(r):r()},r):r(`Error: tried ${n} track with no active peer connection`)};return cs.debug(`${this} Queued ${n} task`),new Promise((t,i)=>{this.modificationQueue.push(r,r=>{if(r){if(r instanceof d7)return cs.debug(`${this} ${n} aborted: session terminated`),void t();cs.error(`${this} ${n} failed`),i(r)}else cs.debug(`${this} ${n} done`),t()})})}_assertNotEnded(){return this.state!==ce.ENDED}_processNewJingleOfferIq(t){let i=new sT("",this.isP2P);return this.webrtcIceTcpDisable&&(i.removeTcpCandidates=!0),this.webrtcIceUdpDisable&&(i.removeUdpCandidates=!0),this.failICE&&(i.failICE=!0),i.fromJingle(t),this._processSourceMapFromJingle(sv(t,":scope>content")),i}_processSourceMapFromJingle(t){let i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=new Map;for(let o of Array.isArray(t)?t:[t])for(let t of sv(o,":scope>description").filter(t=>sS(t,":scope>source"))){let o=sy(t,"media");if(o===nx.AUDIO&&this.options.startSilent)continue;let s=sv(t,":scope>source"),a=[];for(let t of s){var r;let s=sy(t,"ssrc"),d=sy(t,"name"),c=sy(sb(t,':scope>parameter[name="msid"]'),"value"),l=sy(t,"videoType");l===rw.DESKTOP_HIGH_FPS&&(l=rw.DESKTOP),n.has(d)?null==(r=n.get(d).ssrcList)||r.push(s):n.set(d,{groups:[],mediaType:o,msid:c,ssrcList:[s],videoType:l});let u=sy(sb(t,':scope>ssrc-info[*|xmlns="http://jitsi.org/jitmeet"]'),"owner");u&&i?this._signalingLayer.setSSRCOwner(Number(s),cd(u),d):i?this._signalingLayer.setSSRCOwner(Number(s),io.Strophe.getResourceFromJid(this.remoteJid),d):a.push(Number(s))}a.length&&this._signalingLayer.removeSSRCOwners(a),sv(t,":scope>ssrc-group").forEach(t=>{let i=sy(t,"semantics"),r=[];for(let s of(sv(t,":scope>source").forEach(t=>{r.push(sy(t,"ssrc"))}),n)){var o=cr(s,2);
79let t=o[0];ir(o[1].ssrcList.slice().sort(),r.slice().sort())&&n.get(t).groups.push({semantics:i,ssrcs:r})}})}return n.size&&this.peerconnection.updateRemoteSources(n,i),n}async _renegotiate(t){if("closed"===this.peerconnection.signalingState)throw Error("Attempted to renegotiate in state closed");let i=t||this.peerconnection.remoteDescription.sdp;if(!i)throw Error(`Cannot renegotiate without remote description, state=${this.state}`);let n={sdp:i,type:"offer"},r=this.peerconnection.localDescription.sdp;cs.debug(`${this} Renegotiate: setting remote description`);try{await this.peerconnection.setRemoteDescription(n),cs.debug(`${this} Renegotiate: creating answer`);let t=await this.peerconnection.createAnswer(this.mediaConstraints);cs.debug(`${this} Renegotiate: setting local description`),await this.peerconnection.setLocalDescription(t),r&&this.notifyMySSRCUpdate(new sT(r),new sT(this.peerconnection.localDescription.sdp))}catch(t){throw cs.error(`${this} Renegotiate failed:`,t),t}}_sendContentModify(){let t=this._localSendReceiveVideoActive?"both":"none",i=(0,io.$iq)({to:this.remoteJid,type:"set"}).c("jingle",{action:"content-modify",initiator:this.initiatorJid,sid:this.sid,xmlns:"urn:xmpp:jingle:1"}).c("content",{name:nx.VIDEO,senders:t});void 0!==this._sourceReceiverConstraints&&this._sourceReceiverConstraints.forEach((t,n)=>{i.c("source-frame-height",{xmlns:"http://jitsi.org/jitmeet/video"}).attrs({maxHeight:t,sourceName:n}),i.up(),cs.info(`${this} sending content-modify for source-name: ${n}, maxHeight: ${t}`)}),cs.debug(i.tree()),this.connection.sendIQ(i,null,this.newJingleErrorHandler(),ca)}_sendIceCandidate(t){let i=new sT(this.peerconnection.localDescription.sdp);if(null!=t&&t.candidate.length&&!this.lasticecandidate){let n=sh.iceparams(i.media[t.sdpMLineIndex],i.session),r=sh.candidateToJingle(t.candidate);if(!n||!r)return void cs.error("failed to get ice && jcand");n.xmlns=sf.ICE_UDP_TRANSPORT,this.usedrip?(0===this.dripContainer.length&&setTimeout(()=>{0!==this.dripContainer.length&&(this._sendIceCandidates(this.dripContainer),this.dripContainer=[])},150),this.dripContainer.push(t)):this._sendIceCandidates([t])}else cs.debug(`${this} _sendIceCandidate: last candidate`),this.lasticecandidate=!0}_sendIceCandidates(t){if(!this._assertNotEnded())return;cs.debug(`${this} _sendIceCandidates count: ${null==t?void 0:t.length}`);let i=(0,io.$iq)({to:this.remoteJid,type:"set"}).c("jingle",{action:"transport-info",initiator:this.initiatorJid,sid:this.sid,xmlns:"urn:xmpp:jingle:1"}),n=new sT(this.peerconnection.localDescription.sdp);for(let r=0;r<n.media.length;r++){let o=t.filter(t=>t.sdpMLineIndex===r),s=sh.parseMLine(n.media[r].split(`\r 80`)[0]);if(o.length>0){let t=sh.iceparams(n.media[r],n.session);t.xmlns=sf.ICE_UDP_TRANSPORT,i.c("content",{creator:this.initiatorJid===this.localJid?"initiator":"responder",name:o[0].sdpMid?o[0].sdpMid:s.media}).c("transport",t);for(let t=0;t<o.length;t++){let n=sh.candidateToJingle(o[t].candidate);this.failICE&&(n.ip="1.1.1.1"),i.c("candidate",n).up()}let a=sh.findLine(n.media[r],"a=fingerprint:",n.session);if(a){let t=sh.parseFingerprint(a);t.required=!0,i.c("fingerprint",{xmlns:"urn:xmpp:jingle:apps:dtls:0"}).t(t.fingerprint),delete t.fingerprint,i.attrs(t),i.up()}i.up(),i.up()}}this.connection.sendIQ(i,null,this.newJingleErrorHandler(),ca)}_sendSessionAccept(t,i){let n=new sT(this.peerconnection.localDescription.sdp,this.isP2P),r=(0,io.$iq)({to:this.remoteJid,type:"set"}).c("jingle",{action:"session-accept",initiator:this.initiatorJid,responder:this.responderJid,sid:this.sid,xmlns:"urn:xmpp:jingle:1"});this.webrtcIceTcpDisable&&(n.removeTcpCandidates=!0),this.webrtcIceUdpDisable&&(n.removeUdpCandidates=!0),this.failICE&&(n.failICE=!0),"number"==typeof this.options.channelLastN&&this.options.channelLastN>=0&&(n.initialLastN=this.options.channelLastN),n.toJingle(r,this.initiatorJid===this.localJid?"initiator":"responder"),cs.info(`${this} Sending session-accept`),cs.debug(r.tree()),this.connection.sendIQ(r,t,this.newJingleErrorHandler(t=>{i(t),this.room.eventEmitter.emit(nG.SESSION_ACCEPT_TIMEOUT,this)}),ca)}_sendSessionInitiate(t){let i=(0,io.$iq)({to:this.remoteJid,type:"set"}).c("jingle",{action:"session-initiate",initiator:this.initiatorJid,sid:this.sid,xmlns:"urn:xmpp:jingle:1"});new sT(t,this.isP2P).toJingle(i,this.isInitiator?"initiator":"responder"),i=i.tree(),cs.debug(`${this} Session-initiate: `,i),this.connection.sendIQ(i,()=>{cs.info(`${this} Got RESULT for "session-initiate"`)},t=>{var i;dr(t,{isP2P:this.isP2P,operation:"session-initiate",remoteJid:this.remoteJid,roomJid:null==(i=this.room)?void 0:i.roomjid,session:this.toString(),sid:this.sid,userJid:this.connection.jid})},ca)}newJingleErrorHandler(t){return i=>{var n;let r={code:void 0,msg:void 0,reason:void 0,session:void 0};if(i instanceof Element){let t=sb(i,"error");
80if(t){r.code=sy(t,"code");let i=t.children;i.length&&(r.reason=i[0].tagName)}}i||(r.reason="timeout"),this.state===ce.ENDED&&"item-not-found"===(null==r?void 0:r.reason)||(null==t||t(r),dr(i,{isP2P:this.isP2P,operation:"Jingle IQ",remoteJid:this.remoteJid,roomJid:null==(n=this.room)?void 0:n.roomjid,session:this.toString(),sid:this.sid,state:this.state,userJid:this.connection.jid}))}}notifyMySSRCUpdate(t,i){if(this.state!==ce.ACTIVE)return void cs.warn(`${this} Skipping SSRC update in '${this.state} ' state.`);if(!this.connection.connected)return this._cachedOldLocalSdp||(this._cachedOldLocalSdp=t),this._cachedNewLocalSdp=i,void cs.warn(`${this} Not sending SSRC update while the signaling is disconnected`);this._cachedOldLocalSdp=void 0,this._cachedNewLocalSdp=void 0;let n=t=>{let i=t.getNewMedia(),n=[],r=null,o=new Set;return Object.keys(i).forEach(t=>{let s=Object.keys(i[t].ssrcs);r=i[t].mediaType,null!=s&&s.length&&(n=n.concat(s),s.forEach(n=>{let r=sh.parseSourceNameLine(i[t].ssrcs[n].lines);r&&o.add(r)}))}),{mediaType:r,sourceNames:Array.from(o),ssrcs:n}},r=new dK(i,t,this.isP2P),o=(0,io.$iq)({to:this.remoteJid,type:"set"}).c("jingle",{action:"source-remove",initiator:this.initiatorJid,sid:this.sid,xmlns:"urn:xmpp:jingle:1"});r.toJingle(o);let s={},a=n(r);if(a.ssrcs.length){if(this.isP2P)return cs.warn(`${this} Unexpected source-remove on P2P for ${a.mediaType} ssrcs=${a.ssrcs} - terminating P2P session`),void this.room.eventEmitter.emit(nG.P2P_TERMINATION_REQUIRED,this);cs.info(`${this} Sending source-remove for ${a.mediaType} ssrcs=${a.ssrcs}`),this.connection.sendIQ(o,()=>{this.room.eventEmitter.emit(nG.SOURCE_REMOVE,this,s)},this.newJingleErrorHandler(t=>{this.room.eventEmitter.emit(nG.SOURCE_REMOVE_ERROR,this,t,s)}),ca)}r=new dK(t,i,this.isP2P);let d=(0,io.$iq)({to:this.remoteJid,type:"set"}).c("jingle",{action:"source-add",initiator:this.initiatorJid,sid:this.sid,xmlns:"urn:xmpp:jingle:1"});r.toJingle(d);let c=n(r);c.ssrcs.length&&(cs.info(`${this} Sending source-add for ${c.mediaType} ssrcs=${c.ssrcs}`),this.connection.sendIQ(d,()=>{this.room.eventEmitter.emit(nG.SOURCE_ADD,this,s)},this.newJingleErrorHandler(t=>{this.room.eventEmitter.emit(nG.SOURCE_ADD_ERROR,this,t,c.mediaType,s,c.sourceNames)}),ca))}onXmppStatusChanged(t){t===di.Status.CONNECTED&&this._cachedOldLocalSdp&&(cs.info(`${this}
80 Sending SSRC update on reconnect`),this.notifyMySSRCUpdate(this._cachedOldLocalSdp,this._cachedNewLocalSdp))}setOfferAnswerCycle(t,i,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];cs.debug(`${this} Executing setOfferAnswerCycle task`);let o=[],s=r.filter(t=>t.getType()===nx.AUDIO),a=r.filter(t=>t.getType()===nx.VIDEO),d=r;for(let t of(a.length>1&&(d=[...s,a[0]]),d))o.push(this.peerconnection.addTrack(t,this.isInitiator));let c=this._processNewJingleOfferIq(t),l=sy(sb(t,':scope>bridge-session[*|xmlns="http://jitsi.org/protocol/focus"]'),"id");l!==this._bridgeSessionId&&(this._bridgeSessionId=l),Promise.all(o).then(()=>this._renegotiate(c.raw)).then(()=>{this.peerconnection.processLocalSdpForTransceiverInfo(d),this.state===ce.PENDING&&(this.state=ce.ACTIVE,this.isP2P&&(!this._localSendReceiveVideoActive||this._sourceReceiverConstraints)&&this._sendContentModify())}).then(()=>{cs.debug(`${this} setOfferAnswerCycle task done`),i()}).catch(t=>{cs.error(`${this} setOfferAnswerCycle task failed: ${t}`),n(t)})}acceptOffer(t,i,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];this.setOfferAnswerCycle(t,()=>{this._sendSessionAccept(()=>{cs.debug(`${this} Resuming the modification queue after session is established!`),this.modificationQueue.resume(),i(),this.room.eventEmitter.emit(nG.SESSION_ACCEPT,this);let t=r.filter(t=>t.getType()===nx.VIDEO);t.length&&t.splice(0,1),t.length&&this.addTracks(t)},t=>{n(t),this.room.eventEmitter.emit(nG.SESSION_ACCEPT_ERROR,this,t)})},n,r)}addIceCandidates(t){var i;if("closed"===this.peerconnection.signalingState)return void cs.warn(`${this} Ignored add ICE candidate when in closed state`);let n=[];sv(t,":scope>content>transport>candidate").forEach(t=>{let i=sh.candidateFromJingle(t),r=new RTCIceCandidate({candidate:i=i.replace(`\r 81`,"").replace("a=",""),sdpMLineIndex:0,sdpMid:""});n.push(r)}),n.length?(cs.debug(`${this} Queued add (${n.length}) ICE candidates task`),this.modificationQueue.push(t=>{for(let t of n)this.peerconnection.addIceCandidate(t).then(()=>cs.debug(`${this} addIceCandidate ok!`),t=>cs.error(`${this} addIceCandidate failed!`,t));t(),cs.debug(`${this} ICE candidates task finished`)})):cs.error(`${this} No ICE candidates to add ?`,null==(i=t[0])?void 0:i.outerHTML)}addRemoteStream(t){this._addOrRemoveRemoteStream(!0,t)}addTracks(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;null!=t&&t.length||Promise.reject(Error("No tracks passed"));let i=[],n=n=>{let r=new sT(this.peerconnection.remoteDescription.sdp,this.isP2P),o=this.peerconnection.peerconnection.getTransceivers().find(t=>t.receiver.track.kind===nx.VIDEO&&t.direction===o0.RECVONLY&&t.currentDirection===o0.RECVONLY);for(let i of t)this.isP2P&&o||r.addMlineForNewSource(i.getType());this._renegotiate(r.raw).then(()=>{for(let n of t)i.push(this.peerconnection.replaceTrack(null,n));return Promise.all(i)}).then(()=>this._renegotiate()).then(()=>n(),t=>n(t))};return new Promise((t,i)=>{cs.debug(`${this} Queued renegotiation after addTrack`),this.modificationQueue.push(n,n=>{if(n){if(n instanceof d7)return cs.debug(`${this} renegotiation after addTrack aborted: session terminated`),void t();cs.error(`${this} renegotiation after addTrack error`,n),i(n)}else cs.debug(`${this} renegotiation after addTrack executed - OK`),t()})})}addTrackToPc(t){return this._addRemoveTrack(!1,t).then(async()=>{t.isVideoTrack()&&await this.peerconnection.configureVideoSenderEncodings(t)})}close(){this.state=ce.ENDED,this.establishmentDuration=void 0,this.peerconnection&&(this.peerconnection.onicecandidate=null,this.peerconnection.oniceconnectionstatechange=null,this.peerconnection.onnegotiationneeded=null,this.peerconnection.onsignalingstatechange=null),cs.debug(`${this} Clearing modificationQueue`),this.modificationQueue.clear(),cs.debug(`${this} Queued PC close task`),this.modificationQueue.push(t=>{this.peerconnection&&this.peerconnection.close(),t(),cs.debug(`${this} PC close task done!`)}),cs.debug(`${this} Shutdown modificationQueue!`),this.modificationQueue.shutdown()}doInitialize(t){var i,n,r,o;this.failICE=!!(null==(i=t.testing)?void 0:i.failICE),this.lasticecandidate=!1,this.options=t,this.isReconnect=!1,this.wasstable=!1,this.webrtcIceUdpDisable=!!t.webrtcIceUdpDisable,this.webrtcIceTcpDisable=!!t.webrtcIceTcpDisable;let s={audioQuality:t.audioQuality,capScreenshareBitrate:void 0,codecSett
81ings:t.codecSettings,disableRtx:t.disableRtx,disableSimulcast:!!this.isP2P||t.disableSimulcast,enableInsertableStreams:t.enableInsertableStreams,forceTurnRelay:t.forceTurnRelay,maxstats:void 0,startSilent:void 0,usesCodecSelectionAPI:void 0,videoQuality:void 0};t.gatherStats&&(s.maxstats=300),s.usesCodecSelectionAPI=this.usesCodecSelectionAPI=nf.supportsCodecSelectionAPI()&&(null==(n=null==(r=t.testing)?void 0:r.enableCodecSelectionAPI)||n)&&!this.isP2P,t.videoQuality&&(s.videoQuality=Object.fromEntries(Object.entries(t.videoQuality).map(t=>(t[0]=t[0].toLowerCase(),t)))),this.isP2P||(s.capScreenshareBitrate=!((null==(o=t.desktopSharingFrameRate)?void 0:o.max)>5)),t.startSilent&&(s.startSilent=!0),this.peerconnection=this.rtc.createPeerConnection(this._signalingLayer,this.pcConfig,this.isP2P,s),this.peerconnection.onicecandidate=t=>{if(!t)return;let i=t.candidate,n=window.performance.now();if(i){null===this._gatheringStartedTimestamp&&(this._gatheringStartedTimestamp=n);let t=i.protocol;if("string"==typeof t){if("tcp"===(t=t.toLowerCase())||"ssltcp"===t){if(this.webrtcIceTcpDisable)return}else if("udp"===t&&this.webrtcIceUdpDisable)return}}else this._gatheringReported||(n$.sendAnalytics(na.ICE_DURATION,{initiator:this.isInitiator,p2p:this.isP2P,phase:"gathering",value:n-this._gatheringStartedTimestamp}),this._gatheringReported=!0);this.isP2P&&this._sendIceCandidate(i)},this.peerconnection.onsignalingstatechange=()=>{"stable"===this.peerconnection.signalingState?this.wasstable=!0:"closed"!==this.peerconnection.signalingState&&"closed"!==this.peerconnection.connectionState||this.room.eventEmitter.emit(nG.SUSPEND_DETECTED,this)},this.peerconnection.oniceconnectionstatechange=()=>{let t=window.performance.now(),i=!1;switch(this.isP2P||(this.room.connectionTimes[`ice.state.${this.peerconnection.iceConnectionState}`]=t),cs.info(`(TIME) ICE ${this.peerconnection.iceConnectionState} ${this.isP2P?"P2P":"JVB"}: `,t),n$.sendAnalytics(na.ICE_STATE_CHANGED,{p2p:this.isP2P,reconnect:this.isReconnect,signaling_state:this.peerconnection.signalingState,state:this.peerconnection.iceConnectionState,value:t}),this.room.eventEmitter.emit(nG.ICE_CONNECTION_STATE_CHANGED,this,this.peerconnection.iceConnectionState),this.peerconnection.iceConnectionState){case"checking":this._iceCheckingStartedTimestamp=t;break;case"connected":case"completed":if("stable"===this.peerconnection.signalingState&&(i=!0,this.room.eventEmitter.emit(nG.CONNECTION_RESTORED,this)),!this.wasConnected&&(this.wasstable||i||this.isInitiator&&(nf.isChromiumBased()||nf.isReactNative()))){n$.sendAnalytics(na.ICE_DURATION,{initiator:this.isInitiator,p2p:this.isP2P,phase:"checking",value:t-this._iceCheckingStartedTimestamp});let i=Math.min(this._iceCheckingStartedTimestamp,this._gatheringStartedTimestamp);this.establishmentDuration=t-i,n$.sendAnalytics(na.ICE_DURATION,{initiator:this.isInitiator,p2p:this.isP2P,phase:"establishment",value:this.establishmentDuration}),this.wasConnected=!0,this.room.eventEmitter.emit(nG.CONNECTION_ESTABLISHED,this)}this.isReconnect=!1;break;case"disconnected":this.isReconnect=!0,this.wasstable&&this.room.eventEmitter.emit(nG.CONNECTION_INTERRUPTED,this);break;case"failed":this.room.eventEmitter.emit(nG.CONNECTION_ICE_FAILED,this)}},this.peerconnection.onconnectionstatechange=()=>{let t=this.peerconnection.iceConnectionState;cs.info(`(TIME) ${this.isP2P?"P2P":"JVB"} PC state is now ${this.peerconnection.connectionState} (ICE state ${this.peerconnection.iceConnectionState}): `,window.performance.now()),"failed"===this.peerconnection.connectionState&&"disconnected"===t&&this.room.eventEmitter.emit(nG.CONNECTION_ICE_FAILED,this)},this.peerconnection.onnegotiationneeded=()=>{let t=this.peerconnection.signalingState,i=this.peerconnection.remoteDescription;if(!this.isP2P&&"stable"===t&&i&&"string"==typeof i.sdp){cs.info(`${this} onnegotiationneeded fired on ${this.peerconnection}`);let t=async t=>{try{await this._renegotiate(),await this.peerconnection.configureAudioSenderEncodings(),t()}catch(i){t(i)}};this.modificationQueue.push(t,t=>{t?cs.error(`${this} onnegotiationneeded error`,t):cs.debug(`${this} onnegotiationneeded executed - OK`)})}}}getIceConnectionState(){return this.peerconnection.getConnectionState()}getRemoteSourcesRecvMaxFrameHeight(){if(this.isP2P)return this.remoteSourceMaxFrameHeights}async invite(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!this.isInitiator)throw Error("Trying to invite from the responder session");cs.debug(`${this} Executing invite task`);let i=[];for(let n of t)i.push(this.peerconnection.addTrack(n,this.isInitiator));try{await Promise.all(i);let n=await this.peerconnection.createOffer(this.mediaConstraints);await this.peerconnection.setLocalDescription(n),this.peerconnection.processLocalSdpForTransceiverInfo(t),this._sendSessionInitiate(this.peerconnection.localDescription.sdp),cs.debug(`${this} invite executed - OK`)}catch(t){throw cs.error(`${this} invite error`,t),t}}modifyContents(t){let i=cl.parseVideoSenders(t),n=cl.parseSourceMaxFrameHeight(t);if(n&&(this.remoteSourceMaxFrameHeights=n,this.eventEmitter.emit(cn.REMOTE_SOURCE_CONSTRAINTS_CHANGED,this,n)),null===i)return void cs.error(`${this} - failed to parse video "senders" attribute in "content-modify" action`);if(!this._assertNotEnded())return;let r="both"===i||"initiator"===i&&this.isInitiator||"responder"===i&&!this.isInitiator;
81r!==this._remoteSendReceiveVideoActive&&(cs.debug(`${this} new remote video active: ${r}`),this._remoteSendReceiveVideoActive=r,this.peerconnection.setVideoTransferActive(this._localSendReceiveVideoActive&&this._remoteSendReceiveVideoActive))}onTerminated(t,i){cs.info(`${this} Session terminated`,t,i),this._xmppListeners.forEach(t=>t()),this._xmppListeners=[],this._removeSenderVideoConstraintsChangeListener&&this._removeSenderVideoConstraintsChangeListener(),nR.isSsrcRewritingSupported()&&this.peerconnection&&this.peerconnection.getRemoteTracks().forEach(t=>{this.room.eventEmitter.emit(tT.TRACK_REMOVED,t)}),this.close()}processSourceMap(t,i){if(!nR.isSsrcRewritingSupported()||i===nx.AUDIO&&this.options.startSilent)return;let n=[];for(let r of t.mappedSources){let t=r.owner,o=r.source,s=r.ssrc;if(this.peerconnection.addRemoteSsrc(s)){n.push(r),cs.debug(`New SSRC signaled ${s}: owner=${t}, source-name=${o}`);let i=this.peerconnection.remoteSources.get(o);if(i){this._signalingLayer.removeSSRCOwners([i]);let t=this.peerconnection.getTrackBySSRC(i);t&&this.room.eventEmitter.emit(is.TRACK_OWNER_SET,t)}}else{let n=this.peerconnection.getTrackBySSRC(s);if(!n||n.getParticipantId()===t&&n.getSourceName()===o){n||cs.warn(`Remote track for SSRC=${s} hasn't been created yet,not processing the source map`);continue}cs.debug(`Existing SSRC re-mapped ${s}: new owner=${t}, source-name=${o}`),this._signalingLayer.setSSRCOwner(s,t,o);let r=n.getSourceName(),a=this.peerconnection.getRemoteSourceInfoBySourceName(r);a&&(this.peerconnection.updateRemoteSources(new Map([[r,a]]),!1),this.peerconnection.updateRemoteSources(new Map([[o,a]]),!0));let d=this._signalingLayer.getPeerMediaInfo(t,i,o),c=d.muted,l=d.videoType;void 0!==c&&this.peerconnection._sourceMutedChanged(o,c),this.room.eventEmitter.emit(is.TRACK_OWNER_SET,n,t,o,l)}}if(n.length){let t=(0,io.$build)("content",{name:i,xmlns:"urn:xmpp:jingle:1"}).c("description",{media:i,xmlns:sf.RTP_MEDIA});for(let r of n){let n,o=r.rtx,s=r.ssrc,a=r.source;if(i===nx.VIDEO){let i=++this.numRemoteVideoSources;n=`remote-video-${i} remote-video-${i}`,"-1"!==o&&(cc(t,r,o,n),t.c("ssrc-group",{semantics:o9.FID,xmlns:sf.SOURCE_ATTRIBUTES}).c("source",{ssrc:s,xmlns:sf.SOURCE_ATTRIBUTES}).up().c("source",{ssrc:o,xmlns:sf.SOURCE_ATTRIBUTES}).up().up())}else{let t=++this.numRemoteAudioSources;n=`remote-audio-${t} remote-audio-${t}`}cc(t,r,s,n),this.peerconnection.remoteSources.set(a,s)}t=t.up(),this._addOrRemoveRemoteStream(!0,t.node)}}removeRemoteStream(t){this._addOrRemoveRemoteStream(!1,t)}removeRemoteStreamsOnLeave(t){cs.debug(`${this} Queued removeRemoteStreamsOnLeave task for participant ${t}`),this.modificationQueue.push(i=>{let n=this.peerconnection.getRemoteSourceInfoByParticipant(t);if(n.size){cs.debug(`${this} Removing SSRCs for user ${t}, sources=${Array.from(n.keys())}`);let r=new sT(this.peerconnection.remoteDescription.sdp,this.isP2P);r.updateRemoteSources(n,!1),this.peerconnection.updateRemoteSources(n,!1),this._renegotiate(r.raw).then(()=>i(),t=>i(t))}else i()},t=>{t?cs.error(`${this} removeRemoteStreamsOnLeave error:`,t):cs.info(`${this} removeRemoteStreamsOnLeave done!`)})}removeTrackFromPc(t){return this._addRemoveTrack(!0,t)}replaceTrack(t,i){let n=n=>{cs.debug(`${this} replaceTrack worker started. oldTrack = ${t}, newTrack = ${i}`),this.peerconnection.replaceTrack(t,i).then(n=>{let r=Promise.resolve();return cs.debug(`${this} TPC.replaceTrack finished. shouldRenegotiate = ${n}, JingleSessionState = ${this.state}`),n&&(t||i)&&this.state===ce.ACTIVE&&(r=this._renegotiate()),r.then(()=>{t&&i&&t.isVideoTrack()&&i.setSourceName(t.getSourceName())})}).then(()=>n(),t=>n(t))};return new Promise((r,o)=>{cs.debug(`${this} Queued replaceTrack task. Old track = ${t}, new track = ${i}`),this.modificationQueue.push(n,t=>{if(t){if(t instanceof d7)return cs.debug("Replace track aborted: session terminated"),void r();cs.error(`${this} Replace track error:`,t),o(t)}else cs.info(`${this} Replace track done!`),r()})})}async setAnswer(t){if(!this.isInitiator)throw Error("Trying to set an answer on the responder session");cs.debug(`${this} Executing setAnswer task`);let i=this._processNewJingleOfferIq(t),n=new sT(this.peerconnection.localDescription.sdp),r
81={sdp:i.raw,type:"answer"};try{if(await this.peerconnection.setRemoteDescription(r),this.state===ce.PENDING){this.state=ce.ACTIVE,cs.debug(`${this} Resuming the modification queue after session is established!`),this.modificationQueue.resume();let t=new sT(this.peerconnection.localDescription.sdp);this._sendContentModify(),this.notifyMySSRCUpdate(n,t)}cs.debug(`${this} setAnswer task done`)}catch(t){throw cs.error(`${this} setAnswer task failed: ${t}`),t}}setMediaTransferActive(t){return this.peerconnection.audioTransferActive!==t||this.peerconnection.videoTransferActive!==t?this.peerconnection.setMediaTransferActive(t).then(async()=>{this.peerconnection.audioTransferActive=t,this.peerconnection.videoTransferActive=t;let i=[];i.push(this.peerconnection.configureVideoSenderEncodings()),i.push(this.peerconnection.configureAudioSenderEncodings()),await Promise.allSettled(i)}):Promise.resolve()}setP2pVideoTransferActive(t){return this.peerconnection?this._localSendReceiveVideoActive!==t?(this._localSendReceiveVideoActive=t,this.isP2P&&this.state===ce.ACTIVE&&this._sendContentModify(),this.peerconnection.setVideoTransferActive(this._localSendReceiveVideoActive&&this._remoteSendReceiveVideoActive)):Promise.resolve():Promise.reject('Can not modify video transfer active state, before "initialize" is called')}setReceiverVideoConstraint(t){cs.info(`${this} setReceiverVideoConstraint - constraints: ${JSON.stringify(t)}`),this._sourceReceiverConstraints=t,this.isP2P&&this.state===ce.ACTIVE&&this._sendContentModify()}setSenderVideoConstraint(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(this._assertNotEnded()){cs.info(`${this} setSenderVideoConstraint: ${t}, sourceName: ${i}`);let n=i?this.rtc.getLocalVideoTracks().find(t=>t.getSourceName()===i):this.rtc.getLocalVideoTrack();return this.peerconnection.setSenderVideoConstraints(t,n)}return Promise.resolve()}setVideoCodecs(t,i){if(this._assertNotEnded()){if(this.peerconnection.setVideoCodecs(t,i)&&this.eventEmitter.emit(cn.VIDEO_CODEC_CHANGED),this.usesCodecSelectionAPI&&t[0]!==oZ.H264)return;let n=this.peerconnection.getConfiguredVideoCodecs();if(t.every((t,i)=>t===n[i]))return;this.eventEmitter.emit(cn.VIDEO_CODEC_CHANGED),n$.sendAnalytics(na.VIDEO_CODEC_CHANGED,{value:t[0],videoType:rw.CAMERA}),cs.info(`${this} setVideoCodecs: codecList=${t}, screenshareCodec=${i}`);let r=async t=>{try{return await this._renegotiate(),await this.peerconnection.configureVideoSenderEncodings(),cs.debug(`${this} setVideoCodecs task is done`),t()}catch(i){return cs.error(`${this} setVideoCodecs task failed: ${i}`),t(i)}};cs.debug(`${this} Queued setVideoCodecs task`),this.modificationQueue.push(r)}}terminate(t,i){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(this.state!==ce.ENDED){if(!n||n.sendSessionTerminate){let r=(0,io.$iq)({to:this.remoteJid,type:"set"}).c("jingle",{action:"session-terminate",initiator:this.initiatorJid,sid:this.sid,xmlns:"urn:xmpp:jingle:1"}).c("reason").c((null==n?void 0:n.reason)||"success").up();null!=n&&n.reasonDescription?r.c("text").t(n.reasonDescription).up().up():r.up(),this._bridgeSessionId&&r.c("bridge-session",{id:this._bridgeSessionId,restart:n&&!0===n.requestRestart,xmlns:"http://jitsi.org/protocol/focus"}).up(),cs.info(`${this} Sending session-terminate`),cs.debug(r.tree()),this.connection.sendIQ(r,t,this.newJingleErrorHandler(i),ca)}else cs.info(`${this} Skipped sending session-terminate`);this.connection.jingle.terminate(this.sid)}}toString(){return`JingleSessionPC[session=${this.isP2P?"P2P":"JVB"},initiator=${this.isInitiator},sid=${this.sid}]`}}let cu=(0,m.getLogger)("xmpp:strophe.jingle");function ch(t,i){let n=i.type,r=i.host,o=i.port,s=i.username,a=i.password,d=i.transport,c={};switch(n){case"stun":c.urls=`stun:${r}`,o&&(c.urls+=`:${o}`),t.push(c);break;case"turn":case"turns":c.urls=`${n}:${r}`,c.username=s,o&&(c.urls+=`:${o}`),d&&"udp"!==d&&(c.urls+=`?transport=${d}`),c.credential=a,t.push(c)}}class cp extends a5{constructor(t,i,n){super(),this.xmpp=t,this.eventEmitter=i,this.sessions={},this.jvbIceConfig=n.jvb,this.p2pIceConfig=n.p2p,this.mediaConstraints={offerToReceiveAudio:!0,offerToReceiveVideo:!0}}init(t){super.init(t),this.connection.addHandler(this.onJingle.bind(this),"urn:xmpp:jingle:1","iq","set",null,null)}onJingle(t){var i,n;let r=sb(t,"jingle"),o=sy(r,"sid"),s=sy(r,"action"),a=sy(t,"from"),d=(0,io.$iq)({id:t.getAttribute("id"),to:a,type:"result"}),c=this.sessions[o];if("session-initiate"!==s){if(!c)return d.attrs({type:"error"}),d.c("error",{type:"cancel"}).c("item-not-found",{xmlns:"urn:ietf:params:xml:ns:xmpp-stanzas"}).up().c("unknown-session",{xmlns:"urn:xmpp:jingle:errors:1"}
81),cu.warn(`invalid session id: ${o}`),cu.debug(t),this.connection.send(d),!0;if(a!==c.remoteJid)return cu.warn("jid mismatch for session id",o,c.remoteJid,t),d.attrs({type:"error"}),d.c("error",{type:"cancel"}).c("item-not-found",{xmlns:"urn:ietf:params:xml:ns:xmpp-stanzas"}).up().c("unknown-session",{xmlns:"urn:xmpp:jingle:errors:1"}),this.connection.send(d),!0}else if(void 0!==c)return d.attrs({type:"error"}),d.c("error",{type:"cancel"}).c("service-unavailable",{xmlns:"urn:ietf:params:xml:ns:xmpp-stanzas"}).up(),cu.warn("duplicate session id",o,t),this.connection.send(d),!0;let l=window.performance.now(),u="focus"!==io.Strophe.getResourceFromJid(a),h=sv(t,"jingle>json-message");if(null!=h&&h.length){let n;cu.info(`Found a JSON-encoded element in ${s}, translating to standard Jingle.`);for(let i=0;i<h.length;i++)n=dq(t,h[i]);if(null!=(i=n)&&i.size){let t=[];for(let i of n.keys())t.push(`${i}:[${n.get(i)}]`);cu.debug(`Received ${s} from ${a} with sources=${t.join(", ")}`)}}switch(s){case"session-initiate":{cu.info("(TIME) received session-initiate: ",l),u&&cu.debug(`Received ${s} from ${a}`);let i=u?this.p2pIceConfig:this.jvbIceConfig;c=new cl(o,t.getAttribute("to"),a,this.connection,this.mediaConstraints,rA(i),u,!1),this.sessions[c.sid]=c,this.eventEmitter.emit(nG.CALL_INCOMING,c,r,l);break}case"session-accept":{let i=[];sv(t,"jingle>content").forEach(t=>{let n=sy(sb(t,"description"),"ssrc");n&&i.push(n)}),cu.debug(`Received ${s} from ${a} with ssrcs=${i}`),this.eventEmitter.emit(nG.CALL_ACCEPTED,c,r);break}case"content-modify":cu.debug(`Received ${s} from ${a}`),c.modifyContents(r);break;case"transport-info":{let i=function(t){let i=sv(t,":scope>candidate"),n=[];return i.forEach(t=>{let i=t.attributes,r=[];for(let t=0;t<i.length;t++){let n=i[t];r.push(`${n.name}: ${n.value}`)}n.push(r.join(" "))}),n}(sb(t,"jingle>content>transport"));cu.debug(`Received ${s} from ${a} for candidates=${i.join(", ")}`),this.eventEmitter.emit(nG.TRANSPORT_INFO,c,r);break}case"session-terminate":{cu.info("terminating...",c.sid);let i=null,r=null,o=sb(t,":scope>jingle>reason");if(o){let s=(null==(n=o.children)?void 0:n.length)>0?o.children[0]:void 0;i=s?s.tagName:null,r=sE(sb(t,":scope>jingle>reason>text"))}cu.debug(`Received ${s} from ${a} disconnect reason=${r}`),this.terminate(c.sid,i,r),this.eventEmitter.emit(nG.CALL_ENDED,c,i,r);break}case"transport-replace":cu.error(`Ignoring ${s} from ${a} as it is not supported by the client.`);break;case"source-add":c.addRemoteStream(sv(t,":scope>jingle>content"));break;case"source-remove":c.removeRemoteStream(sv(t,":scope>jingle>content"));break;default:cu.warn("jingle action not implemented",s),d.attrs({type:"error"}),d.c("error",{type:"cancel"}).c("bad-request",{xmlns:"urn:ietf:params:xml:ns:xmpp-stanzas"}).up()}return this.connection.send(d),!0}newP2PJingleSession(t,i){let n=new cl(i5.randomHexString(12),t,i,this.connection,this.mediaConstraints,this.p2pIceConfig,!0,!0);return this.sessions[n.sid]=n,n}terminate(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;this.sessions.hasOwnProperty(t)&&("ended"!==this.sessions[t].state&&this.sessions[t].onTerminated(i,n),delete this.sessions[t])}getStunAndTurnCredentials(){this.connection.sendIQ((0,io.$iq)({to:this.xmpp.options.hosts.domain,type:"get"}).c("services",{xmlns:"urn:xmpp:extdisco:2"}),t=>this.onReceiveStunAndTurnCredentials(t),t=>{dr(t,{domain:this.xmpp.options.hosts.domain,operation:"get STUN/TURN credentials (extdisco:2)",userJid:this.connection.jid,xmlns:"urn:xmpp:extdisco:2"}),cu.warn("getting turn credentials with extdisco:2 failed, trying extdisco:1"),this.connection.sendIQ((0,io.$iq)({to:this.xmpp.options.hosts.domain,type:"get"}).c("services",{xmlns:"urn:xmpp:extdisco:1"}),t=>this.onReceiveStunAndTurnCredentials(t),t=>{dr(t,{domain:this.xmpp.options.hosts.domain,operation:"get STUN/TURN credentials (extdisco:1)",userJid:this.connection.jid,xmlns:"urn:xmpp:extdisco:1"}),cu.warn("getting turn credentials failed"),cu.warn("is mod_turncredentials or similar installed and configured?")})})}onReceiveStunAndTurnCredentials(t){let i,n=[];
81Array.isArray(null==t?void 0:t.services)?t.services.forEach(t=>ch(n,t)):sv(t,":scope>services>service").forEach(t=>ch(n,{host:sy(t,"host"),password:sy(t,"password"),port:sy(t,"port"),transport:sy(t,"transport"),type:sy(t,"type"),username:sy(t,"username")}));let r=this.xmpp.options,o=r.iceServersOverride;(void 0===o?[]:o).forEach(t=>{let i=t.targetType,r=t.urls,o=t.username,s=t.credential;if(!["turn","turns","stun"].includes(i))return;let a=`${i}:`;void 0===r&&void 0===o&&void 0===s||(null===r&&(n=n.filter(t=>!t.urls.startsWith(a))),n.forEach(t=>{t.urls.startsWith(a)&&(t.urls=null!=r?r:t.urls,null===o?delete t.username:t.username=null!=o?o:t.username,null===s?delete t.credential:t.credential=null!=s?s:t.credential)}))});for(let t=n.length-1;t>0;t--){let i=Math.floor(Math.random()*(t+1)),r=n[t];n[t]=n[i],n[i]=r}return i=r.useTurnUdp?t=>t.urls.startsWith("turn"):t=>t.urls.startsWith("turn")&&t.urls.indexOf("transport=tcp")>=0,this.jvbIceConfig.iceServers=n.filter(i),this.p2pIceConfig.iceServers=n,n.length>0}getLog(){let t={};
81return Object.keys(this.sessions).forEach(i=>{let n=this.sessions[i].peerconnection;n&&n.updateLog&&(t[`jingle_${i}`]={stats:n.stats,updateLog:n.updateLog,url:window.location.href})}),t}}class cm extends a5{constructor(){super(),this.log=[]}init(t){super.init(t),t.rawInput=this.logIncoming.bind(this),t.rawOutput=this.logOutgoing.bind(this)}logIncoming(t){this.log.push([(new Date).getTime(),"incoming",t])}logOutgoing(t){this.log.push([(new Date).getTime(),"outgoing",t])}}let cg=(0,m.getLogger)("xmpp:strophe.rayo"),cf="urn:xmpp:rayo:1";class c_ extends a5{constructor(){var t,i,n;super(...arguments),t=this,n=null,(i=function(t){var i=function(t){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,"string");if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof i?i:i+""}(i="callResource"))in t?Object.defineProperty(t,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[i]=n}init(t){super.init(t),t.addHandler(this.onRayo.bind(this),cf,"iq","set",null,null)}onRayo(t){cg.info("Rayo IQ",t)}dial(t,i,n,r,o){return new Promise((s,a)=>{if(!o)return void a(Error("Internal error!"));let d=(0,io.$iq)({to:o,type:"set"});d.c("dial",{from:i,to:t,xmlns:cf}),d.c("header",{name:"JvbRoomName",value:n}).up(),null!=r&&r.length&&d.c("header",{name:"JvbRoomPassword",value:r}).up(),this.connection.sendIQ(d,t=>{cg.info("Dial result ",t);let i=sy(sb(t,"ref"),"uri");this.callResource=i.substr(5),cg.info(`Received call resource: ${this.callResource}`),s()},r=>{dr(r,{from:i,operation:"dial (Rayo)",roomName:n,to:t,userJid:this.connection.jid}),a(r)})})}hangup(){return new Promise((t,i)=>{if(!this.callResource)return i(Error("No call in progress")),void cg.warn("No call in progress");let n=(0,io.$iq)({to:this.callResource,type:"set"});n.c("hangup",{xmlns:cf}),this.connection.sendIQ(n,i=>{cg.info("Hangup result ",i),this.callResource=null,t()},t=>{dr(t,{callResource:this.callResource,operation:"hangup (Rayo)",userJid:this.connection.jid}),this.callResource=null,i(Error("Hangup error "))})})}}let cv=(0,m.getLogger)("xmpp:strophe.util"),cy=-1,cE=/request id \d+.\d+ got 200/,cS=/request errored, status: (\d+), number of errors: \d+/,cb=(0,m.getLogger)("xmpp:Xmpp"),cC=/<failure.*><not-allowed\/><text>(.*)<\/text><\/failure>/gi,cD=[{urls:"stun:meet-jit-si-turnrelay.jitsi.net:443"}],cT="type",cx="http://jitsi.org/protocol/jigasi",cR="http://jitsi.org/protocol/transcriber",cA="https://jitsi.org/meet/e2ee";class cw extends rI{constructor(t,i){if(super(),t.bosh&&!t.serviceUrl)throw Error('The "bosh" option is no longer supported, please use "serviceUrl" instead');this.connection=null,this._disconnectInProgress=!1,this.connectionTimes={},this.options=t,this.token=i,this.authenticatedUser=!1,this.options.deploymentInfo||(this.options.deploymentInfo={}),this._components=[],this._preComponentsMsgs=[],io.Strophe.log=function(t,i){switch(cv.trace("Strophe",t,i),"string"==typeof i&&-1!==i.indexOf("Request ")&&-1!==i.indexOf("timed out (secondary), restarting")&&(t=io.Strophe.LogLevel.WARN),t){case io.Strophe.LogLevel.DEBUG:-1!==cy&&cE.test(i)&&(cv.debug("Reset lastErrorStatus"),cy=-1);break;case io.Strophe.LogLevel.WARN:cv.warn(`Strophe: ${i}`);let n=cS.exec(i);n&&2===n.length&&(cy=parseInt(n[1],10),cv.debug(`lastErrorStatus set to: ${cy}`));break;case io.Strophe.LogLevel.ERROR:case io.Strophe.LogLevel.FATAL:cv.error(`Strophe: ${i}`,i)}},io.Strophe.getLastErrorStatus=function(){return cy},io.Strophe.getStatusString=function(t){switch(t){case io.Strophe.Status.BINDREQUIRED:return"BINDREQUIRED";case io.Strophe.Status.ERROR:return"ERROR";case io.Strophe.Status.CONNECTING:return"CONNECTING";case io.Strophe.Status.CONNFAIL:return"CONNFAIL";case io.Strophe.Status.AUTHENTICATING:return"AUTHENTICATING";case io.Strophe.Status.AUTHFAIL:return"AUTHFAIL";case io.Strophe.Status.CONNECTED:return"CONNECTED";case io.Strophe.Status.DISCONNECTED:return"DISCONNECTED";case io.Strophe.Status.DISCONNECTING:return"DISCONNECTING";case io.Strophe.Status.ATTACHED:return"ATTACHED";default:return"unknown"}},io.Strophe.addConnectionPlugin("logger",new cm);const n=t.xmppPing||{};n.domain=t.hosts.domain,this.connection=function(t){let i=t.enableWebsocketResume,n=t.serviceUrl,r=void 0===n?"/http-bind":n,o=t.shard,s=t.token,a=t.websocketKeepAlive,d=t.websocketKeepAliveUrl;return s&&(r+=`${-1===r.indexOf("?")?"?":"&"}token=${s}`),new di({enableWebsocketResume:i,serviceUrl:r,shard:o,websocketKeepAlive:a,websocketKeepAliveUrl:d})}({enableWebsocketResume:t.enableWebsocketResume,serviceUrl:t.serviceUrl,shard:t.deploymentInfo.shard,token:i,websocketKeepAlive:t.websocketKeepAlive,websocketKeepAliveUrl:t.websocketKeepAliveUrl,xmppPing:n}),this.moderator=new dd(this),this.connection.on(di.Events.CONN_SHARD_CHANGED,(
81)=>{var t;let i={shard_changed:!0,suspend_time:this.connection.ping.getPingSuspendTime(),time_since_last_success:this.connection.getTimeSinceLastSuccess()};null!=(t=this.options.testing)&&t.enableGracefulReconnect?(cb.debug("Shard changed, attempting graceful reconnect"),this.eventEmitter.emit(nX,aF)):(cb.error("Shard changed, kicking the user off the conference and forcing reload",JSON.stringify(i)),this.eventEmitter.emit(nX,aP,void 0,void 0,i))}),this.connection.on(di.Events.CONN_STATUS_CHANGED,t=>{if(t===di.Status.RESUMING&&this.token){let t=function(t,i){let n;if("string"!=typeof t)throw new aS("Invalid token specified: must be a string");i||(i={});let r=+(!0!==i.header),o=t.split(".")[r];if("string"!=typeof o)throw new aS(`Invalid token specified: missing part #${r+1}`);try{n=function(t){let i=t.replace(/-/g,"+").replace(/_/g,"/");switch(i.length%4){case 0:break;case 2:i+="==";break;case 3:i+="=";break;default:throw Error("base64 string is not of the correct length")}try{return function(t){return decodeURIComponent(atob(t).replace(/(.)/g,(t,i)=>{let n=i.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n="0"+n),"%"+n}))}(i)}catch(t){return atob(i)}}(o)}catch(t){throw new aS(`Invalid token specified: invalid base64 for part #${r+1} (${t.message})`)}try{return JSON.parse(n)}catch(t){throw new aS(`Invalid token specified: invalid json for part #${r+1} (${t.message})`)}}(this.token);(new Date).getTime()>=1e3*t.exp&&(this.connection.cancelResume(),this.eventEmitter.emit(n0))}}
81),this._initStrophePlugins(),this.caps=new az(this.connection,"https://jitsi.org/jitsi-meet"),this.initFeaturesList(),this.connection.addHandler(this._onPrivateMessage.bind(this),null,"message",null,null);const r=(this.options.disableBeforeUnloadHandlers?"":"beforeunload ")+"unload";for(const t of(this._unloadHandler=t=>{let i=this.disconnect(t);i instanceof Promise&&i.catch(()=>{})},this._unloadEventTypes=r.split(" "),this._unloadEventTypes))window.addEventListener(t,this._unloadHandler)}_removeUnloadHandlers(){if(this._unloadHandler){for(let t of this._unloadEventTypes)window.removeEventListener(t,this._unloadHandler);this._unloadHandler=void 0}}initFeaturesList(){this.caps.addFeature(sf.JINGLE),this.caps.addFeature(sf.RTP_MEDIA),this.caps.addFeature(sf.ICE_UDP_TRANSPORT),this.caps.addFeature(sf.DTLS_SRTP),this.caps.addFeature(sf.SCTP_DATA_CHANNEL),this.caps.addFeature(sf.RTP_AUDIO),this.caps.addFeature(sf.RTP_VIDEO),this.caps.addFeature("http://jitsi.org/json-encoded-sources"),!this.options.disableRtx&&nf.supportsRTX()&&this.caps.addFeature("urn:ietf:rfc:4588"),!0===this.options.enableOpusRed&&nf.supportsAudioRed()&&this.caps.addFeature("http://jitsi.org/opus-red"),(void 0===this.options.enableRemb||this.options.enableRemb)&&this.caps.addFeature("http://jitsi.org/remb"),nf.isFirefox()&&nf.isVersionLessThan(115)||void 0!==this.options.enableTcc&&!this.options.enableTcc||this.caps.addFeature("http://jitsi.org/tcc"),this.connection.rayo&&this.caps.addFeature("urn:xmpp:rayo:client:1"),c1.isSupported(this.options)&&this.caps.addFeature(cA,!1,!0),cb.debug("Source-name signaling is enabled"),this.caps.addFeature("http://jitsi.org/source-name"),cb.debug("Receiving multiple video streams is enabled"),this.caps.addFeature("http://jitsi.org/receive-multiple-video-streams"),nR.isSsrcRewritingSupported()&&this.caps.addFeature("http://jitsi.org/ssrc-rewriting-1"),this.caps.addFeature("http://jitsi.org/visitors-1"),this.caps.addFeature("http://jitsi.org/start-muted-room-metadata")}_onPrivateMessage(t){let i=t.getAttribute("from");if(!this._components.includes(i))return this._preComponentsMsgs.push(t),!0;let n=sE(sb(t,':scope>json-message[*|xmlns="http://jitsi.org/jitmeet"]')),r=this.tryParseJSONAndVerify(n);return!r||"object"!=typeof r||("speakerstats"===r[cT]&&r.users?this.eventEmitter.emit(nG.SPEAKER_STATS_RECEIVED,r.users):"av_moderation"===r[cT]?this.eventEmitter.emit(nG.AV_MODERATION_RECEIVED,r):"breakout_rooms"===r[cT]?this.eventEmitter.emit(nG.BREAKOUT_ROOMS_EVENT,r):r[cT]===aK?this.eventEmitter.emit(nG.FILE_SHARING_EVENT,r):"room_metadata"===r[cT]?this.eventEmitter.emit(nG.ROOM_METADATA_EVENT,r):"visitors"===r[cT]?this.eventEmitter.emit(nG.VISITORS_MESSAGE,r):"polls"===r[cT]&&this.eventEmitter.emit(nG.POLLS_EVENT,r),!0)}_maybeSendDeploymentInfoStat(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=[io.Strophe.Status.ERROR,io.Strophe.Status.CONNFAIL,io.Strophe.Status.AUTHFAIL,io.Strophe.Status.DISCONNECTED,io.Strophe.Status.CONNTIMEOUT];if(!(t||i.includes(this.connection.status)&&this.sendDeploymentInfo))return;let n=this.options.deploymentInfo;if(Object.keys(null!=n?n:{}).length>0){let t={id:void 0};for(let i in n)n.hasOwnProperty(i)&&(t[i]=n[i]);n$.analytics.addPermanentProperties({...t}),t.id="deployment_info";let i=JSON.stringify(t);cb.info(i)}this.sendDeploymentInfo=!1;let r=n.region,o=n.shard;(r||o)&&this.eventEmitter.emit(n2,rA({region:r,shard:o}))}_processDiscoInfoIdentities(t,i){t.forEach(t=>{if("av_moderation"===t.type&&(this.avModerationComponentAddress=t.name,this._components.push(this.avModerationComponentAddress)),"end_conference"===t.type&&(this.endConferenceComponentAddress=t.name,this._components.push(this.endConferenceComponentAddress)),"speakerstats"===t.type&&(this.speakerStatsComponentAddress=t.name,this._components.push(this.speakerStatsComponentAddress)),"lobbyrooms"===t.type){this.lobbySupported=!0;let n=t=>{t.forEach(t=>{t.endsWith("#displayname_required")&&this.eventEmitter.emit(n1)})};i?n(i):t.name&&this.caps.getFeaturesAndIdentities(t.name,t.type).then(t=>n(t.features)).catch(t=>cb.warn("Error getting features from lobby.",null==t?void 0:t.message))}if("shard"===t.type&&(this.options.deploymentInfo.shard=this.connection.shard=t.name),"region"===t.type&&(this.options.deploymentInfo.region=this.connection.region=t.name),"release"===t.type&&(this.options.deploymentInfo.backendRelease=t.name),"breakout_rooms"===t.type){this.breakoutRoomsComponentAddress=t.name,this._components.push(this.breakoutRoomsComponentAddress);let n=t=>{this.breakoutRoomsFeatures={},t.forEach(t=>{t.endsWith("#rename")&&(this.breakoutRoomsFeatures.rename=!0)})};i?n(i):t.name&&this.caps.getFeaturesAndIdentities(t.name,t.type).then(t=>n(t.features)).catch(t=>cb.warn("Error getting features for breakout rooms.",null==t?void 0:t.message))}t.type===aK&&(this.fileSharingComponentAddress=t.name,this._components.push(this.fileSharingComponentAddress)),"room_metadata"===t.type&&(this.sendDiscoInfo=!1,this.roomMetadataComponentAddress=t.name,this._components.push(this.roomMetadataComponentAddress)),"visitors"===t.type&&this._components.push(t.name),"polls"===t.type&&(this.pollsComponentAddress=t.name,this._components.push(this.pollsComponentAddress))}),this._maybeSendDeploymentInfoStat(!0),this._components.length>
810&&this._preComponentsMsgs.forEach(this._onPrivateMessage.bind(this)),this._preComponentsMsgs=[]}_parseConnectionFailedMessage(t){if(!t)return null;cC.lastIndex=0;let i=cC.exec(t);return i?i[1]:null}_connect(t,i){var n;this._resetState(),this.sendDiscoInfo=!0,this.sendDeploymentInfo=!0,null!=(n=this.connection._stropheConn)&&n._addSysHandler?this._sysMessageHandler=this.connection._stropheConn._addSysHandler(this._onSystemMessage.bind(this),null,"message"):cb.warn("Cannot attach strophe system handler, jiconop cannot operate"),this.connection.connect(t,i,this.connectionHandler.bind(this,{jid:t,password:i}))}_onSystemMessage(t){if(!sS(t,":scope>services")&&!sS(t,":scope>query"))return;let i=aG(t),n=i.features,r=i.identities;this._processDiscoInfoIdentities(r,n),(r.size>0||n.size>0)&&(this.connection._stropheConn.deleteHandler(this._sysMessageHandler),this._sysMessageHandler=null)}_cleanupXmppConnection(t){if(this.connection.isUsingWebSocket||this.connection.flush(),!this.connection.isUsingWebSocket&&null!=t){let i=t.type;if(("beforeunload"===i||"unload"===i)&&(this.connection.options.sync=!0,this.connection.sendUnavailableBeacon()))return}this.connection.disconnect(),this._startConnecting=!1,!0!==this.connection.options.sync&&this.connection.flush()}_initStrophePlugins(){var t,i;let n={jvb:{iceServers:[]},p2p:{iceServers:[],iceTransportPolicy:void 0}},r=(null==(t=this.options.p2p)?void 0:t.stunServers)||cD;Array.isArray(r)&&(cb.info("P2P STUN servers: ",r),n.p2p.iceServers=r),null!=(i=this.options.p2p)&&i.iceTransportPolicy&&(cb.info("P2P ICE transport policy: ",this.options.p2p.iceTransportPolicy),n.p2p.iceTransportPolicy=this.options.p2p.iceTransportPolicy),this.connection.addConnectionPlugin("emuc",new dB(this)),this.connection.addConnectionPlugin("jingle",new cp(this,this.eventEmitter,n)),this.connection.addConnectionPlugin("rayo",new c_)}_getConnectionFailedReasonDetails(){var t;let i={};if(null!=(t=this.options.deploymentInfo)&&t.shard&&this.connection.lastResponseHeaders){let t=this.connection.lastResponseHeaders.trim().split(/[\r\n]+/),n={};t.forEach(t=>{let i=t.split(": "),r=i.shift(),o=i.join(": ");n[r]=o}),i.shard_changed=this.options.deploymentInfo.shard!==n["x-jitsi-shard"]}return i.suspend_time=this.connection.ping.getPingSuspendTime(),i.time_since_last_success=this.connection.getTimeSinceLastSuccess(),i}_resetState(){this._anonymousConnectionFailed=!1,this.connectionFailed=!1,this._lastErrorMsg=void 0,this._disconnectInProgress=void 0,this._wasDisconnected=!1}getConnection(){return this.connection}connectionHandler(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,r=window.performance.now(),o=io.Strophe.getStatusString(i).toLowerCase();if(this.connectionTimes[o]=r,cb.info(`(TIME) Strophe ${o}${n?`[${n}]`:""}: `,r),this.eventEmitter.emit(nG.CONNECTION_STATUS_CHANGED,t,i,n),this._maybeSendDeploymentInfoStat(),i===io.Strophe.Status.CONNECTED||i===io.Strophe.Status.ATTACHED)this._sysMessageHandler&&(this.connection._stropheConn.deleteHandler(this._sysMessageHandler),this._sysMessageHandler=null),this.sendDiscoInfo&&this.connection.jingle.getStunAndTurnCredentials(),cb.info(`My Jabber ID: ${this.connection.jid}`),this._wasDisconnected&&ns.sendStatsEntry(ni.STROPHE_RECONNECTED_EVENT),this._resetState(),this.sendDeploymentInfo=!1,this.sendDiscoInfo&&this.caps.getFeaturesAndIdentities(this.options.hosts.domain,void 0).then(t=>{let i=t.features,n=t.identities;i.has(io.Strophe.NS.PING)||cb.error(`Ping NOT supported by ${this.options.hosts.domain} - please enable ping in your XMPP server config`),this._processDiscoInfoIdentities(n,void 0)}).catch(t=>{cb.error("Feature discovery error",t),this._maybeSendDeploymentInfoStat(!0)}),this.sendDiscoInfo=!1,t.password&&(this.authenticatedUser=!0),this.connection&&this.connection.connected&&io.Strophe.getResourceFromJid(this.connection.jid)&&this.eventEmitter.emit(nQ,io.Strophe.getResourceFromJid(this.connection.jid));else if(i===io.Strophe.Status.CONNFAIL)"x-strophe-bad-non-anon-jid"===n?this._anonymousConnectionFailed=!0:this.connectionFailed=!0,this._lastErrorMsg=n,"giving-up"===n&&this.eventEmitter.emit(nX,aP,n);
81else if(i===io.Strophe.Status.ERROR)this._lastErrorMsg=n;else if(i===io.Strophe.Status.DISCONNECTED){ns.sendStatsEntry(ni.STROPHE_DISCONNECTED_EVENT),this._wasDisconnected=!0,this.connection.ping.stopInterval();let t=!!this._disconnectInProgress,i=n||this._lastErrorMsg;if(this._anonymousConnectionFailed)this.eventEmitter.emit(nX,aL);else if(this.connectionFailed)this.eventEmitter.emit(nX,aP,i,void 0,this._getConnectionFailedReasonDetails());else if(t)this.eventEmitter.emit(nY,i);else{cb.error("XMPP connection dropped!");let t=io.Strophe.getLastErrorStatus();t>=500&&t<600?this.eventEmitter.emit(nX,aM,i||"server-error",void 0,this._getConnectionFailedReasonDetails()):this.eventEmitter.emit(nX,aO,i||"connection-dropped-error",void 0,this._getConnectionFailedReasonDetails())}}else if(i===io.Strophe.Status.AUTHFAIL){let i=this.getConnection().getLastFailedMessage();this.eventEmitter.emit(nX,aL,n||this._parseConnectionFailedMessage(i),t),this.connection.disconnect()}}attach(t){this._resetState(),this.sendDiscoInfo=!0;let i=this.connectionTimes.attaching=window.performance.now();cb.info("(TIME) Strophe Attaching: ",i),this.connection.attach(t.jid,t.sid,(Number.parseInt(t.rid,10)+1).toString(),this.connectionHandler.bind(this,{jid:t.jid,password:t.password}))}connect(t,i){if(!t){let i=this.options.hosts,n=i.anonymousdomain,r=i.domain,o=n||r,s=window.location;if(n){let t=null==s?void 0:s.search;(t&&-1!==t.indexOf("login=true")||this.token)&&(o=r)}t=o||(null==s?void 0:s.hostname)}return this._startConnecting=!0,this._connect(t,i)}createRoom(t,i,n){var r,o;let s=t.domain||i.customDomain,a=`${this.getRoomJid(t,s)}/`,d=n?n(this.connection.jid,this.authenticatedUser):i5.randomHexString(8).toLowerCase();return cb.info(`JID ${this.connection.jid} using MUC nickname ${d}`),a+=d,null==(r=this.connection.emuc)||null==(o=r.createRoom)?void 0:o.call(r,a,null,i)}getRoomJid(t,i){return`${t}@${i||this.options.hosts.muc.toLowerCase()}`}isRoomCreated(t,i){var n,r;return(null==(n=this.connection.emuc)||null==(r=n.isRoomCreated)?void 0:r.call(n,this.getRoomJid(t,i)))||!1}getJid(){return this.connection.jid}getJingleLog(){let t=this.connection.jingle;return t?t.getLog():{metadata:{}}}getXmppLog(){var t;return(null==(t=this.connection.logger)?void 0:t.log)||null}dial(){for(var t,i=arguments.length,n=Array(i),r=0;r<i;r++)n[r]=arguments[r];return null==(t=this.connection.rayo)?void 0:t.dial(...n)}ping(t){return new Promise((i,n)=>{this.connection.ping.ping(this.connection.pingDomain,i,n,t)})}getSessions(){return this.connection.jingle.sessions}disconnect(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;return cb.info(`XMPP disconnect triggered by the event=${null==t?void 0:t.type}`),this._removeUnloadHandlers(),this._disconnectInProgress?this._disconnectInProgress:this.connection&&this._startConnecting?(this._disconnectInProgress=new Promise(t=>{let i=(n,r)=>{r===io.Strophe.Status.DISCONNECTED&&(this.eventEmitter.removeListener(nG.CONNECTION_STATUS_CHANGED,i),t())};this.eventEmitter.on(nG.CONNECTION_STATUS_CHANGED,i)}),this._cleanupXmppConnection(t),this._disconnectInProgress):Promise.resolve()}sendDominantSpeakerEvent(t,i){if(!this.speakerStatsComponentAddress||!t)return;let n=(0,io.$msg)({to:this.speakerStatsComponentAddress});n.c("speakerstats",{room:t,silence:i,xmlns:"http://jitsi.org/jitmeet"}).up(),this.connection.send(n)}sendFaceLandmarksEvent(t,i){if(!this.speakerStatsComponentAddress||!t)return;let n=(0,io.$msg)({to:this.speakerStatsComponentAddress});n.c("faceLandmarks",{duration:i.duration,faceExpression:i.faceExpression,room:t,timestamp:i.timestamp,xmlns:"http://jitsi.org/jitmeet"}).up(),this.connection.send(n)}tryParseJSONAndVerify(t){if(!t)return!1;try{let i=iX(aw(t));if(i&&"object"==typeof i){let t=i[cT];if(void 0!==t)return i;cb.debug("parsing valid json but does not have correct structure","topic: ",t)}}catch(i){return cb.error(`Error parsing json ${t}`,i),!1}return!1}refreshToken(t){this.token=t;let i=this.options.serviceUrl;return i+=`${-1===i.indexOf("?")?"?":"&"}token=${t}`,this.connection.refreshToken(i)}}let cI=function(t){return t.E2EE_OLM_NO_ONE_TIME_KEYS="e2ee.olm.no-one-time-keys",t.E2EE_OLM_SESSION_ALREADY_EXISTS="e2ee.olm.session-already-exists",t.E2EE_OLM_SESSION_INIT_PENDING="e2ee.olm.session-init-pending",t.E2EE_SAS_CHANNEL_VERIFICATION_FAILED="e2ee.sas.channel-verification-failed",t.E2EE_SAS_COMMITMENT_MISMATCHED="e2ee.sas.commitment-mismatched",t.E2EE_SAS_INVALID_SAS_VERIFICATION="e2ee.sas.invalid-sas-ver
81ification",t.E2EE_SAS_KEYS_MAC_MISMATCH="e2ee.sas.keys-mac-mismatch",t.E2EE_SAS_MAC_MISMATCH="e2ee.sas.mac-mismatch",t.E2EE_SAS_MISSING_KEY="e2ee.sas.missing-key",t}({}),ck=[["\u{1F436}","dog"],["\u{1F431}","cat"],["\u{1F981}","lion"],["\u{1F40E}","horse"],["\u{1F984}","unicorn"],["\u{1F437}","pig"],["\u{1F418}","elephant"],["\u{1F430}","rabbit"],["\u{1F43C}","panda"],["\u{1F413}","rooster"],["\u{1F427}","penguin"],["\u{1F422}","turtle"],["\u{1F41F}","fish"],["\u{1F419}","octopus"],["\u{1F98B}","butterfly"],["\u{1F337}","flower"],["\u{1F333}","tree"],["\u{1F335}","cactus"],["\u{1F344}","mushroom"],["\u{1F30F}","globe"],["\u{1F319}","moon"],["\u2601\uFE0F","cloud"],["\u{1F525}","fire"],["\u{1F34C}","banana"],["\u{1F34E}","apple"],["\u{1F353}","strawberry"],["\u{1F33D}","corn"],["\u{1F355}","pizza"],["\u{1F382}","cake"],["\u2764\uFE0F","heart"],["\u{1F642}","smiley"],["\u{1F916}","robot"],["\u{1F3A9}","hat"],["\u{1F453}","glasses"],["\u{1F527}","spanner"],["\u{1F385}","santa"],["\u{1F44D}","thumbs up"],["\u2602\uFE0F","umbrella"],["\u231B","hourglass"],["\u23F0","clock"],["\u{1F381}","gift"],["\u{1F4A1}","light bulb"],["\u{1F4D5}","book"],["\u270F\uFE0F","pencil"],["\u{1F4CE}","paperclip"],["\u2702\uFE0F","scissors"],["\u{1F512}","lock"],["\u{1F511}","key"],["\u{1F528}","hammer"],["\u260E\uFE0F","telephone"],["\u{1F3C1}","flag"],["\u{1F682}","train"],["\u{1F6B2}","bicycle"],["\u2708\uFE0F","aeroplane"],["\u{1F680}","rocket"],["\u{1F3C6}","trophy"],["\u26BD","ball"],["\u{1F3B8}","guitar"],["\u{1F3BA}","trumpet"],["\u{1F514}","bell"],["\u2693\uFE0F","anchor"],["\u{1F3A7}","headphones"],["\u{1F4C1}","folder"],["\u{1F4CC}","pin"]],cO={decimal:function(t){return[1e3+(t[0]<<5|t[1]>>3),1e3+((7&t[1])<<10|t[2]<<2|t[3]>>6),1e3+((63&t[3])<<7|t[4]>>1)]},emoji:function(t){return[t[0]>>2,(3&t[0])<<4|t[1]>>4,(15&t[1])<<2|t[2]>>6,63&t[2],t[3]>>2,(3&t[3])<<4|t[4]>>4,(15&t[4])<<2|t[5]>>6].map(t=>ck[t])}};function cN(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return cP(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?cP(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 82In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function cP(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}let cL=(0,m.getLogger)("e2ee:OlmAdapter"),cM=5e3,cF="olm",cj="error",cV="key-info",cB="key-info-ack",cU="sas-accept",c$="sas-key",cH="sas-mac",cJ="sas-start",cq="session-ack",cG="session-init",cz="Jitsi-KEY_VERIFICATION_MAC",cK="Jitsi-KEY_IDS",cW=Symbol("OlmData"),cY={PARTICIPANT_E2EE_CHANNEL_READY:"olm.participant_e2ee_channel_ready",PARTICIPANT_KEY_UPDATED:"olm.partitipant_key_updated",PARTICIPANT_SAS_AVAILABLE:"olm.participant_sas_available",PARTICIPANT_SAS_READY:"olm.participant_sas_ready",PARTICIPANT_VERIFICATION_COMPLETED:"olm.participant_verification_completed"};class cQ extends rI{constructor(t){super(),this._conf=t,this._init=new ae,this._mediaKey=void 0,this._mediaKeyIndex=-1,this._reqs=new Map,this._sessionInitialization=void 0,this._sessionReadyCallbacks=new Map,cQ.isSupported()?(this._bootstrapOlm(),this._conf.on(tT.ENDPOINT_MESSAGE_RECEIVED,this._onEndpointMessageReceived.bind(this)),this._conf.on(tT.CONFERENCE_LEFT,this._onConferenceLeft.bind(this)),this._conf.on(tT.USER_LEFT,this._onParticipantLeft.bind(this)),this._conf.on(tT.PARTICIPANT_PROPERTY_CHANGED,this._onParticipantPropertyChanged.bind(this))):this._init.reject(Error("Olm not supported"))}get myId(){return this._conf.myUserId()}async initSessions(){if(this._sessionInitialization)throw Error("OlmAdapter initSessions called multiple times");this._sessionInitialization=new ae,await this._init;let t=this._conf.myUserId(),i=this._conf.getParticipants().filter(t=>t.hasFeature(cA)),n=i.filter(i=>t<i.getId()).map(t=>this._sendSessionInit(t));await Promise.allSettled(n);let r=[];for(let t of i){let i=t.getId();if(this._getParticipantOlmData(t).session)continue;cL.debug(`Waiting for session with participant ${i}`);let n=new Promise(t=>{this._sessionReadyCallbacks.set(i,t)});r.push(n)}r.length>0&&(cL.debug(`Waiting for ${r.length} sessions to be established`),await Promise.race([Promise.allSettled(r),new Promise(t=>setTimeout(t,1e4))]),this._sessionReadyCallbacks.clear()),cL.debug("All Olm sessions established (outgoing and incoming)"),this._sessionInitialization.resolve(),this._sessionInitialization=void 0}static isSupported(){return void 0!==window.Olm}async updateKey(t){this._mediaKey=t,this._mediaKeyIndex++;let i=[];for(let t of this._conf.getParticipants()){let n=t.getId(),r=this._getParticipantOlmData(t);
82if(!r.session){cL.warn(`Tried to send key to participant ${n} but we have no session`);continue}let o=i1(),s={[cT]:cF,olm:{data:{ciphertext:this._encryptKeyInfo(r.session),uuid:o},type:cV}},a=new ae;a.setRejectTimeout(cM),a.catch(()=>{this._reqs.delete(o)}),this._reqs.set(o,a),i.push(a),this._sendMessage(s,n)}return await Promise.allSettled(i),this._mediaKeyIndex}updateCurrentMediaKey(t){return this._mediaKey=t,this._mediaKeyIndex}clearParticipantSession(t){var i;let n=this._getParticipantOlmData(t);n.session&&(n.session.free(),n.session=void 0),n.pendingSessionUuid=void 0,n.lastKey=void 0,null!=(i=n.sasVerification)&&i.sas&&n.sasVerification.sas.free(),n.sasVerification=void 0}clearAllParticipantsSessions(){for(let t of this._conf.getParticipants())this.clearParticipantSession(t);this._reqs.clear(),this._sessionInitialization=void 0}markParticipantVerified(t,i){let n=this._getParticipantOlmData(t),r=t.getId();if(!i)return n.sasVerification=void 0,cL.warn(`Verification failed for participant ${r}`),void this.eventEmitter.emit(cY.PARTICIPANT_VERIFICATION_COMPLETED,r,!1,cI.E2EE_SAS_CHANNEL_VERIFICATION_FAILED);if(!n.sasVerification)return cL.warn(`Participant ${r} does not have valid sasVerification`),void this.eventEmitter.emit(cY.PARTICIPANT_VERIFICATION_COMPLETED,r,!1,cI.E2EE_SAS_INVALID_SAS_VERIFICATION);let o=n.sasVerification,s=o.sas,a=o.sasMacSent;s&&s.is_their_key_set()&&!a&&(this._sendSasMac(t),n.sasVerification.sasMacSent=!0)}async _bootstrapOlm(){cL.debug("Initializing Olm...");try{await Olm.init(),this._olmAccount=new Olm.Account,this._olmAccount.create(),this._idKeys=iX(this._olmAccount.identity_keys()),cL.debug(`Olm ${Olm.get_library_version().join(".")} initialized`),this._init.resolve(),this._onIdKeysReady(this._idKeys)}catch(t){cL.error("Failed to initialize Olm",t),this._init.reject(t)}}startVerification(t){let i=t.getId(),n=this._getParticipantOlmData(t);if(!n.session)return void cL.warn(`Tried to start verification with participant ${i} but we have no session`);if(n.sasVerification)return void cL.warn(`There is already a verification in progress with participant ${i}`);n.sasVerification={sas:new Olm.SAS,transactionId:i1()};let r={transactionId:n.sasVerification.transactionId};n.sasVerification.startContent=r,n.sasVerification.isInitiator=!0;let o={[cT]:cF,olm:{data:r,type:cJ}};this._sendMessage(o,i)}_onIdKeysReady(t){for(let i in cL.debug(`Olm id key ready: ${t}`),t)if(t.hasOwnProperty(i)){let n=t[i];this._conf.setLocalParticipantProperty(`e2ee.idKey.${i}`,n)}}_onParticipantE2EEChannelReady(t){cL.debug(`E2EE channel with participant ${t} is ready`);let i=this._sessionReadyCallbacks.get(t);i&&(i(),this._sessionReadyCallbacks.delete(t))}
82_encryptKeyInfo(t){let i={};return void 0!==this._mediaKey&&(i.key=!!this._mediaKey&&aE.fromByteArray(this._mediaKey),i.keyIndex=this._mediaKeyIndex),t.encrypt(JSON.stringify(i))}_getParticipantOlmData(t){return t[cW]=t[cW]||{},t[cW]}async _onConferenceLeft(){for(let t of(cL.debug("Conference left"),await this._init,this._conf.getParticipants()))this._onParticipantLeft(t.getId(),t);this._olmAccount&&(this._olmAccount.free(),this._olmAccount=void 0)}async _onEndpointMessageReceived(t,i){if(i[cT]!==cF)return;if(!i.olm)return void cL.warn("Incorrectly formatted message");await this._init;let n=i.olm,r=t.getId(),o=this._getParticipantOlmData(t);switch(n.type){case cG:if(o.session)cL.warn(`Participant ${r} already has a session`),this._sendError(t,"Session already established");else{let t=new Olm.Session;t.create_outbound(this._olmAccount,n.data.idKey,n.data.otKey),o.session=t;let i={[cT]:cF,olm:{data:{ciphertext:this._encryptKeyInfo(t),uuid:n.data.uuid},type:cq}};this._sendMessage(i,r),this._onParticipantE2EEChannelReady(r)}break;case cq:if(o.session)cL.warn(`Participant ${r} already has a session`),this._sendError(t,"No session found");else if(n.data.uuid===o.pendingSessionUuid){let t=n.data.ciphertext,i=this._reqs.get(n.data.uuid),s=new Olm.Session;s.create_inbound(this._olmAccount,t.body),this._olmAccount.remove_one_time_keys(s);let a=s.decrypt(t.type,t.body);o.session=s,o.pendingSessionUuid=void 0,this._onParticipantE2EEChannelReady(r),this._reqs.delete(n.data.uuid),i.resolve();let d=cX(a);if(d.key){let t=aE.toByteArray(d.key),i=d.keyIndex;o.lastKey=t,this.eventEmitter.emit(cY.PARTICIPANT_KEY_UPDATED,r,t,i)}}else cL.warn("Received ACK with the wrong UUID"),this._sendError(t,"Invalid UUID");break;case cj:cL.error(n.data.error);break;case cV:if(o.session){let t=n.data.ciphertext,i=cX(o.session.decrypt(t.type,t.body));if(void 0!==i.key&&void 0!==i.keyIndex){let t=!!i.key&&aE.toByteArray(i.key),s=i.keyIndex;ir(o.lastKey,t)||(o.lastKey=t,this.eventEmitter.emit(cY.PARTICIPANT_KEY_UPDATED,r,t,s));let a={[cT]:cF,olm:{data:{ciphertext:this._encryptKeyInfo(o.session),uuid:n.data.uuid},type:cB}};this._sendMessage(a,r)}}else cL.debug(`Received key info message from ${r} but we have no session for them!`),this._sendError(t,"No session found while processing key-info");break;case cB:if(o.session){let t=n.data.ciphertext,i=cX(o.session.decrypt(t.type,t.body));if(void 0!==i.key&&void 0!==i.keyIndex){let t=!!i.key&&aE.toByteArray(i.key),n=i.keyIndex;ir(o.lastKey,t)||(o.lastKey=t,this.eventEmitter.emit(cY.PARTICIPANT_KEY_UPDATED,r,t,n))}let s=this._reqs.get(n.data.uuid);this._reqs.delete(n.data.uuid),s.resolve()}else cL.debug(`Received key info ack message from ${r} but we have no session for them!`),this._sendError(t,"No session found while processing key-info-ack");break;case cJ:{var s;if(!o.session)return cL.debug(`Received sas init message from ${r} but we have no session for them!`),void this._sendError(t,"No session found while processing sas-init");if(null!=(s=o.sasVerification)&&s.sas)return cL.warn(`SAS already created for participant ${r}`),void this.eventEmitter.emit(cY.PARTICIPANT_VERIFICATION_COMPLETED,r,!1,cI.E2EE_SAS_INVALID_SAS_VERIFICATION);let i=n.data.transactionId;o.sasVerification={isInitiator:!1,sas:new Olm.SAS,transactionId:i};let a=o.sasVerification.sas.get_pubkey(),d={[cT]:cF,olm:{data:{commitment:this._computeCommitment(a,n.data),transactionId:i},type:cU}};this._sendMessage(d,r);break}case cU:{if(!o.session)return cL.debug(`Received sas accept message from ${r} but we have no session for them!`),void this._sendError(t,"No session found while processing sas-accept");let i=n.data,s=i.commitment,a=i.transactionId;if(!o.sasVerification)return cL.warn(`SAS_ACCEPT Participant ${r} does not have valid sasVerification`),void this.eventEmitter.emit(cY.PARTICIPANT_VERIFICATION_COMPLETED,r,!1,cI.E2EE_SAS_INVALID_SAS_VERIFICATION);if(o.sasVerification.sasCommitment)return cL.debug(`Already received sas commitment message from ${r}!`),void this._sendError(t,"Already received sas commitment message from ${pId}!");o.sasVerification.sasCommitment=s;let d={[cT]:cF,olm:{data:{key:o.sasVerification.sas.get_pubkey(),transactionId:a},type:c$}};this._sendMessage(d,r),o.sasVerification.keySent=!0;break}case c$:{if(!o.session)return cL.debug(`Received sas key message from ${r} but we have no session for them!`),void this._sendError(t,"No session found while processing sas-key");if(!o.sasVerification)return cL.warn(`SAS_KEY Participant ${r} does not have valid sasVerification`),void this.eventEmitter.emit(cY.PARTICIPANT_VERIFICATION_COMPLETED,r,!1,cI.E2EE_SAS_INVALID_SAS_VERIFICATION);let i=o.sasVerification,s=i.isInitiator,a=i.sas,d=i.sasCommitment,c=i.startContent,l=i.keySent;
82if(a.is_their_key_set())return void cL.warn("SAS already has their key!");let u=n.data,h=u.key,p=u.transactionId;if(d&&d!==this._computeCommitment(h,c))return this._sendError(t,"OlmAdapter commitments mismatched"),this.eventEmitter.emit(cY.PARTICIPANT_VERIFICATION_COMPLETED,r,!1,cI.E2EE_SAS_COMMITMENT_MISMATCHED),void o.sasVerification.free();a.set_their_key(h);let m=a.get_pubkey(),g=`${this.myId}|${m}`,f=`${r}|${h}`,_=s?`${g}|${f}`:`${f}|${g}`,v=function(t){let i={};return Object.keys(cO).forEach(n=>{i[n]=cO[n](t)}),i}(a.generate_bytes(_,6));if(this.eventEmitter.emit(cY.PARTICIPANT_SAS_READY,r,v),l)return;let y={[cT]:cF,olm:{data:{key:m,transactionId:p},type:c$}};this._sendMessage(y,r),o.sasVerification.keySent=!0;break}case cH:{if(!o.session)return cL.debug(`Received sas mac message from ${r} but we have no session for them!`),void this._sendError(t,"No session found while processing sas-mac");let i=n.data,s=i.keys,d=i.mac,c=i.transactionId;if(!d||!s)return void cL.warn("Invalid SAS MAC message");if(!o.sasVerification)return void cL.warn(`SAS_MAC Participant ${r} does not have valid sasVerification`);let l=o.sasVerification.sas,u=`${cz}${r}${this.myId}${c}`;if(l.calculate_mac(Object.keys(d).sort().join(","),u+cK)!==s)return cL.error("SAS verification error: keys MAC mismatch"),void this.eventEmitter.emit(cY.PARTICIPANT_VERIFICATION_COMPLETED,r,!1,cI.E2EE_SAS_KEYS_MAC_MISMATCH);if(!o.ed25519)return cL.warn("SAS verification error: Missing ed25519 key"),void this.eventEmitter.emit(cY.PARTICIPANT_VERIFICATION_COMPLETED,r,!1,cI.E2EE_SAS_MISSING_KEY);for(let t of Object.entries(d)){var a=cN(t,2);let i=a[0];if(a[1]!==l.calculate_mac(o.ed25519,u+i))return cL.error("SAS verification error: MAC mismatch"),void this.eventEmitter.emit(cY.PARTICIPANT_VERIFICATION_COMPLETED,r,!1,cI.E2EE_SAS_MAC_MISMATCH)}cL.info(`SAS MAC verified for participant ${r}`),this.eventEmitter.emit(cY.PARTICIPANT_VERIFICATION_COMPLETED,r,!0)}}}_onParticipantLeft(t,i){cL.debug(`Participant ${t} left`),this.clearParticipantSession(i)}async _onParticipantPropertyChanged(t,i,n,r){let o=t.getId(),s=this._getParticipantOlmData(t);switch(i){case"e2ee.enabled":if(r&&this._conf.isE2EEEnabled()){let i=this._conf.myUserId();if((await t.getFeatures()).has(cA)&&i<o){let i=!1;try{this._sessionInitialization&&await this._sessionInitialization,await this._sendSessionInit(t),i=!0}catch(t){t.message===cI.E2EE_OLM_SESSION_ALREADY_EXISTS?i=!0:t.message!==cI.E2EE_OLM_SESSION_INIT_PENDING&&cL.error(`Failed to establish Olm session with ${o}:`,t)}if(!i)return;let n=i1(),r=new ae;r.setRejectTimeout(cM),r.catch(()=>{this._reqs.delete(n),s.pendingSessionUuid=void 0}),this._reqs.set(n,r);let a={[cT]:cF,olm:{data:{ciphertext:this._encryptKeyInfo(s.session),uuid:n},type:cV}};this._sendMessage(a,o)}}break;case"e2ee.idKey.ed25519":s.ed25519=r,this.eventEmitter.emit(cY.PARTICIPANT_SAS_AVAILABLE,o)}}_sendError(t,i){let n=t.getId(),r={[cT]:cF,olm:{data:{error:i},type:cj}};this._sendMessage(r,n)}_sendMessage(t,i){this._conf.sendMessage(t,i)}_sendSessionInit(t){let i=t.getId(),n=this._getParticipantOlmData(t);if(n.session)return cL.warn(`Tried to send session-init to ${i} but we already have a session`),Promise.reject(Error(cI.E2EE_OLM_SESSION_ALREADY_EXISTS));if(void 0!==n.pendingSessionUuid)return cL.warn(`Tried to send session-init to ${i} but we already have a pending session`),Promise.reject(Error(cI.E2EE_OLM_SESSION_INIT_PENDING));this._olmAccount.generate_one_time_keys(1);let r=Object.values(iX(this._olmAccount.one_time_keys()).curve25519)[0];if(!r)return Promise.reject(Error(cI.E2EE_OLM_NO_ONE_TIME_KEYS));this._olmAccount.mark_keys_as_published();let o=i1(),s={[cT]:cF,olm:{data:{idKey:this._idKeys.curve25519,otKey:r,uuid:o},type:cG}},a=new ae;return a.setRejectTimeout(cM),a.catch(()=>{this._reqs.delete(o),n.pendingSessionUuid=void 0}),this._reqs.set(o,a),this._sendMessage(s,i),n.pendingSessionUuid=o,a}_sendSasMac(t){let i=t.getId(),n=this._getParticipantOlmData(t).sasVerification,r=n.sas,o=n.transactionId,s={},a=[],d=`${cz}${this.myId}${i}${o}`,c=`ed25519:${i}`;s[c]=r.calculate_mac(this._idKeys.ed25519,d+c),a.push(c);let l={[cT]:cF,olm:{data:{keys:r.calculate_mac(a.sort().join(","),d+cK),mac:s,transactionId:o},type:cH}};this._sendMessage(l,i)}_computeCommitment(t,i){let n=new Olm.Utility,r=n.sha256(t+JSON.stringify(i));return n.free(),r}}function cX(t){try{return iX(t)}catch(t){return{}}}cQ.events=cY;let cZ=(0,m.getLogger)("e2ee:ManagedKeyHandler");class c0 extends ao{constructor(t){super(t),this._key=void 0,this._conferenceJoined=!1,this._olmAdapter=new cQ(t),this._rotateKey=ay(this._rotateKeyImpl,5e3),this._ratchetKey=ay(this._ratchetKeyImpl,5e3),this._olmAdapter.on(cQ.events.PARTICIPANT_KEY_UPDATED,this._onParticipantKeyUpdated.bind(this)),this._olmAdapter.on(cQ.events.PARTICIPANT_SAS_READY,this._onParticipantSasReady.bind(this)),this._olmAdapter.on(cQ.events.PARTICIPANT_SAS_AVAILABLE,this._onParticipantSasAvailable.bind(this)),this._olmAdapter.on(cQ.events.PARTICIPANT_VERIFICATION_COMPLETED,this._onParticipantVerificationCompleted.bind(this)),this.conference.on(tT.PARTICIPANT_PROPERTY_CHANGED,this._onParticipantPropertyChanged.bind(this)),this.conference.on(tT.USER_JOINED,this._onParticipantJoined.bind(this)),this.conference.on(tT.USER_LEFT,this._onParticipantLeft.bind(this)),this.conference.on(tT.CONFERENCE_JOINED,()=>{this._conferenceJoined=!0})}get sasVerification(){return this._olmAdapter}async _setEnabled(t){t&&(await this._olmAdapter.initSessions(),cZ.debug("All Olm sessions established, proceeding with key distribution")),this._key=!!t&&this._generateKey();let i=await this._olmAdapter.updateKey(this._key);this.e2eeCtx.setKey(this.conference.myUserId(),this._key,i),t||this._olmAdapter.clearAllParticipantsSessions()}_onParticipantPropertyChanged(t,i,n,r){switch(i){case"e2ee.idKey":cZ.debug(`Participant ${t.getId()} updated their id key: ${r}`);break;case"e2ee.enabled":!r&&this.enabled&&this._olmAdapter.clearParticipantSession(t)}}_onParticipantJoined(){this._conferenceJoined&&this.enabled&&this._ratchetKey()}_onParticipantLeft(t){this.e2eeCtx.cleanup(t),this.enabled&&this._rotateKey()}async _rotateKeyImpl(){cZ.debug("Rotating key"),this._key=this._generateKey();let t=await this._olmAdapter.updateKey(this._key);this.e2eeCtx.setKey(this.conference.myUserId(),this._key,t)}async _ratchetKeyImpl(){cZ.debug("Ratchetting key");let t=await async function(t){return await crypto.subtle.importKey("raw",t,"HKDF",!1,["deriveBits","deriveKey"])}(this._key),i=await async function(t){let i=new TextEncoder;return await crypto.subtle.deriveBits({hash:"SHA-256",info:new ArrayBuffer,name:"HKDF",salt:i.encode("JFrameRatchetKey")},t,256)}(t);this._key=new Uint8Array(i);let n=this._olmAdapter.updateCurrentMediaKey(this._key);this.e2eeCtx.setKey(this.conference.myUserId(),this._key,n)}_onParticipantKeyUpdated(t,i,n){cZ.debug(`Participant ${t} updated their key`),this.e2eeCtx.setKey(t,i,n)}_onParticipantSasReady(t,i){this.conference.eventEmitter.emit(tT.E2EE_VERIFICATION_READY,t,i)}_onParticipantSasAvailable(t){this.conference.eventEmitter.emit(tT.E2EE_VERIFICATION_AVAILABLE,t)}_onParticipantVerificationCompleted(t,i,n){this.conference.eventEmitter.emit(tT.E2EE_VERIFICATION_COMPLETED,t,i,n)}_generateKey(){return window.crypto.getRandomValues(new Uint8Array(32))}}class c1{constructor(t){const i=t.options.config.e2ee,n=void 0===i?{}:i;this._externallyManaged=n.externallyManagedKey,this._externallyManaged?this._keyHandler=new as(t):this._keyHandler=new c0(t)}static isSupported(t){var i;let n=t.e2ee,r=void 0===n?{}:n;return!(!r.externallyManagedKey&&!cQ.isSupported())&&!(r.disabled||null!=(i=t.testing)&&i.disableE2EE)&&(nf.supportsInsertableStreams()||t.enableEncodedTransformSupport&&nf.supp
82ortsEncodedTransform())}isEnabled(){return this._keyHandler.isEnabled()}async setEnabled(t){await this._keyHandler.setEnabled(t)}setEncryptionKey(t){this._keyHandler.setKey(t)}startVerification(t){var i;null==(i=this._keyHandler.sasVerification)||i.startVerification(t)}markParticipantVerified(t,i){var n;null==(n=this._keyHandler.sasVerification)||n.markParticipantVerified(t,i)}}let c2=function(t){return t.E2E_RTT_CHANGED="e2eping.e2e_rtt_changed",t}({}),c6=(0,m.getLogger)("e2eping"),c8="e2e-ping-request",c5="e2e-ping-response";class c4{constructor(t,i){this.participant=t,this.e2eping=i,this.id=t.getId(),this.requests={},this.lastRequestId=1,this.sendRequest=this.sendRequest.bind(this),this.handleResponse=this.handleResponse.bind(this),this.maybeLogRttAndStop=this.maybeLogRttAndStop.bind(this),this.scheduleNext=this.scheduleNext.bind(this),this.stop=this.stop.bind(this),this.getDelay=this.getDelay.bind(this),this.timeout=this.scheduleNext()}scheduleNext(){return window.setTimeout(this.sendRequest,this.getDelay())}stop(){this.timeout&&window.clearTimeout(this.timeout),this.e2eping.removeParticipant(this.id
82)}getDelay(){let t=this.e2eping.conference.getParticipants().length;return(1.5-Math.random())*Math.max(t*(t-1)/2*this.e2eping.numRequests/this.e2eping.maxMessagesPerSecond/this.e2eping.numRequests*1e3,1e3)}sendRequest(){let t=this.lastRequestId++,i={id:t,type:c8};this.e2eping.sendMessage(i,this.id),this.requests[t]={id:t,timeSent:window.performance.now()}}handleResponse(t){let i=this.requests[t.id];i&&(i.rtt=window.performance.now()-i.timeSent),this.maybeLogRttAndStop()}maybeLogRttAndStop(){let t,i,n=1/0,r=0,o=0;for(i in this.requests)this.requests.hasOwnProperty(i)&&(t=this.requests[i],o++,t.rtt&&(r++,n=Math.min(n,t.rtt)));return r>=this.e2eping.numRequests?(c6.info(`Measured RTT=${n} ms to ${this.id} (in ${this.participant.getProperty("region")})`),this.stop(),void this.e2eping.conference.eventEmitter.emit(c2.E2E_RTT_CHANGED,this.participant,n)):o>2*this.e2eping.numRequests?(c6.info(`Stopping e2eping for ${this.id} because we sent ${o} with only ${r} responses.`),void this.stop()):void(this.timeout=this.scheduleNext())}}class c9{constructor(t,i,n){this.conference=t,this.eventEmitter=t.eventEmitter,this.sendMessage=n,this.participants={},this.numRequests=5,this.maxConferenceSize=200,this.maxMessagesPerSecond=250,null!=i&&i.e2eping&&("number"==typeof i.e2eping.numRequests&&(this.numRequests=i.e2eping.numRequests),"number"==typeof i.e2eping.maxConferenceSize&&(this.maxConferenceSize=i.e2eping.maxConferenceSize),"number"==typeof i.e2eping.maxMessagesPerSecond&&(this.maxMessagesPerSecond=i.e2eping.maxMessagesPerSecond)),c6.info(`Initializing e2e ping with numRequests=${this.numRequests}, maxConferenceSize=${this.maxConferenceSize}, maxMessagesPerSecond=${this.maxMessagesPerSecond}.`),this.participantJoined=this.participantJoined.bind(this),this.participantLeft=this.participantLeft.bind(this),t.on(tT.USER_LEFT,this.participantLeft),this.messageReceived=this.messageReceived.bind(this),t.on(tT.ENDPOINT_MESSAGE_RECEIVED,this.messageReceived),this.conferenceJoined=this.conferenceJoined.bind(this),t.on(tT.CONFERENCE_JOINED,this.conferenceJoined)}
82conferenceJoined(){this.conference.getParticipants().forEach(t=>this.participantJoined(t.getId(),t)),this.conference.on(tT.USER_JOINED,this.participantJoined)}messageReceived(t,i){i.type===c8?this.handleRequest(t.getId(),i):i.type===c5&&this.handleResponse(t.getId(),i)}participantJoined(t,i){this.participants[t]&&(c6.info(`Participant wrapper already exists for ${t}. Clearing.`),this.participants[t].stop()),this.conference.getParticipants().length>this.maxConferenceSize||this.conference.myUserId()>t&&(c6.info(`Starting e2eping for participant ${t}`),this.participants[t]=new c4(i,this))}removeParticipant(t){this.participants[t]&&delete this.participants[t]}participantLeft(t){this.participants[t]&&(this.participants[t].stop(),delete this.participants[t])}handleRequest(t,i){if(null!=i&&i.id){let n={id:i.id,type:c5};this.sendMessage(n,t)}else c6.info(`Received an invalid e2e ping request from ${t}.`)}handleResponse(t,i){let n=this.participants[t];n&&n.handleResponse(i)}stop(){for(let t in c6.info("Stopping e2eping"),this.conference.off(tT.USER_JOINED,this.participantJoined),this.conference.off(tT.USER_LEFT,this.participantLeft),this.conference.off(tT.ENDPOINT_MESSAGE_RECEIVED,this.messageReceived),this.participants)this.participants.hasOwnProperty(t)&&this.participants[t].stop();this.participants={}}}let c7=Symbol("kJitsiLiteMode"),c3=(0,m.getLogger)("testing:LiteModeContext");class le{constructor(t){this.enabled=nR.isRunInLiteModeEnabled(),this.enabled&&t.rtc.on(nJ.REMOTE_TRACK_ADDED,(t,i)=>this._setupLiteModeForTrack(i,t))}_setupLiteModeForTrack(t,i){if(!this.enabled)return;let n=t.findReceiverForTrack(i.getTrack());if(!n)return void c3.warn(`Could not set up lite mode for ${i}: receiver not found in: ${t}`);if(n[c7])return;n[c7]=!0;let r=n.createEncodedStreams(),o=new TransformStream({transform:()=>{}});r.readable.pipeThrough(o).pipeTo(r.writable)}}let lt=(0,m.getLogger)("qc:CodecSelection"),li=[oZ.AV1,oZ.VP9,oZ.VP8,oZ.H264],ln=[oZ.H264,oZ.VP8,oZ.VP9,oZ.AV1],lr=[oZ.VP8,oZ.VP9,oZ.H264,oZ.AV1];class lo{constructor(t,i){for(const o of(this.codecPreferenceOrder={},this.conference=t,this.encodeTimeStats=new Map,this.options=i,this.screenshareCodec={},this.visitorCodecs=[],Object.keys(i))){let t=i[o],s=t.disabledCodec,a=t.preferredCodec,d=t.preferenceOrder;const c=i[o],l=c.enableAV1ForFF,u=void 0!==l&&l,h=c.screenshareCodec,p=new Set(this._getSupportedVideoCodecs(o));let m=Array.from(p);if(d)m=(d=d.map(t=>t.toLowerCase())).filter(t=>p.has(t));else if(a||s){var n,r;s=null==(n=s)?void 0:n.toLowerCase(),a=null==(r=a)?void 0:r.toLowerCase(),s&&s!==oZ.VP8&&(m=m.filter(t=>t!==s));const t=m.findIndex(t=>t===a);a&&-1!==t&&(m.splice(t,1),m.unshift(a))}const g=nf.supportsVP9()||nf.isWebKitBased()&&"p2p"===o;[oZ.AV1,oZ.VP9].forEach(t=>{if(t===oZ.AV1&&nf.isFirefox()&&!u||t===oZ.VP9&&!g){let i=m.findIndex(i=>i===t);-1!==i&&(m.splice(i,1),m.push(t))}}),nf.isWebKitBased()&&(m=m.filter(t=>t!==oZ.AV1)),lt.info(`Codec preference order for ${o} connection is ${m}`),this.codecPreferenceOrder[o]=m,h&&p.has(h.toLowerCase())&&(this.screenshareCodec[o]=h.toLowerCase())}}_getSupportedVideoCodecs(t){let i=(nf.isMobileDevice()&&"p2p"===t?ln:nf.isMobileDevice()?lr:li).filter(t=>{var i,n,r;return(null!=(i=null==(n=window.RTCRtpReceiver)||null==(r=n.getCapabilities)||null==(r=r.call(n,nx.VIDEO))?void 0:r.codecs)?i:[]).some(i=>i.mimeType.toLowerCase()===`${nx.VIDEO}/${t}`)});return i.length||i.push(oZ.VP8),i}getCodecPreferenceList(t){return this.codecPreferenceOrder[t]}getScreenshareCodec(t){return this.screenshareCodec[t]}selectPreferredCodec(t){var i,n;let r=t||this.conference.jvbJingleSession;if(!r)return;let o=this.codecPreferenceOrder.jvb;this.conference.isE2EEEnabled()&&(o=[oZ.VP8]);let s=this.conference.getParticipants().map(t=>t.getId()),a=null!=(i=null==s?void 0:s.map(t=>{let i=r._signalingLayer.getPeerMediaInfo(t,nx.VIDEO);return null!=i&&i.codecList?i.codecList:null!=i&&i.codecType?[i.codecType]:[]}))?i:[];this.visitorCodecs.length&&a.push(this.visitorCodecs);let d=o.reduce((t,i)=>{let n=!1;for(let t of a)t.length&&(n=n||!t.find(t=>t===i));
82return n||t.push(i),t},[]);d.length?r.setVideoCodecs(d,null==(n=this.screenshareCodec)?void 0:n.jvb):lt.warn("Invalid codec list generated because of a user joining/leaving the call")}changeCodecPreferenceOrder(t,i){let n=this.conference.getActiveMediaSession(),r=n.isP2P?"p2p":"jvb",o=this.codecPreferenceOrder[r],s=t.getVideoType(),a=o3[s].filter(t=>!!o.find(i=>i===t)),d=a.findIndex(t=>t===i.toLowerCase());if(d===a.length-1)return!1;let c=a[d+1];if(s===rw.CAMERA){let t=o.findIndex(t=>t===c);o.splice(t,1),o.unshift(c),lt.info(`QualityController - switching camera codec to ${c} because of cpu restriction`)}else this.screenshareCodec[r]=c,lt.info(`QualityController - switching screenshare codec to ${c} because of cpu restriction`);return this.selectPreferredCodec(n),!0}updateVisitorCodecs(t){this.visitorCodecs!==t&&(this.visitorCodecs=t,this.selectPreferredCodec())}}let ls=function(t){return t.ALL="All",t.EXCLUDE="Exclude",t.INCLUDE="Include",t.NONE="None",t}({}),la=(0,m.getLogger)("qc:ReceiveAudioController");class ld{constructor(t){this._rtc=t.rtc,this._sourceList=[],this._subscriptionMode=ls.ALL}get audioSubscription(){return this._subscriptionMode}muteRemoteAudio(t){this.setAudioSubscriptionMode({mode:t?ls.NONE:ls.ALL})}setAudioSubscriptionMode(t){if(t.mode!=ls.NONE&&t.mode!=ls.ALL||this._subscriptionMode!=t.mode){if(this._subscriptionMode=t.mode,t.mode==ls.INCLUDE||t.mode==ls.EXCLUDE){var i;if(null!=(i=t.list)&&i.length){if(this._subscriptionMode==t.mode&&ir(this._sourceList,t.list))return void la.debug(`Ignoring ReceiverAudioSubscription with mode: ${t.mode}, sourceList: ${t.list.join(", ")}, no change needed.`)}else this._subscriptionMode=t.mode==ls.INCLUDE?ls.NONE:ls.ALL;this._sourceList=t.list||[]}else this._sourceList=[];this._rtc.sendReceiverAudioSubscriptionMessage({list:this._sourceList,mode:this._subscriptionMode})}else la.debug(`Ignoring ReceiverAudioSubscription with mode: ${t.mode}, no change needed.`)}}function lc(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}let ll=(0,m.getLogger)("qc:ReceiveVideoController");class lu{constructor(t){var i,n;this._conference=t,this._rtc=t.rtc;const r=t.options.config;this._lastN=null!=(i=null!=(n=null==r?void 0:r.startLastN)?n:null==r?void 0:r.channelLastN)?i:-1,this._maxFrameHeight=2160,this._sourceReceiverConstraints=new Map,this._assumedBandwidthBps=-1,this._lastNLimitedByCpu=!1,this._receiveResolutionLimitedByCpu=!1,this._receiverVideoConstraints={assumedBandwidthBps:this._assumedBandwidthBps,lastN:this._lastN}}_getDefaultSourceReceiverConstraints(t,i){var n;let r=null!=i?i:2160,o=(null==(n=t.peerconnection)?void 0:n.getRemoteTracks(null,nx.VIDEO))||[],s=new Map;for(let t of o)s.set(t.getSourceName(),r);return s}_updateIndividualConstraints(t){let i=this._receiverVideoConstraints.constraints;if(i&&Object.keys(i).length)for(let n of Object.values(i))n.maxHeight=null!=t?t:Math.min(n.maxHeight,this._maxFrameHeight);else this._receiverVideoConstraints.defaultConstraints={maxHeight:this._maxFrameHeight}}getCurrentReceiverConstraints(){return this._receiverVideoConstraints}getLastN(){return this._lastN}isLastNLimitedByCpu(){return this._lastNLimitedByCpu}onMediaSessionStarted(t){t.isP2P?t.setReceiverVideoConstraint(this._getDefaultSourceReceiverConstraints(t)):this._rtc.setReceiverVideoConstraints(this._receiverVideoConstraints)}setAssumedBandwidthBps(t){this._receiverVideoConstraints.assumedBandwidthBps!==t&&(this._receiverVideoConstraints.assumedBandwidthBps=t,this._rtc.setReceiverVideoConstraints(this._receiverVideoConstraints))}setLastN(t){this._lastN!==t&&(this._lastN=t,this._receiverVideoConstraints.lastN=t,this._rtc.setReceiverVideoConstraints(this._receiverVideoConstraints))}setLastNLimitedByCpu(t){this._lastNLimitedByCpu!==t&&(this._lastNLimitedByCpu=t,ll.info(`ReceiveVideoController - Setting the lastNLimitedByCpu flag to ${t}`))}setPreferredReceiveMaxFrameHeight(t){for(let i of(this._maxFrameHeight=t,this._conference.getMediaSessions()))i.isP2P?i.setReceiverVideoConstraint(this._getDefaultSourceReceiverConstraints(i,t)):(this._updateIndividualConstraints(t),this._rtc.setReceiverVideoConstraints(this._receiverVideoConstraints))}setReceiverConstraints(t){if(t&&(!ir(this._receiverVideoConstraints,t)||this._lastNLimitedByCpu||this._receiveResolutionLimitedByCpu)){var i;this._receiverVideoConstraints=t,this._assumedBandwidthBps=null!=(i=t.assumedBandwidthBps)?i:this._assumedBandwidthBps,this._lastN=void 0===t.lastN||this._lastNLimitedByCpu?this._lastN:t.lastN,this._receiverVideoConstraints.lastN=this._lastN,this._receiveResolutionLimitedByCpu&&this._updateIndividualConstraints(),this._rtc.setReceiverVideoConstraints(this._receiverVideoConstraints);let n=this._conference.getMediaSessions().find(t=>t.isP2P);if(!n||!this._receiverVideoConstraints.constraints)return;let r=Array.from(Object.entries(this._receiverVideoConstraints.constraints)).map(t=>{var i,n;let r=(n=2,function(t){if(Array.isArray(t))return t}(i=t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}
82finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(i,n)||function(t,i){if(t){if("string"==typeof t)return lc(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?lc(t,i):void 0}}(i,n)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 83In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}());return[r[0],r[1].maxHeight]});this._sourceReceiverConstraints=new Map(r),n.setReceiverVideoConstraint(this._sourceReceiverConstraints)}}setReceiveResolutionLimitedByCpu(t){this._receiveResolutionLimitedByCpu!==t&&(this._receiveResolutionLimitedByCpu=t,ll.info(`ReceiveVideoController - Setting the receiveResolutionLimitedByCpu flag to ${t}`))}}let lh=(0,m.getLogger)("qc:SendVideoController"),lp=2160;class lm{constructor(t){this._conference=t,this._preferredSendMaxFrameHeight=lp,this._sessionSenderConstraints=new WeakMap}_activeSessionMap(){let t=this._conference.getActiveMediaSession();return t?this._sessionSenderConstraints.get(t):void 0}async _propagateSendMaxFrameHeight(t){if(!t)throw Error("sourceName missing for calculating the sendMaxHeight for video tracks");let i=this._selectSendMaxFrameHeight(t),n=[];if(void 0!==i&&i>=0)for(let r of this._conference.getMediaSessions())n.push(r.setSenderVideoConstraint(i,t));await Promise.all(n)}_selectSendMaxFrameHeight(t){var i;if(!t)throw Error("sourceName missing for calculating the sendMaxHeight for video tracks");let n=null==(i=this._activeSessionMap())?void 0:i.get(t);return this._preferredSendMaxFrameHeight>=0&&void 0!==n&&n>=0?Math.min(this._preferredSendMaxFrameHeight,n):void 0!==n&&n>=0?n:this._preferredSendMaxFrameHeight}configureConstraintsForLocalSources(){for(let t of this._conference.getLocalVideoTracks()){let i=t.getSourceName();i&&this._propagateSendMaxFrameHeight(i)}}onMediaSessionStarted(t){this._sessionSenderConstraints.set(t,new Map),t.addListener(cn.REMOTE_SOURCE_CONSTRAINTS_CHANGED,(t,i)=>{if(t!==this._conference.getActiveMediaSession()){let n=this._sessionSenderConstraints.get(t);if(n)for(let t of i){let i=t.sourceName,r=Number(t.maxHeight);Number.isFinite(r)&&n.set(i,-1===r?lp:r)}}else i.forEach(t=>this.onSenderConstraintsReceived(t))})}async onSenderConstraintsReceived(t){var i;let n=t.maxHeight,r=t.sourceName,o=null!=(i=this._conference.getLocalVideoTracks())?i:[],s=this._activeSessionMap();for(let t of o)if(t.getSourceName()===r){let t=-1===n?lp:n;(null==s?void 0:s.get(r))!==t&&(null==s||s.set(r,t),lh.debug(`Sender constraints for source:${r} changed to maxHeight:${n}`),await this._propagateSendMaxFrameHeight(r))}}async setPreferredSendMaxFrameHeight(t){this._preferredSendMaxFrameHeight=t;let i=[];for(let t of null!=(n=null==(r=this._activeSessionMap())?void 0:r.keys())?n:[]){var n,r;i.push(this._propagateSendMaxFrameHeight(t))}await Promise.allSettled(i)}}function lg(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var n=null==t?null:"u">typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,s,a,d=[],c=!0,l=!1;try{if(s=(n=n.call(t)).next,0===i){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(d.push(r.value),d.length!==i);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return d}}(t,i)||function(t,i){if(t){if("string"==typeof t)return lf(t,i);var n=({}).toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?lf(t,i):void 0}}(t,i)||function(){throw TypeError(`Invalid attempt to destructure non-iterable instance. 84In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function lf(t,i){(null==i||i>t.length)&&(i=t.length);for(var n=0,r=Array(i);n<i;n++)r[n]=t[n];return r}let l_=(0,m.getLogger)("qc:QualityController");var lv=function(t){return t.BANDWIDTH="bandwidth",t.CPU="cpu",t.NONE="none",t}(lv||{});class ly{constructor(t){this._maxSize=t,this._data=[]}add(t){this._data.length>=this._maxSize&&this._data.shift(),this._data.push(t)}get(t){if(t<0||t>=this._data.length)throw Error("Index out of bounds");return this._data[t]}size(){return this._data.length}}class lE{constructor(t,i){var n;this._audioController=new ld(t),this._conference=t;const r=i.jvb,o=i.p2p;this._codecController=new lo(t,{jvb:r,p2p:o}),this._enableAdaptiveMode=null==(n=i.enableAdaptiveMode)||n,this._encodeTimeStats=new Map,this._isLastNRampupBlocked=!1,this._lastNRampupTime=i.lastNRampupTime,this._notDecodingVideoTracker=new Map,this._receiveVideoController=new lu(t),this._sendVideoController=new lm(t),this._conference.on(tT._MEDIA_SESSION_STARTED,t=>{this._codecController.selectPreferredCodec(t),this._receiveVideoController.onMediaSessionStarted(t),this._sendVideoController.onMediaSessionStarted(t)}
84),this._conference.on(tT._MEDIA_SESSION_ACTIVE_CHANGED,()=>this._sendVideoController.configureConstraintsForLocalSources()),this._conference.on(tT.CONFERENCE_VISITOR_CODECS_CHANGED,t=>this._codecController.updateVisitorCodecs(t));const s=this._debounce(()=>this._codecController.selectPreferredCodec(this._conference.jvbJingleSession),1e3);this._conference.on(tT.USER_JOINED,s.bind(this)),this._conference.on(tT.USER_LEFT,s.bind(this)),this._conference.rtc.on(nJ.SENDER_VIDEO_CONSTRAINTS_CHANGED,t=>this._sendVideoController.onSenderConstraintsReceived(t)),this._conference.on(tT.ENCODE_TIME_STATS_RECEIVED,(t,i)=>this._processOutboundRtpStats(t,i)),this._conference.on(tT.INBOUND_VIDEO_STATS_RECEIVED,(t,i)=>this._processInboundVideoStats(t,i))}_debounce(t,i){return function(){for(var n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=arguments[o];this._timer||(this._timer=setTimeout(()=>{this._timer=null,t.apply(this,r)},i))}}_lowerOrRaiseLastN(t){let i=this.receiveVideoController.getLastN(),n=i;if(t&&-1!==i&&i<=3)return!1;let r=this._conference.options.config.channelLastN,o=void 0===r?25:r;if((o=-1===o?25:o,t)?(n=Math.floor(this._conference.getForwardedSources().length/2))<3&&(n=3):i<o&&n++,n===i)return!1;let s=n<o;return this.receiveVideoController.setLastNLimitedByCpu(s),l_.info(`QualityController - setting lastN=${n}, limitedByCpu=${s}`),this.receiveVideoController.setLastN(n),!0}_maybeLowerReceiveResolution(){let t=this.receiveVideoController.getCurrentReceiverConstraints().constraints,i=0;if(t&&Object.keys(t).length)for(let n of Object.values(t))i=Math.max(i,n.maxHeight);let n=se.findIndex(t=>t.height<=i);180!==se[n].height&&this.receiveVideoController.setPreferredReceiveMaxFrameHeight(se[n+1].height)}_maybeSwitchVideoCodec(t){let i=this._encodeTimeStats.get(t),n=i.get(i.size()-1),r=n.codec,o=n.encodeResolution,s=n.localTrack,a=o3[s.getVideoType()];return a.findIndex(t=>t===r.toLowerCase())===a.length-1||this._limitedByCpuTimeout||(this._limitedByCpuTimeout=window.setTimeout(()=>{this._limitedByCpuTimeout=void 0;let i=this._encodeTimeStats.get(t),n=i.get(i.size()-1),a=Math.min(s.maxEnabledResolution,s.getCaptureResolution());if(n.qualityLimitationReason===lv.CPU||o<a)return this.codecController.changeCodecPreferenceOrder(s,r)},6e4)),!1}_performQualityOptimizations(t){if(!this._enableAdaptiveMode)return;let i=t.encodeResolution,n=t.localTrack,r=t.qualityLimitationReason,o=t.tpc;if(!nO(i))return;let s=n.rtcId;i===o.calculateExpectedSendResolution(n)?(this._limitedByCpuTimeout&&(window.clearTimeout(this._limitedByCpuTimeout),this._limitedByCpuTimeout=void 0),r===lv.NONE&&this.receiveVideoController.isLastNLimitedByCpu()&&(this._lastNRampupTimeout||this._isLastNRampupBlocked||(ns.sendStatsEntry(ni.ENCODER_CPU_RESTRICTED_EVENT,null,!1),this._lastNRampupTimeout=window.setTimeout(()=>{this._lastNRampupTimeout=void 0;let t=this._encodeTimeStats.get(s);t.get(t.size()-1).qualityLimitationReason===lv.CPU?this._isLastNRampupBlocked=!0:this._lowerOrRaiseLastN(!1)},this._lastNRampupTime)))):r===lv.CPU&&(this._lastNRampupTimeout&&(window.clearTimeout(this._lastNRampupTimeout),this._lastNRampupTimeout=void 0,this._isLastNRampupBlocked=!0),ns.sendStatsEntry(ni.ENCODER_CPU_RESTRICTED_EVENT,null,!0),this._maybeSwitchVideoCodec(s)||this._limitedByCpuTimeout||this._lowerOrRaiseLastN(!0)||(this.receiveVideoController.setReceiveResolutionLimitedByCpu(!0),this._maybeLowerReceiveResolution()))}_processInboundVideoStats(t,i){let n=this._conference.getActiveMediaSession();if((null==n?void 0:n.peerconnection)===t){for(let t of i){var r,o=lg(t,2);let i=o[0],n=o[1].participantId,s=null!=(r=this._notDecodingVideoTracker.get(i))?r:{consecutiveCycles:0,isIssueActive:!1,participantId:n};if(s.consecutiveCycles++,s.consecutiveCycles>=6&&!s.isIssueActive){s.isIssueActive=!0,l_.warn(`QualityController - remote video not decoding detected: ssrc=${i}, participantId=${n}`);let t={participantId:n,ssrc:i,stopped:!0};ns.sendStatsEntry(ni.REMOTE_VIDEO_DECODING_EVENT,null,t),n$.sendAnalytics(na.REMOTE_VIDEO_DECODING,t)}this._notDecodingVideoTracker.set(i,s)}for(let t of this._notDecodingVideoTracker){var s=lg(t,2);let n=s[0],r=s[1];if(!i.has(n)){if(r.isIssueActive){l_.info(`QualityController - remote video decoding resumed: ssrc=${n}, participantId=${r.participantId}`);
84let t={participantId:r.participantId,ssrc:n,stopped:!1};ns.sendStatsEntry(ni.REMOTE_VIDEO_DECODING_EVENT,null,t),n$.sendAnalytics(na.REMOTE_VIDEO_DECODING,t)}this._notDecodingVideoTracker.delete(n)}}}}_processOutboundRtpStats(t,i){if(this._conference.getActiveMediaSession().peerconnection!==t)return;let n=new Map;for(let r of i.keys()){let o=i.get(r),s=o.codec,a=o.encodeTime,d=o.qualityLimitationReason,c=o.resolution,l=o.timestamp,u=t.getTrackBySSRC(r).rtcId,h=n.get(u),p={encodeResolution:Math.min(null==c?void 0:c.height,null==c?void 0:c.width),encodeTime:a,qualityLimitationReason:d};h?(h.codec=s,h.timestamp=l,h.trackStats.push(p)):(h={codec:s,timestamp:l,trackStats:[p]},n.set(u,h))}for(let i of n.keys()){var r;let o=n.get(i),s=o.codec,a=o.timestamp,d=o.trackStats,c=d.map(t=>t.encodeTime).reduce((t,i)=>t+i,0)/d.length,l=(null!=(r=d.find(t=>t.qualityLimitationReason!==lv.NONE))?r:{}).qualityLimitationReason,u=void 0===l?lv.NONE:l,h=d.map(t=>t.encodeResolution).reduce((t,i)=>Math.max(t,i),0),p=this._conference.getLocalVideoTracks().find(t=>t.rtcId===i),m=this._encodeTimeStats.get(i),g={avgEncodeTime:c,codec:s,encodeResolution:h,localTrack:p,qualityLimitationReason:u,timestamp:a,tpc:t};if(m)m.add(g);else{let t=new ly(300);t.add(g),this._encodeTimeStats.set(i,t)}l_.debug(`Encode stats for ${p}: codec=${s}, time=${c},resolution=${h}, qualityLimitationReason=${u}`),this._performQualityOptimizations(g)}}get audioController(){return this._audioController}get codecController(){return this._codecController}get receiveVideoController(){return this._receiveVideoController}get sendVideoController(){return this._sendVideoController}dispose(){this._timer&&(clearTimeout(this._timer),this._timer=void 0),this._limitedByCpuTimeout&&(clearTimeout(this._limitedByCpuTimeout),this._limitedByCpuTimeout=void 0),this._lastNRampupTimeout&&(clearTimeout(this._lastNRampupTimeout),this._lastNRampupTimeout=void 0),this._encodeTimeStats.clear(),this._notDecodingVideoTracker.clear(),l_.info("QualityController disposed, all timeouts cleared")}}function lS(t,i,n){return(i=function(t){var i=function(t){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,"string");if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof i?i:i+""}(i))in t?Object.defineProperty(t,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[i]=n,t}let lb=(0,m.getLogger)("recording:JibriSession");class lC{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};lS(this,"_jibriJid",null),lS(this,"_statusFromJicofo",""),this._connection=t.connection,this._mode=t.mode,this._jibriJid=null,this._statusFromJicofo="",this._setSessionID(t.sessionID),this.setStatus(t.status),this._focusMucJid=t.focusMucJid}getError(){return this._error}getID(){return this._sessionID}getInitiator(){return this._initiator}getLiveStreamViewURL(){return this._liveStreamViewURL}getStatus(){return this._status?this._status:this._statusFromJicofo}getJibriJid(){return this._jibriJid}getTerminator(){return this._terminator}getMode(){return this._mode}setError(t){this._error=t}setLiveStreamViewURL(t){this._liveStreamViewURL=t}setStatus(t){this._status=t}setStatusFromJicofo(t){this._statusFromJicofo=t}setJibriJid(t){this._jibriJid=t}setInitiator(t){this._initiator=t}setTerminator(t){this._terminator=t}start(t){let i=t.appData,n=t.broadcastId,r=t.focusMucJid,o=t.streamId;return lb.info("Starting recording session"),new Promise((t,s)=>{var a;null==(a=this._connection)||a.sendIQ(lC._createIQ({action:"start",appData:i,broadcastId:n,focusMucJid:r,mode:this._mode,streamId:o}),i=>{var n,r,o;this.setStatus("pending"),this._setSessionID(null!=(r=null==(n=i)||null==(o=n.getElementsByTagName("jibri")[0])?void 0:o.getAttribute("session_id"))?r:null),t()},t=>{var i;this._setErrorFromIq(t),dr(t,{operation:"start Jibri session request",userJid:null==(i=this._connection)?void 0:i.jid}),s(t)})})}static stop(t){let i=t.connection,n=t.focusMucJid,r=t.mode;return lb.info("Stopping recording session"),new Promise((t,o)=>{null==i||i.sendIQ(lC._createIQ({action:"stop",focusMucJid:n,mode:r}),t,t=>{dr(t,{operation:"stop Jibri session request",userJid:null==i?void 0:i.jid}),o(t)})})}static _createIQ(t){let i=t.action,n=t.appData,r=t.broadcastId,o=t.focusMucJid,s=t.mode,a=t.streamId;return(0,io.$iq)({to:o,type:"set"}).c("jibri",{action:i,app_data:n,recording_mode:s,streamid:a,xmlns:"http://jitsi.org/protocol/jibri",you_tube_broadcast_id:r}).up()}_setErrorFromIq(t){let i;if(t){if("string"==typeof t)i=t;else if(1===t.nodeType){let n=t.getElementsByTagName("error");
84if((null==n?void 0:n.length)>0){let t=n[0].children;i=(null==t?void 0:t.length)>0?t[0].tagName:void 0}}}else i="timeout";this.setError(null!=i?i:"unknown")}_setSessionID(t){this._sessionID=t}}let lD=(0,m.getLogger)("recording:RecordingManager"),lT=class{constructor(t){var i,n,r;i=this,r={},(n=function(t){var i=function(t){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,"string");if("object"!=typeof n)return n;throw TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof i?i:i+""}(n="_sessions"))in i?Object.defineProperty(i,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[n]=r,this._chatRoom=t,this.onPresence=this.onPresence.bind(this),this.onMemberLeft=this.onMemberLeft.bind(this),this._chatRoom.eventEmitter.addListener(nG.PRESENCE_RECEIVED,this.onPresence),this._chatRoom.eventEmitter.addListener(nG.MUC_MEMBER_LEFT,this.onMemberLeft)}getSession(t){return this._sessions[t]}getSessionByJibriJid(t){let i;return Object.values(this._sessions).forEac
84h(n=>{n.getJibriJid()===t&&(i=n)}),i}onPresence(t){let i=t.fromHiddenDomain,n=t.isFocus,r=t.presence;n?this._handleFocusPresence(r):i&&this._handleJibriPresence(r)}onMemberLeft(t){let i=this.getSessionByJibriJid(t);if(i){let t=i.getStatus();i.setStatus(""),i.setJibriJid(null),i.getStatus()!==t&&this._emitSessionUpdate(i)}}startRecording(t){let i=new lC({...t,connection:this._chatRoom.connection});return i.start({appData:t.appData,broadcastId:t.broadcastId,focusMucJid:this._chatRoom.focusMucJid,streamId:t.streamId}).then(()=>(this.getSession(i.getID())||(this._addSession(i),this._emitSessionUpdate(i)),i)).catch(t=>(this._emitSessionUpdate(i),Promise.reject(t)))}stopRecording(t){let i=this.getSession(t);return lC.stop({connection:this._chatRoom.connection,focusMucJid:this._chatRoom.focusMucJid,mode:null==i?void 0:i.getMode()})}_addSession(t){this._sessions[t.getID()]=t}_createSession(t,i,n){let r=new lC({connection:this._chatRoom.connection,focusMucJid:this._chatRoom.focusMucJid,mode:n,sessionID:t,status:i});return this._addSession(r),r}_emitSessionUpdate(t,i){this._chatRoom.eventEmitter.emit(nG.RECORDER_STATE_CHANGED,t,i)}_handleFocusPresence(t){let i=function(t){let i=null==t?void 0:t.getElementsByTagName("jibri-recording-status")[0];if(i)return{error:i.getAttribute("failure_reason"),initiator:i.getAttribute("initiator"),recordingMode:i.getAttribute("recording_mode"),sessionID:i.getAttribute("session_id"),status:i.getAttribute("status")}}(t);if(!i)return;let n=i.error,r=i.initiator,o=i.recordingMode,s=i.sessionID,a=i.status,d=this.getSession(s);d||"off"!==a?d&&d.getStatus()===a&&d.getError()===n?lD.warn("Ignoring duplicate presence update: ",JSON.stringify(i)):(d||(d=this._createSession(s,a,o)),d.setStatusFromJicofo(a),"visitor"===this._chatRoom.role&&d.setStatus(a),n&&d.setError(n),this._emitSessionUpdate(d,r)):lD.warn("Ignoring recording presence update","Received a new session with status off.")}_handleJibriPresence(t){let i=function(t){var i,n,r;return{liveStreamViewURL:null==(i=t.getElementsByTagName("live-stream-view-url")[0])?void 0:i.textContent,mode:null==(n=t.getElementsByTagName("mode")[0])||null==(n=n.textContent)?void 0:n.toLowerCase(),sessionID:null==(r=t.getElementsByTagName("session_id")[0])?void 0:r.textContent}}(t),n=i.liveStreamViewURL,r=i.mode,o=i.sessionID;if(!o)return void lD.warn("Ignoring potential jibri presence due to no session id.");let s=this.getSession(o);s||(s=this._createSession(o,"on",r)),s.setStatus("on"),s.setJibriJid(t.getAttribute("from")),s.setLiveStreamViewURL(n),this._emitSessionUpdate(s)}},lx=(0,m.getLogger)("stats:AvgRTPStatsReporter");class lR{constructor(t){this._name=t,this._count=0,this._sum=0,this._samples=[]}addNext(t){void 0!==t&&("number"!=typeof t?lx.error(`${this._name} - invalid value for idx: ${this._count}`,t):nO(t)&&(this._sum+=t,this._samples.push(t),this._count+=1))}calculate(){return 0===this._count?NaN:this._sum/this._count}appendReport(t){t[`${this._name}_avg`]=this.calculate(),t[`${this._name}_samples`]=JSON.stringify(this._samples)}reset(){this._samples=[],this._sum=0,this._count=0}}class lA{constructor(t,i,n){this.isP2P=i,this._n=n,this._sampleIdx=0,this._avgRTT=new lR("rtt"),this._avgRemoteRTTMap=new Map,this._avgRtpStatsReporter=t,this._avgEnd2EndRTT=void 0,this._onConnectionStats=t=>{this.isP2P===t.isP2P&&this._calculateAvgStats(t.getStats())};const r=t._conference;r.statistics.addConnectionStatsListener(this._onConnectionStats),this.isP2P||(this._onUserLeft=t=>this._avgRemoteRTTMap.delete(t),r.on(tT.USER_LEFT,this._onUserLeft),this._onRemoteStatsUpdated=(t,i)=>this._processRemoteStats(t,i),r.on(sY.REMOTE_STATS_UPDATED,this._onRemoteStatsUpdated))}_calculateAvgStats(t){var i,n;if(t){if(nf.supportsRTTStatistics()&&null!=(i=t.transport)&&i.length&&this._avgRTT.addNext(t.transport[0].rtt),this._sampleIdx+=1,this._sampleIdx>=this._n){if(nf.supportsRTTStatistics()){let i={conference_size:this._avgRtpStatsReporter._conference.getParticipantCount(),p2p:this.isP2P};if(null!=(n=t.transport)&&n.length&&Object.assign(i,{local_candidate_type:t.transport[0].localCandidateType,remote_candidate_type:t.transport[0].remoteCandidateType,transport_type:t.transport[0].type}
84),this._avgRTT.appendReport(i),this.isP2P){let t=this._avgRtpStatsReporter.jvbStatsMonitor._avgEnd2EndRTT;nO(t)&&(i.rtt_diff=this._avgRTT.calculate()-t)}else{let t=this._calculateAvgRemoteRTT(),n=this._avgRTT.calculate();this._avgEnd2EndRTT=n+t,nO(n)&&nO(t)&&(i.end2end_rtt_avg=this._avgEnd2EndRTT)}n$.sendAnalytics(nm(i))}this._resetAvgStats()}}else lx.error("No stats")}_calculateAvgRemoteRTT(){let t=0,i=0;for(let n of this._avgRemoteRTTMap.values()){let r=n.calculate();nO(r)&&(i+=r,t+=1,n.reset())}return 0===t?NaN:i/t}_processRemoteStats(t,i){let n="number"==typeof i.jvbRTT,r=this._avgRemoteRTTMap.get(t);!r&&n&&(r=new lR(`${t}_stat_rtt`),this._avgRemoteRTTMap.set(t,r)),n?r.addNext(i.jvbRTT):r&&this._avgRemoteRTTMap.delete(t)}_resetAvgStats(){this._avgRTT.reset(),this._avgRemoteRTTMap&&this._avgRemoteRTTMap.clear(),this._sampleIdx=0}dispose(){let t=this._avgRtpStatsReporter._conference;t.statistics.removeConnectionStatsListener(this._onConnectionStats),this.isP2P||(t.off(sY.REMOTE_STATS_UPDATED,this._onRemoteStatsUpdated),t.off(tT.USER_LEFT,this._onUserLeft))}}class lw{constructor(t,i){this._n=i,i>0?(lx.info(`Avg RTP stats will be calculated every ${i} samples`),this._sampleIdx=0,this._conference=t,this._avgAudioBitrateUp=new lR("bitrate_audio_upload"),this._avgAudioBitrateDown=new lR("bitrate_audio_download"),this._avgVideoBitrateUp=new lR("bitrate_video_upload"),this._avgVideoBitrateDown=new lR("bitrate_video_download"),this._avgBandwidthUp=new lR("bandwidth_upload"),this._avgBandwidthDown=new lR("bandwidth_download"),this._avgPacketLossTotal=new lR("packet_loss_total"),this._avgPacketLossUp=new lR("packet_loss_upload"),this._avgPacketLossDown=new lR("packet_loss_download"),this._avgRemoteFPS=new lR("framerate_remote"),this._avgRemoteScreenFPS=new lR("framerate_screen_remote"),this._avgLocalFPS=new lR("framerate_local"),this._avgLocalScreenFPS=new lR("framerate_screen_local"),this._avgRemoteCameraPixels=new lR("pixels_remote"),this._avgRemoteScreenPixels=new lR("pixels_screen_remote"),this._avgLocalCameraPixels=new lR("pixels_local"),this._avgLocalScreenPixels=new lR("pixels_screen_local"),this._avgCQ=new lR("connection_quality"),this._cachedTransportStats=void 0,this._onLocalStatsUpdated=t=>{this._calculateAvgStats(t),this._maybeSendTransportAnalyticsEvent(t)},t.on(sY.LOCAL_STATS_UPDATED,this._onLocalStatsUpdated),this._onP2PStatusChanged=()=>{lx.debug("Resetting average stats calculation"),this._resetAvgStats(),this.jvbStatsMonitor._resetAvgStats(),this.p2pStatsMonitor._resetAvgStats()},t.on(tT.P2P_STATUS,this._onP2PStatusChanged),this._onJvb121StatusChanged=i=>{i===t.jvbJingleSession&&(lx.info("Resetting JVB avg RTP stats"),this._resetAvgJvbStats())},t.on(tT._MEDIA_SESSION_ACTIVE_CHANGED,this._onJvb121StatusChanged),this.jvbStatsMonitor=new lA(this,!1,i),this.p2pStatsMonitor=new lA(this,!0,i)):lx.info("Avg RTP stats reports are disabled.")}_calculateAvgStats(t){if(!t)return void lx.error("No stats");let i=this._conference.isP2PActive(),n=this._conference.getParticipantCount();if(!i&&n<2)return;let r=t.bitrate,o=t.bandwidth,s=t.packetLoss,a=t.framerate,d=t.resolution;if(r)if(o)if(s)if(a)if(d){if(this._avgAudioBitrateUp.addNext(r.audio.upload),this._avgAudioBitrateDown.addNext(r.audio.download),this._avgVideoBitrateUp.addNext(r.video.upload),this._avgVideoBitrateDown.addNext(r.video.download),nf.supportsBandwidthStatistics()&&(this._avgBandwidthUp.addNext(o.upload),this._avgBandwidthDown.addNext(o.download)),this._avgPacketLossUp.addNext(s.upload),this._avgPacketLossDown.addNext(s.download),this._avgPacketLossTotal.addNext(s.total),this._avgCQ.addNext(t.connectionQuality),a&&(this._avgRemoteFPS.addNext(this._calculateAvgVideoFps(a,!1,rw.CAMERA)),this._avgRemoteScreenFPS.addNext(this._calculateAvgVideoFps(a,!1,rw.DESKTOP)),this._avgLocalFPS.addNext(this._calculateAvgVideoFps(a,!0,rw.CAMERA)),this._avgLocalScreenFPS.addNext(this._calculateAvgVideoFps(a,!0,rw.DESKTOP))),d&&(this._avgRemoteCameraPixels.addNext(this._calculateAvgVideoPixels(d,!1,rw.CAMERA)),this._avgRemoteScreenPixels.addNext(this._calculateAvgVideoPixels(d,!1,rw.DESKTOP)),this._avgLocalCameraPixels.addNext(this._calculateAvgVideoPixels(d,!0,rw.CAMERA)),this._avgLocalScreenPixels.addNext(this._calculateAvgVideoPixels(d,!0,rw.DESKTOP))),this._sampleIdx+=1,this._sampleIdx>=this._n){var c;let r={conference_size:n,p2p:i};null!=(c=t.transport)&&c.length&&Object.assign(r,{local_candidate_type:t.transport[0].localCandidateType,remote_candidate_type:t.transport[0].remoteCandidateType,transport_type:t.transport[0].type}),this._avgAudioBitrateUp.appendReport(r),this._avgAudioBitrateDown.appendReport(r),this._avgVideoBitrateUp.appendReport(r),this._avgVideoBitrateDown.appendReport(r),nf.supp
84ortsBandwidthStatistics()&&(this._avgBandwidthUp.appendReport(r),this._avgBandwidthDown.appendReport(r)),this._avgPacketLossUp.appendReport(r),this._avgPacketLossDown.appendReport(r),this._avgPacketLossTotal.appendReport(r),this._avgRemoteFPS.appendReport(r),nO(this._avgRemoteScreenFPS.calculate())&&this._avgRemoteScreenFPS.appendReport(r),this._avgLocalFPS.appendReport(r),nO(this._avgLocalScreenFPS.calculate())&&this._avgLocalScreenFPS.appendReport(r),this._avgRemoteCameraPixels.appendReport(r),nO(this._avgRemoteScreenPixels.calculate())&&this._avgRemoteScreenPixels.appendReport(r),this._avgLocalCameraPixels.appendReport(r),nO(this._avgLocalScreenPixels.calculate())&&this._avgLocalScreenPixels.appendReport(r),this._avgCQ.appendReport(r),n$.sendAnalytics(nm(r)),this._resetAvgStats()}}else lx.error("No resolution");else lx.error('No "framerate"');else lx.error('No "packetloss"');else lx.error('No "bandwidth"');else lx.error('No "bitrate"')}_calculateAvgVideoPixels(t,i,n){let r=0,o=0,s=this._conference.myUserId();for(let a of Object.keys(t))if(i?a===s:a!==s){let s=i?null:this._conference.getParticipantById(a),d=t[a];if((i||s)&&d){let t=this._calculatePeerAvgVideoPixels(d,s,n);nO(t)&&(r+=t,o+=1)}}return 0===o?NaN:r/o}_calculatePeerAvgVideoPixels(t,i,n){let r=Object.keys(t).map(t=>Number(t)),o=null,s=this._conference.getActivePeerConnection();i?(o=i.getTracksByMediaType(nx.VIDEO))&&(r=r.filter(t=>o.find(i=>!i.isMuted()&&i.getSsrc()===t&&i.videoType===n))):(o=this._conference.getLocalTracks(nx.VIDEO),r=r.filter(t=>o.find(i=>!i.isMuted()&&s.getLocalSSRC(i)===t&&i.videoType===n)));let a=0,d=0;for(let i of r){let n=Number(t[i].height)*Number(t[i].width);nO(n)&&n>0&&(a+=n,d+=1)}return 0===d?NaN:a/d}_calculateAvgVideoFps(t,i,n){let r=0,o=0,s=this._conference.myUserId();for(let a of Object.keys(t))if(i?a===s:a!==s){let s=i?null:this._conference.getParticipantById(a),d=t[a];if((i||s)&&d){let t=this._calculatePeerAvgVideoFps(d,s,n);nO(t)&&(r+=t,o+=1)}}return 0===o?NaN:r/o}_calculatePeerAvgVideoFps(t,i,n){let r=Object.keys(t).map(t=>Number(t)),o=null,s=this._conference.getActivePeerConnection();i?(o=i.getTracksByMediaType(nx.VIDEO))&&(r=r.filter(t=>o.find(i=>!i.isMuted()&&i.getSsrc()===t&&i.videoType===n))):(o=this._conference.getLocalTracks(nx.VIDEO),r=r.filter(t=>o.find(i=>!i.isMuted()&&s.getLocalSSRC(i)===t&&i.videoType===n)));let a=0,d=0;for(let i of r){let n=Number(t[i]);nO(n)&&n>0&&(a+=n,d+=1)}return 0===d?NaN:a/d}_maybeSendTransportAnalyticsEvent(t){var i;if(null==t||null==(i=t.transport)||!i.length)return;let n={local_candidate_type:t.transport[0].localCandidateType,p2p:t.transport[0].p2p,remote_candidate_type:t.transport[0].remoteCandidateType,transport_type:t.transport[0].type};this._cachedTransportStats&&ir(n,this._cachedTransportStats)||(this._cachedTransportStats=n,n$.sendAnalytics({action:"transport.stats",attributes:n,type:na.TYPE_OPERATIONAL}))}_resetAvgJvbStats(){this._resetAvgStats(),this.jvbStatsMonitor._resetAvgStats()}_resetAvgStats(){this._avgAudioBitrateUp.reset(),this._avgAudioBitrateDown.reset(),this._avgVideoBitrateUp.reset(),this._avgVideoBitrateDown.reset(),this._avgBandwidthUp.reset(),this._avgBandwidthDown.reset(),this._avgPacketLossUp.reset(),this._avgPacketLossDown.reset(),this._avgPacketLossTotal.reset(),this._avgRemoteFPS.reset(),this._avgRemoteScreenFPS.reset(),this._avgLocalFPS.reset(),this._avgLocalScreenFPS.reset(),this._avgRemoteCameraPixels.reset(),this._avgRemoteScreenPixels.reset(),this._avgLocalCameraPixels.reset(),this._avgLocalScreenPixels.reset(),this._avgCQ.reset(),this._sampleIdx=0}dispose(){this._conference.off(tT.P2P_STATUS,this._onP2PStatusChanged),this._conference.off(sY.LOCAL_STATS_UPDATED,this._onLocalStatsUpdated),this._conference.off(tT._MEDIA_SESSION_ACTIVE_CHANGED,this._onJvb121StatusChanged),this.jvbStatsMonitor.dispose(),this.p2pStatsMonitor.dispose()}}let lI=class{constructor(t,i,n){this._userId=t,this.setDisplayName(i),this._isLocalStats=n||!1,this.setDominantSpeaker(!1,!1),this.totalDominantSpeakerTime=0,this._dominantSpeakerStart=0,this._isDominantSpeaker=!1,this._isSilent=!1,this._hasLeft=!1,this._faceLandmarks=[]}getUserId(){return this._userId}getDisplayName(){return this.displayName}
84setDisplayName(t){this.displayName=t}isLocalStats(){return this._isLocalStats}isDominantSpeaker(){return this._isDominantSpeaker}setDominantSpeaker(t,i){if(this.isDominantSpeaker()||!t||i){if(this.isDominantSpeaker()){if(t){if(this._isSilent&&!i)this._dominantSpeakerStart=Date.now();else if(!this._isSilent&&i){let t=Date.now()-this._dominantSpeakerStart;this.totalDominantSpeakerTime+=t,this._dominantSpeakerStart=0}}else if(!this._isSilent){let t=Date.now()-this._dominantSpeakerStart;this.totalDominantSpeakerTime+=t,this._dominantSpeakerStart=0}}}else this._dominantSpeakerStart=Date.now();this._isDominantSpeaker=t,this._isSilent=i}getTotalDominantSpeakerTime(){let t=this.totalDominantSpeakerTime;return this.isDominantSpeaker()&&!this._isSilent&&(t+=Date.now()-this._dominantSpeakerStart),t}hasLeft(){return this._hasLeft}markAsHasLeft(){this._hasLeft=!0,this.setDominantSpeaker(!1,!1)}getFaceLandmarks(){return this._faceLandmarks}setFaceLandmarks(t){this._faceLandmarks=t}addFaceLandmarks(t){this._faceLandmarks.push(t)}};class lk{constructor(t){this.stats={dominantSpeakerId:null,users:{}};const i=t.myUserId();this.stats.users[i]=new lI(i,null,!0),this.conference=t,t.addEventListener(tT.DOMINANT_SPEAKER_CHANGED,this._onDominantSpeaker.bind(this)),t.addEventListener(tT.USER_JOINED,this._onUserJoin.bind(this)),t.addEventListener(tT.USER_LEFT,this._onUserLeave.bind(this)),t.addEventListener(tT.DISPLAY_NAME_CHANGED,this._onDisplayNameChange.bind(this)),t.on(tT.ENDPOINT_MESSAGE_RECEIVED,(t,i)=>{let n=i.type,r=i.faceLandmarks;"face-landmarks"===n&&this._onFaceLandmarkAdd(t.getId(),r)}),t.xmpp&&t.xmpp.addListener(nG.SPEAKER_STATS_RECEIVED,this._updateStats.bind(this))}_onDominantSpeaker(t,i,n){let r=this.stats.users[this.stats.dominantSpeakerId],o=this.stats.users[t];r&&r.setDominantSpeaker(!1,!1),o&&o.setDominantSpeaker(!0,n),this.stats.dominantSpeakerId=t}_onUserJoin(t,i){i.isHidden()||this.stats.users[t]||(this.stats.users[t]=new lI(t,i.getDisplayName(),!1))}_onUserLeave(t){let i=this.stats.users[t];i&&i.markAsHasLeft()}_onDisplayNameChange(t,i){let n=this.stats.users[t];n&&n.setDisplayName(i)}_onFaceLandmarkAdd(t,i){let n=this.stats.users[t];n&&i&&n.addFaceLandmarks(i)}getStats(){return this.stats.users}_updateStats(t){for(let i in t){let n,r=this.conference.getParticipantById(i);null!=r&&r.isHidden()||(this.stats.users[i]?(n=this.stats.users[i]).getDisplayName()||n.setDisplayName(t[i].displayName):(n=new lI(i,t[i].displayName,!1),this.stats.users[i]=n,n.markAsHasLeft()),n.totalDominantSpeakerTime=t[i].totalDominantSpeakerTime,Array.isArray(t[i].faceLandmarks)&&n.setFaceLandmarks(t[i].faceLandmarks))}}}let lO=(0,m.getLogger)("misc:ComponentsVersions");class lN{constructor(t){this.versions={},this.conference=t,this.conference.addCommandListener("versions",this._processVersions.bind(this))}_processVersions(t,i,n){this.conference.isFocus(n)?t.children.forEach(t=>{let i=t.attributes.name,n=t.value;this.versions[i]!==n&&(this.versions[i]=n,lO.info(`Got ${i} version: ${n}`))}):lO.warn(`Received versions not from the focus user: ${t}`,n)}getComponentVersion(t){return this.versions[t]}}let lP=function(t){return t.STATUS_AVAILABLE="available",t.STATUS_BUSY="busy",t.STATUS_UNDEFINED="undefined",t}({}),lL=function(t){return t.STATE_FAILED="failed",t.STATE_OFF="off",t.STATE_ON="on",t.STATE_PENDING="pending",t.STATE_RETRYING="retrying",t}({}),lM=function(t){return t.ERROR_NO_CONNECTION="error_no_connection",t.ERROR_SESSION_EXISTS="error_session_already_exists",t}({}),lF=lP.STATUS_AVAILABLE,lj=lP.STATUS_UNDEFINED,lV=lP.STATUS_BUSY,lB=lL.STATE_ON,lU=lL.STATE_OFF,l$=lL.STATE_PENDING,lH=lL.STATE_RETRYING,lJ=lL.STATE_FAILED,lq=lM.ERROR_NO_CONNECTION,lG=lM.ERROR_SESSION_EXISTS,lz=(0,m.getLogger)("videosipgw:JitsiVideoSIPGWSession"),lK="STATE_CHANGED";class lW extends rI{constructor(t,i,n){super(),this.sipAddress=t,this.displayName=i,this.chatRoom=n,this.state=void 0}_sendJibriIQ(t){let i={action:t,displayname:this.displayName,sipaddress:this.sipAddress,xmlns:"http://jitsi.org/protocol/jibri"},n=(0,io.$iq)({to:this.chatRoom.focusMucJid,type:"set"}).c("jibri",i).up();lz.debug(`${t} video SIP GW session`,n.nodeTree),this.chatRoom.connection.sendIQ(n,()=>{},i=>{dr(i,{operation:`${t} video SIP GW session`,roomJid:this.chatRoom.roomjid,sipAddress:this.sipAddress,userJid:this.chatRoom.connection.jid}),this.setState(lJ)},void 0)}stop(){this.state!==lU&&this.state!==lJ?this._sendJibriIQ("stop"):lz.warn("Video SIP GW session already stopped or failed!")}start(){this.state!==lB&&this.state!==lU&&this.state!==l$&&this.state!==lH?this._sendJibriIQ("start"):lz.warn("Video SIP GW session already started!")}setState(t,i){if(t===this.state)return;let n=this.state;this.state=t,this.eventEmitter.emit(lK,{address:this.sipAddress,displayName:this.displayName,failureReason:i,newState:this.state,oldState:n})}addStateListener(t){this.addListener(lK,t)}removeStateListener(t){this.removeListener(lK,t)}}let lY=(0,m.getLogger)("videosipgw:VideoSIPGW");class lQ{constructor(t){this.chatRoom=t,this.eventEmitter=t.eventEmitter,lY.debug("creating VideoSIPGW"),this.sessions={},this.sessionStateChangeListener=this.sessionStateChanged.bind(this),t.addPresenceListener("jibri-sip-call-state",this.handleJibriSIPState.bind(this))}handleJibriSIPState(t){let i=t.attributes;if(!i)return;lY.debug("Handle video sip gw state : ",i);let n=i.state;if(n!==this.state)switch(n){case lB:case lU:case l$:case lH:case lJ:{let t=i.sipaddress;if(!t)return;let r=this.sessions[t];r?r.setState(n,i.failure_reason):lY.warn("Video SIP GW session not found:",t)}}}createVideoSIPGWSession(t,i){if(this.sessions[t])return lY.warn("There was already a Video SIP GW session for address",t),Error(lG);let n=new lW(t,i,this.chatRoom);return n.addStateListener(this.sessionStateChangeListener),this.sessions[t]=n,n}sessionStateChanged(t){let i=t.address;if(t.newState===lU||t.newState===lJ){let t=this.sessions[i];if(!t)return void lY.error("Missing Video SIP GW session with address:",i);t.removeStateListener(this.sessionStateChangeListener),delete this.sessions[i]}this.eventEmitter.emit(nG.VIDEO_SIP_GW_SESSION_STATE_CHANGED,t)}}let lX=(0,m.getLogger)("xmpp:SignalingLayerImpl"),lZ="SourceInfo";class l0 extends o5{constructor(){super(),this._ssrcOwners=new Map,this._chatRoom=null,this._localSourceState={},this._remoteSourceState={}}_addLocalSourceInfoToPresence(){return!!this._chatRoom&&this._chatRoom.addOrReplaceInPresence(lZ,{value:JSON.stringify(this._localSourceState)})}_bindChatRoomEventHandlers(t){let i=(t,i)=>{this.eventEmitter.emit(o1.PEER_MUTED_CHANGED,t,nx.AUDIO,i)};this._audioMuteHandler=(t,n)=>{this._doesEndpointSendNewSourceInfo(n)||i(n,"true"===t.value)},t.addPresenceListener("audiomuted",this._audioMuteHandler);let n=(t,i)=>{this.eventEmitter.emit(o1.PEER_MUTED_CHANGED,t,nx.VIDEO,i)};this._videoMuteHandler=(t,i)=>{this._doesEndpointSendNewSourceInfo(i)||n(i,"true"===t.value)},t.addPresenceListener("videomuted",this._videoMuteHandler);let r=(t,i)=>{this.eventEmitter.emit(o1.PEER_VIDEO_TYPE_CHANGED,t,i)};this._videoTypeHandler=(t,i)=>{this._doesEndpointSendNewSourceInfo(i)||r(i,t.value)},t.addPresenceListener("videoType",this._videoTypeHandler),this._sourceInfoHandler=(t,i)=>{let n=i,r=iX(t.value),o=this._doesEndpointSendNewSourceInfo(n),s=this._remoteSourceState[n]||(this._remoteSourceState[n]={});for(let t of Object.keys(r)){var a;let n=!1,d=o6(t),c=!!r[t].muted,l=s[t]||(s[t]={sourceName:t});l.muted!==c&&(n=!0,l.muted=c,o&&!this._localSourceState[t]&&this.eventEmitter.emit(o1.SOURCE_MUTED_CHANGED,t,c));let u=d===nx.VIDEO?null!=(a=r[t].videoType)?a:rw.CAMERA:void 0;l.videoType!==u&&(l.videoType=u,n=!0,o&&!this._localSourceState[t]&&this.eventEmitter.emit(o1.SOURCE_VIDEO_TYPE_CHANGED,t,u)),n&&nR.isSsrcRewritingSupported()&&this.eventEmitter.emit(o1.SOURCE_UPDATED,t,i,c,u)}let d=Object.keys(r);for(let t of Object.keys(s))-1===d.indexOf(t)&&delete s[t]},t.addPresenceListener("SourceInfo",this._sourceInfoHandler),this._memberLeftHandler=t=>
84{let i=io.Strophe.getResourceFromJid(t);delete this._remoteSourceState[i]},t.addEventListener(nG.MUC_MEMBER_LEFT,this._memberLeftHandler)}_doesEndpointSendNewSourceInfo(t){var i;let n=null==(i=this._chatRoom)?void 0:i.getLastPresence(t);return!!(null==n?void 0:n.find(t=>t.tagName===lZ))}_logOwnerChangedMessage(t){nR.isSsrcRewritingSupported()?lX.debug(t):lX.error(t)}getPeerMediaInfo(t,i,n){var r,o,s;let a=null==(r=this._chatRoom)?void 0:r.getLastPresence(t);if(!a)return void lX.warn(`getPeerMediaInfo - no presence stored for: ${t}`);if(!this._doesEndpointSendNewSourceInfo(t))return(()=>{if(this._chatRoom)return this._chatRoom.getMediaPresenceInfo(t,i);lX.warn("Requested peer media info, before room was set")})();if(n)return this.getPeerSourceInfo(t,n);let d={muted:!0};if(i===nx.VIDEO){d.videoType=void 0;let t=dL(a,"jitsi_participant_codecList"),i=dL(a,"jitsi_participant_codecType");t.length?d.codecList=null!=(o=null==(s=t[0].value)?void 0:s.split(","))?o:[]:i.length>0&&(d.codecType=i[0].value)}return d}getPeerSourceInfo(t,i){var n;let r=o6(i)===nx.VIDEO?{muted:!0,sourceName:i,videoType:rw.CAMERA}:{muted:!0,sourceName:i};return this._remoteSourceState[t]?null!=(n=this._remoteSourceState[t][i])?n:r:void 0}getSSRCOwner(t){var i;return null==(i=this._ssrcOwners.get(t))?void 0:i.endpointId}getTrackSourceName(t){var i;return null==(i=this._ssrcOwners.get(t))?void 0:i.sourceName}removeSSRCOwners(t){if(null!=t&&t.length)for(let i of t)this._ssrcOwners.delete(i)}setChatRoom(t){let i=this._chatRoom;this._chatRoom=t,i&&(i.removePresenceListener("audiomuted",this._audioMuteHandler),i.removePresenceListener("videomuted",this._videoMuteHandler),i.removePresenceListener("videoType",this._videoTypeHandler),this._sourceInfoHandler&&i.removePresenceListener(lZ,this._sourceInfoHandler),this._memberLeftHandler&&i.removeEventListener(nG.MUC_MEMBER_LEFT,this._memberLeftHandler)),t&&(this._bindChatRoomEventHandlers(t),this._addLocalSourceInfoToPresence())}setSSRCOwner(t,i,n){if("number"!=typeof t)throw TypeError(`SSRC(${t}) must be a number`);let r=this._ssrcOwners.get(t);if(r){let t=r.endpointId,o=r.sourceName;t===i&&o===n||this._logOwnerChangedMessage(`SSRC owner re-assigned from ${r}(source-name=${o}) to ${i}(source-name=${n})`)}this._ssrcOwners.set(t,{endpointId:i,sourceName:n})}setTrackMuteStatus(t,i){return this._localSourceState[t]||(this._localSourceState[t]={}),this._localSourceState[t].muted=i,lX.debug(`Mute state of ${t} changed to muted=${i}`),!!this._chatRoom&&this._addLocalSourceInfoToPresence()}setTrackVideoType(t,i){return this._localSourceState[t]||(this._localSourceState[t]={}),this._localSourceState[t].videoType!==i&&(this._localSourceState[t].videoType=i===rw.CAMERA?void 0:i,this._addLocalSourceInfoToPresence())}updateSsrcOwnersOnLeave(t){let i=[];this._ssrcOwners.forEach((n,r)=>{n.endpointId===t&&i.push(r)}),null!=i&&i.length&&this.removeSSRCOwners(i)}}let l1=function(t){return t.CAMERA="camera",t.DESKTOP="desktop",t.DESKTOP_HIGH_FPS="desktop_high_fps",t.NONE="none",t}({}),l2=(0,m.getLogger)("core:JitsiConference"),l6="en-US";function l8(t){return"string"==typeof t&&Object.values(oZ).find(i=>i===t.toLowerCase())||null}class l5 extends rI{constructor(t){var i,n,r,o;
84if(super(),!t.name||t.name.toLowerCase()!==t.name.toString()){const i="Invalid conference name (no conference name passed or it contains invalid characters like capital letters)!",n=t.name?`roomName=${t.name}; condition - ${t.name.toLowerCase()}!==${t.name.toString()}`:"No room name passed!";throw l2.error(`${i} ${n}`),Error(i)}if(this.connection=t.connection,this._xmpp=null==(i=this.connection)?void 0:i.xmpp,this._xmpp.isRoomCreated(t.name,t.customDomain)){const t="A conference with the same name has already been created!";throw delete this.connection,delete this._xmpp,l2.error(t),Error(t)}this.options=t,this.eventManager=new nK(this),this.participants=new Map,this._signalingLayer=new l0,this._init(t),this.componentsVersions=new lN(this),this.jvbJingleSession=null,this.lastDominantSpeaker=null,this.dtmfManager=null,this.somebodySupportsDTMF=!1,this.authEnabled=!1,this.startMutedPolicy={audio:!1,video:!1},this.isMutedByFocus=!1,this.isVideoMutedByFocus=!1,this.isDesktopMutedByFocus=!1,this.mutedByFocusActor=null,this.mutedVideoByFocusActor=null,this.mutedDesktopByFocusActor=null,this.wasStopped=!1,this.properties={},this.connectionQuality=new sX(this,this.eventEmitter,t),this.avgRtpStatsReporter=new lw(this,t.config.avgRtpStatsN||15),this.isJvbConnectionInterrupted=!1,this.speakerStatsCollector=new lk(this),this.deferredStartP2PTask=null;const s=Number.parseInt(String((null==(n=t.config.p2p)?void 0:n.backToP2PDelay)||5),10);this.backToP2PDelay=nO(s)?s:5,l2.info(`backToP2PDelay: ${this.backToP2PDelay}`),this.isP2PConnectionInterrupted=!1,this.p2p=!1,this.p2pJingleSession=null,this.videoSIPGWHandler=new lQ(this.room),this.recordingManager=new lT(this.room),this._conferenceJoinAnalyticsEventSent=void 0,this.isE2EESupported()&&(l2.info("End-to-End Encryption is supported"),this._e2eEncryption=new c1(this)),nR.isRunInLiteModeEnabled()&&(l2.info("Lite mode enabled"),this._liteModeContext=new le(this)),this._audioSenderLimitReached=void 0,this._videoSenderLimitReached=void 0,this._firefoxP2pEnabled=nf.isVersionGreaterThan(109)&&(null==(r=null==(o=this.options.config.testing)?void 0:o.enableFirefoxP2p)||r),this._iceRestarts=0,this._unsubscribers=[]}static resourceCreator(t,i){var n;let r;return i?r=i5.randomHexString(8).toLowerCase():(r=null==(n=io.Strophe.getNodeFromJid(t))?void 0:n.substr(0,8).toLowerCase())&&/[0-9a-f]{8}/g.test(r)||(r=i5.randomHexString(8).toLowerCase()),r}_init(t){var i,n,r,o,s,a,d,c,l,u,h,p,m,g,f,_,v,y,E,S,b,C;this.eventManager.setupXMPPListeners();let D=this.options.config;this._statsCurrentId=null!=(i=D.statisticsId)?i:ne.callStatsUserName,this.room=this._xmpp.createRoom(this.options.name,{...D,statsId:this._statsCurrentId},l5.resourceCreator),this._signalingLayer.setChatRoom(this.room),this._signalingLayer.on(o1.SOURCE_UPDATED,(t,i,n,r)=>{let o=this.participants.get(i),s=o6(t);o&&(o._setSources(s,n,t,r),this.eventEmitter.emit(tT.PARTICIPANT_SOURCE_UPDATED,o))}),this._onIceConnectionEstablished=this._onIceConnectionEstablished.bind(this),this.room.addListener(nG.CONNECTION_ESTABLISHED,this._onIceConnectionEstablished),this._onIceConnectionFailed=this._onIceConnectionFailed.bind(this),this.room.addListener(nG.CONNECTION_ICE_FAILED,this._onIceConnectionFailed),this._onIceConnectionInterrupted=this._onIceConnectionInterrupted.bind(this),this.room.addListener(nG.CONNECTION_INTERRUPTED,this._onIceConnectionInterrupted),this._onIceConnectionRestored=this._onIceConnectionRestored.bind(this),this.room.addListener(nG.CONNECTION_RESTORED,this._onIceConnectionRestored),this._onP2PTerminationRequired=this._onP2PTerminationRequired.bind(this),this.room.addListener(nG.P2P_TERMINATION_REQUIRED,this._onP2PTerminationRequired),this._updateProperties=this._updateProperties.bind(this),this.room.addListener(nG.CONFERENCE_PROPERTIES_CHANGED,this._updateProperties),this._sendConferenceJoinAnalyticsEvent=this._sendConferenceJoinAnalyticsEvent.bind(this),this.room.addListener(nG.MEETING_ID_SET,this._sendConferenceJoinAnalyticsEvent),this._removeLocalSourceOnReject=this._removeLocalSourceOnReject.bind(this),this._updateRoomPresence=this._updateRoomPresence.bind(this),this.room.addListener(nG.SESSION_ACCEPT,this._updateRoomPresence),this.room.addListener(nG.SOURCE_ADD,this._updateRoomPresence),this.room.addListener(nG.SOURCE_ADD_ERROR,this._removeLocalSourceOnReject),this.room.addListener(nG.SOURCE_REMOVE,this._updateRoomPresence),null!=(n=D.e2eping)&&n.enabled&&(this.e2eping=new c9(this,D,(t,i)=>{try{this.sendMessage(t,i,!0)}catch(t){l2.warn("Failed to send E2E ping request or response.",null==t?void 0:t.msg)}})),this.rtc||(this.rtc=new sW(this,t),this.eventManager.setupRTCListeners(),this._registerRtcListeners(this.rtc));let T={enableAdaptiveMode:null==(r=D.videoQuality)?void 0:r.enableAdaptiveMode,jvb:{disabledCodec:l8(null==(o=D.videoQuality)?void 0:o.disabledCodec),enableAV1ForFF:null==(s=D.testing)?void 0:s.enableAV1ForFF,preferenceOrder:nf.isMobileDevice()?null==(a=D.videoQuality)?void 0:a.mobileCodecPreferenceOrder:null==(d=D.videoQuality)?void 0:d.codecPreferenceOrder,preferredCodec:l8(null==(c=D.videoQuality)?void 0:c.preferredCodec),screenshareCodec:nf.isMobileDevice()?l8(null==(l=D.videoQuality)?void 0:l.mobileScreenshareCodec):l8(null==(u=D.videoQuality)?void 0:u.screenshareCodec)},lastNRampupTime:null!=(h=null==(p=D.testing)?void 0:p.lastNRampupTime)?h:6e4,p2p:{disabledCodec:l8(null==(m=D.p2p)?void 0:m.disabledCodec),enableAV1ForFF:!0,preferenceOrder:nf.isMobileDevice()?null==(g=D.p2p)?void 0:g.mobileCodecPreferenceOrder:null==(f=D.p2p)?void 0:f.codecPreferenceOrder,preferredCodec:l8(null==(_=D.p2p)?void 0:_.preferredCodec),screenshareCodec:nf.isMobileDevice()?l8(null==(v=D.p2p)?void 0:v.mobileScreenshareCodec):l8(null==(y=D.p2p)?void 0:y.screenshareCodec)}};
84if(this.qualityController=new lE(this,T),this.statistics||(this.statistics=new n$(this,{aliasName:this._statsCurrentId,applicationName:D.applicationName,confID:null!=(b=D.confID)?b:`${this.connection.options.hosts.domain}/${this.options.name}`,roomName:this.options.name,userName:null!=(C=D.statisticsDisplayName)?C:this.myUserId()}),n$.analytics.addPermanentProperties({callstats_name:this._statsCurrentId})),this.eventManager.setupChatRoomListeners(),this.eventManager.setupStatisticsListeners(),D.enableTalkWhileMuted&&nf.supportsVADDetection())if(D.createVADProcessor){l2.info("Using VAD detection for generating talk while muted events"),this._audioAnalyser||(this._audioAnalyser=new s9(this,D.createVADProcessor));let t=new s3;t.on(s1.VAD_TALK_WHILE_MUTED,()=>this.eventEmitter.emit(tT.TALK_WHILE_MUTED)),this._audioAnalyser.addVADDetectionService(t)}else l2.warn("No VAD Processor was provided. Talk while muted detection service was not initialized!");if(D.enableNoisyMicDetection&&nf.supportsVADDetection())if(D.createVADProcessor){this._audioAnalyser||(this._audioAnalyser=new s9(this,D.createVADProcessor));let t=new s7;t.on(s1.VAD_NOISY_DEVICE,()=>this.eventEmitter.emit(tT.NOISY_MIC)),this._audioAnalyser.addVADDetectionService(t)}else l2.warn("No VAD Processor was provided. Noisy microphone detection service was not initialized!");D.enableNoAudioDetection&&!D.disableAudioLevels&&nT.isLocalStatsSupported()&&(this._noAudioSignalDetection=new s2(this),this._noAudioSignalDetection.on(s1.NO_AUDIO_INPUT,()=>this.eventEmitter.emit(tT.NO_AUDIO_INPUT)),this._noAudioSignalDetection.on(s1.AUDIO_INPUT_STATE_CHANGE,t=>this.eventEmitter.emit(tT.AUDIO_INPUT_STATE_CHANGE,t))),"channelLastN"in D&&this.setLastN(D.channelLastN),this.p2pDominantSpeakerDetection=new s6(this),null!=D&&null!=(E=D.deploymentInfo)&&E.userRegion&&this.setLocalParticipantProperty("region",D.deploymentInfo.userRegion),this.setLocalParticipantProperty("codecList",this.qualityController.codecController.getCodecPreferenceList("jvb"));let x=null!=(S=null==D?void 0:D.transcriptionLanguage)?S:l6;x!==l6&&this.setTranscriptionLanguage(x)}_registerRtcListeners(t){t.addListener(nJ.DATA_CHANNEL_OPEN,()=>{for(let t of this.rtc.localTracks)t.isVideoTrack()&&this._sendBridgeVideoTypeMessage(t)})}_sendConferenceJoinAnalyticsEvent(){var t,i;let n=this.getMeetingUniqueId();if(this._conferenceJoinAnalyticsEventSent||!n||null===this.getActivePeerConnection())return;let r=this.getConnectionTimes(),o=this.connection.getConnectionTimes(),s=window.connectionTimes["firstObtainPermissions.start"],a=window.connectionTimes["firstObtainPermissions.end"],d=null!=(t=null==(i=window.JitsiMeetJS)||null==(i=i.app)?void 0:i.connectionTimes)?t:{},c={...r,...o,...d,connectedToMUCJoinedTime:nk(r["muc.joined"],o.connected),connectingToMUCJoinedTime:nk(r["muc.joined"],o.connecting),gumDuration:nk(a,s),numberOfParticipantsOnJoin:this._numberOfParticipantsOnJoin,xmppConnectingTime:nk(o.connected,o.connecting)};n$.sendAnalytics(nd("joined",{...c,meetingId:n,participantId:`${n}.${this._statsCurrentId}`,supportsTurnInRoomMetadata:!0})),this._conferenceJoinAnalyticsEventSent=Date.now()}_sendConferenceLeftAnalyticsEvent(){let t=this.getMeetingUniqueId();t&&this._conferenceJoinAnalyticsEventSent&&n$.sendAnalytics(nd("left",{meetingId:t,participantId:`${t}.${this._statsCurrentId}`,stats:{duration:Math.floor((Date.now()-this._conferenceJoinAnalyticsEventSent)/1e3)}}))}_restartMediaSessions(){this.p2pJingleSession&&this._stopP2PSession({reasonDescription:"restart",requestRestart:!0}),this.jvbJingleSession&&this._stopJvbSession({reason:"success",reasonDescription:"restart required",requestRestart:!0,sendSessionTerminate:!0}),this._maybeStartOrStopP2P(!1)}_fireAudioLevelChangeEvent(t,i){let n=this.getActivePeerConnection();i&&n!==i||this.eventEmitter.emit(tT.TRACK_AUDIO_LEVEL_CHANGED,this.myUserId(),t)}_fireMuteChangeEvent(t){let i;if(this.isMutedByFocus&&t.isAudioTrack()&&!t.isMuted()?(this.isMutedByFocus=!1,this.room.muteParticipant(this.room.myroomjid,!1,nx.AUDIO)):this.isVideoMutedByFocus&&t.isVideoTrack()&&t.getVideoType()!==rw.DESKTOP&&!t.isMuted()?(this.isVideoMutedByFocus=!1,this.room.muteParticipant(this.room.myroomjid,!1,nx.VIDEO)):this.isDesktopMutedByFocus&&t.isVideoTrack()&&t.getVideoType()===rw.DESKTOP&&!t.isMuted()&&(this.isDesktopMutedByFocus=!1,this.room.muteParticipant(this.room.myroomjid,!1,nx.DESKTOP)),this.mutedByFocusActor&&t.isAudioTrack()){let t=io.Strophe.getResourceFromJid(this.mutedByFocusActor);i=this.participants.get(t)}else if(this.mutedVideoByFocusActor&&t.isVideoTrack()&&t.getVideoType()!==rw.DESKTOP){let t=io.Strophe.getResourceFromJid(this.mutedVideoByFocusActor);i=this.participants.get(t)}else if(this.mutedDesktopByFocusActor&&t.isVideoTrack()&&t.getVideoType()===rw.DESKTOP){let t=io.Strophe.getResourceFromJid(this.mutedDesktopByFocusActor);i=this.participants.get(t)}let n=nf.isReactNative()?t.videoType===rw.DESKTOP:nf.doesVideoMuteByStreamRemove();t.isVideoTrack()&&!n&&this._sendBridgeVideoTypeMessage(t),this.eventEmitter.emit(tT.TRACK_MUTE_CHANGED,t,i)}async _doReplaceTrack(t,i){let n=[];this.jvbJingleSession?n.push(this.jvbJingleSession.replaceTrack(t,i)):l2.info("_doReplaceTrack - no JVB JingleSession"),this.p2pJingleSession?n.push(this.p2pJingleSession.replaceTrack(t,i)):l2.info("_doReplaceTrack - no P2P JingleSession"),await Promise.all(n)}_removeLocalSourceOnReject(t,i,n,r){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];if(!t)return;let s=null==i?void 0:i.reason;l2.warn(`Source-add rejected on ${t}, reason="${s}", message="${null==i?void 0:i.message}", sourceNames=${o.join(",")}`);let a=this.getLocalTracks(n);for(let t of o.length?a.filter(t=>o.includes(t.getSourceName())):a.slice(0,1))this.eventEmitter.emit(tT.TRACK_UNMUTE_REJECTED,t)}_setupNewTrack(t){let i=t.getType();if(!t.getSourceName()){var n;let r=o2(this.myUserId(),i,null==(n=this.getLocalTracks(i))?void 0:n.length);t.setSourceName(r)}this.rtc.addLocalTrack(t),t.setConference(this),this._unsubscribers.push(t.addCancellableListener(is.TRACK_MUTE_CHANGED,this._fireMuteChangeEvent.bind(this,t))),t.isAudioTrack()&&this._unsubscribers.push(t.addCancellableListener(is.TRACK_AUDIO_LEVEL_CHANGED,this._fireAudioLevelChangeEvent.bind(this))),this.eventEmitter.emit(tT.TRACK_ADDED,t)}_setNewVideoType(t){let i=!1;return t&&(i=this._signalingLayer.setTrackVideoType(t.getSourceName(),t.videoType)||!1),i}_maybeClearSITimeout(){this._sessionInitiateTimeout&&(this.jvbJingleSession||2>this.getParticipantCount())&&(window.clearTimeout(this._sessionInitiateTimeout),this._sessionInitiateTimeout=null)}_maybeSetSITimeout(){!this.jvbJingleSession&&this.getParticipantCount()>=2&&!this._sessionInitiateTimeout&&(this._sessionInitiateTimeout=window.setTimeout(()=>{this._sessionInitiateTimeout=null,n$.sendAnalytics(nu(na.ACTION_JINGLE_SI_TIMEOUT,{p2p:!1,value:5e3}))},5e3))}_maybeClearDeferredStartP2P(){this.deferredStartP2PTask&&(l2.info("Cleared deferred start P2P task"),clearTimeout(this.deferredStartP2PTask),this.deferredStartP2PTask=null)}_removeRemoteJVBTracks(){this._removeRemoteTracks("JVB",this.jvbJingleSession.peerconnection.getRemoteTracks())}_removeRemoteP2PTracks(){this._removeRemoteTracks("P2P",this.p2pJingleSession.peerconnection.getRemoteTracks())}_removeRemoteTracks(t,i){for(let n of i)l2.info(`Removing remote ${t} track: ${n}`),this.onRemoteTrackRemoved(n)}_resumeMediaTransferForJvbConnection(){l2.info("Resuming media transfer over the JVB connection..."),this.jvbJingleSession.setMediaTransferActive(!0).then(()=>{l2.info("Resumed media transfer over the JVB connection!")}
84).catch(t=>{l2.error("Failed to resume media transfer over the JVB connection:",t)})}_setP2PStatus(t){if(this.p2p!==t){if(this.p2p=t,t){l2.info("Peer to peer connection established!"),n$.analytics.addPermanentProperties({p2pFailed:!1});let t=0!==this.getLastN();this.p2pJingleSession.setP2pVideoTransferActive(t).catch(i=>{l2.error(`Failed to sync up P2P video transfer status (${t}), ${i}`)})}else l2.info("Peer to peer connection closed!");this.dtmfManager=null,this.eventEmitter.emit(tT.P2P_STATUS,this,this.p2p),this.eventEmitter.emit(tT._MEDIA_SESSION_ACTIVE_CHANGED,this.getActiveMediaSession()),this.eventEmitter.emit(this.isConnectionInterrupted()?tT.CONNECTION_INTERRUPTED:tT.CONNECTION_RESTORED)}else l2.debug(`Called _setP2PStatus with the same status: ${t}`)}_startP2PSession(t){if(this._maybeClearDeferredStartP2P(),this.p2pJingleSession)return void l2.error("P2P session already started!");this.isP2PConnectionInterrupted=!1,this.p2pJingleSession=this.xmpp.connection.jingle.newP2PJingleSession(this.room.myroomjid,t),l2.info("Created new P2P JingleSession",this.room.myroomjid,t),this._sendConferenceJoinAnalyticsEvent(),this.p2pJingleSession.initialize(this.room,this.rtc,this._signalingLayer,{...this.options.config,codecSettings:{codecList:this.qualityController.codecController.getCodecPreferenceList("p2p"),mediaType:nx.VIDEO,screenshareCodec:this.qualityController.codecController.getScreenshareCodec("p2p")},enableInsertableStreams:this.isE2EEEnabled()||nR.isRunInLiteModeEnabled()});let i=this.getLocalTracks();this.p2pJingleSession.invite(i).then(()=>{var t;null==(t=this.p2pJingleSession)||t.addEventListener(cn.VIDEO_CODEC_CHANGED,()=>{this.eventEmitter.emit(tT.VIDEO_CODEC_CHANGED)})}).catch(t=>{l2.error("Failed to start P2P Jingle session",t),this.p2pJingleSession&&this.eventEmitter.emit(tT.CONFERENCE_FAILED,tE,t)})}_suspendMediaTransferForJvbConnection(){l2.info("Suspending media transfer over the JVB connection..."),this.jvbJingleSession.setMediaTransferActive(!1).then(()=>{l2.info("Suspended media transfer over the JVB connection !")}).catch(t=>{l2.error("Failed to suspend media transfer over the JVB connection:",t)})}_maybeStartOrStopP2P(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.isP2PEnabled()||this.isP2PTestModeEnabled()||nf.isFirefox()&&!this._firefoxP2pEnabled||this.isE2EEEnabled())return void l2.info("Auto P2P disabled");let i=this.getParticipants(),n=i.length,r=this._shouldBeInP2PMode();if(!r&&this.deferredStartP2PTask&&this._maybeClearDeferredStartP2P(),!this.p2pJingleSession&&r){var o,s;let r=n&&i[0],a=this.myUserId(),d=r.getId(),c=r.getJid();if(null!=(o=this.options.config.testing)&&o.forceInitiator)l2.debug(`Forcing P2P initiator, will start P2P with: ${c}`),this._startP2PSession(c);else if(null!=(s=this.options.config.testing)&&s.forceResponder)l2.debug(`Forcing P2P responder, will wait for the other peer ${c} to start P2P`);else{if(a>d)return void l2.debug("I'm the bigger peersId - the other peer should start P2P",a,d);if(a===d)return void l2.error("The same IDs ? ",a,d);if(t){if(this.deferredStartP2PTask)return void l2.error("Deferred start P2P task's been set already!");l2.info(`Will start P2P with: ${c} after ${this.backToP2PDelay} seconds...`),this.deferredStartP2PTask=Number(setTimeout(this._startP2PSession.bind(this,c),1e3*this.backToP2PDelay))}else l2.info(`Will start P2P with: ${c}`),this._startP2PSession(c)}}else this.p2pJingleSession&&!r&&(l2.info(`Will stop P2P with: ${this.p2pJingleSession.remoteJid}`),this.p2pJingleSession.isInitiator&&n>1&&n$.sendAnalyticsAndLog(nh(na.ACTION_P2P_SWITCH_TO_JVB)),this._stopP2PSession())}_shouldBeInP2PMode(){let t=this.getParticipants(),i=t.length,n=void 0!==t.find(t=>"poltergeist"===t.getBotType()||t.hasFeature(cx)),r=!(1!==i||n||this._hasVisitors||this._hasVisitors||this._transcribingEnabled);return l2.debug(`P2P? peerCount: ${i}, hasBotPeer: ${n} => ${r}`),r}_stopP2PSession(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.reason,n=void 0===i?"success":i,r=t.reasonDescription,o=void 0===r?"Turning off P2P session":r,s=t.requestRestart,a=void 0!==s&&s;if(!this.p2pJingleSession)return void l2.error("No P2P session to be stopped!");let d=this.isP2PActive();d&&(this.jvbJingleSession&&!a&&this._resumeMediaTransferForJvbConnection(),this._removeRemoteP2PTracks()),l2.info("Stopping remote stats for P2P connection"),this.statistics.stopRemoteStats(this.p2pJingleSession.peerconnection),this.p2pJingleSession.terminate(()=>{l2.info("P2P session terminate RESULT"),this.p2pJingleSession=null},t=>{"success"!==n&&l2.error("An error occurred while trying to terminate P2P Jingle session",t)},{reason:n,reasonDescription:o,sendSessionTerminate:!!(this.room&&this.getParticipantById(io.Stro
84phe.getResourceFromJid(this.p2pJingleSession.remoteJid)))}),this.p2pJingleSession=null,this._setP2PStatus(!1),d&&(this.jvbJingleSession&&!a?this._addRemoteJVBTracks():l2.info("Not adding remote JVB tracks - no session yet"))}_updateRoomPresence(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t)return;if(i){if(i.skip)return;i.skip=!0}let n,r,o=!1;for(let i of t.peerconnection.getLocalTracks()){let t=i.isMuted();(n=this._setTrackMuteStatus(i,t))&&l2.debug(`Updating mute state of ${i} in presence to muted=${t}`),i.getType()===nx.VIDEO&&(r=this._setNewVideoType(i))&&l2.debug(`Updating videoType in presence to ${i.getVideoType()}`),o=o||n||r}o&&this.room.sendPresence()}_updateFeatures(t){t.getFeatures().then(i=>{t._supportsDTMF=i.has("urn:xmpp:jingle:dtmf:0"),this.updateDTMFSupport(),i.has(cx)&&t.setProperty("features_jigasi",!0),i.has(cA)&&t.setProperty("features_e2ee",!0)}).catch(()=>!1)}_acceptJvbIncomingCall(t,i,n){this.jvbJingleSession=t,this.room.connectionTimes["session.initiate"]=n,this._sendConferenceJoinAnalyticsEvent(),this.wasStopped&&n$.sendAnalyticsAndLog(nu(na.ACTION_JINGLE_RESTART,{p2p:!1}));let r=sy(sb(i,':scope>bridge-session[*|xmlns="http://jitsi.org/protocol/focus"]'),"region");this.eventEmitter.emit(tT.SERVER_REGION_CHANGED,r),this._maybeClearSITimeout(),n$.sendAnalytics(nu(na.ACTION_JINGLE_SI_RECEIVED,{p2p:!1,value:n}));try{t.initialize(this.room,this.rtc,this._signalingLayer,{...this.options.config,codecSettings:{codecList:this.qualityController.codecController.getCodecPreferenceList("jvb"),mediaType:nx.VIDEO,screenshareCodec:this.qualityController.codecController.getScreenshareCodec("jvb")},enableInsertableStreams:this.isE2EEEnabled()||nR.isRunInLiteModeEnabled()})}catch(t){return void l2.error(t)}this._setBridgeChannel(i,t.peerconnection);let o=this.getLocalTracks();try{t.acceptOffer(i,()=>{this.isP2PActive()&&this.jvbJingleSession&&this._suspendMediaTransferForJvbConnection(),this.eventEmitter.emit(tT._MEDIA_SESSION_STARTED,t),this.isP2PActive()||this.eventEmitter.emit(tT._MEDIA_SESSION_ACTIVE_CHANGED,t),t.addEventListener(cn.VIDEO_CODEC_CHANGED,()=>{this.eventEmitter.emit(tT.VIDEO_CODEC_CHANGED)})},t=>{l2.error("Failed to accept incoming JVB Jingle session",t),this.eventEmitter.emit(tT.CONFERENCE_FAILED,tE,t)},o),this._desktopSharingFrameRate&&t.peerconnection.setDesktopSharingFrameRate(this._desktopSharingFrameRate),this.statistics.startRemoteStats(this.jvbJingleSession.peerconnection)}catch(t){l2.error(t)}}_setBridgeChannel(t,i){var n,r,o;let s=null==(n=this.connection)||null==(n=n.options)||null==(n=n.bridgeChannel)?void 0:n.ignoreDomain,a=null==(r=null==(o=this.connection)||null==(o=o.options)||null==(o=o.bridgeChannel)?void 0:o.preferSctp)||r,d=1===sv(t,':scope>content[name="data"]').length,c=null;if(l2.info(`SCTP: offered=${d}, prefered=${a}`),!(d&&a||(sv(t,":scope>content>transport>web-socket").map(t=>
84t.getAttribute("url")).forEach(t=>{c||s&&s===new URL(t).hostname?c||l2.info(`Ignoring colibri-ws url with domain ${s}`):(c=t,l2.info(`Using colibri-ws url ${t}`))}),c))){let i=sb(t,":scope>content>transport>web-socket");i&&(c=i.getAttribute("url"),l2.info(`Falling back to ${c}`))}!c||d&&a?d?this.rtc.initializeBridgeChannel(i.peerconnection,null):l2.warn("Neither SCTP nor a websocket is available. Will not initialize bridge channel."):this.rtc.initializeBridgeChannel(null,c)}_rejectIncomingCall(t,i){null!=i&&i.errorMsg&&l2.warn(i.errorMsg),t.terminate(null,t=>{l2.warn("An error occurred while trying to terminate invalid Jingle session",t)},{reason:null==i?void 0:i.reason,reasonDescription:null==i?void 0:i.reasonDescription,sendSessionTerminate:!0})}_onIncomingCallP2P(t,i){let n,r=sy(sb(i,":scope>content"),"name");"0"===r||"1"===r?!this.isP2PEnabled()&&!this.isP2PTestModeEnabled()||nf.isFirefox()&&!this._firefoxP2pEnabled?n={errorMsg:"P2P mode disabled in the configuration or browser unsupported",reason:"decline",reasonDescription:"P2P disabled"}:this.p2pJingleSession?n={errorMsg:'Duplicated P2P "session-initiate"',reason:"busy",reasonDescription:"P2P already in progress"}:this._shouldBeInP2PMode()||(n={errorMsg:'Received P2P "session-initiate" when should not be in P2P mode',reason:"decline",reasonDescription:"P2P requirements not met"},n$.sendAnalytics(nu(na.ACTION_P2P_DECLINED))):n={errorMsg:"P2P across two endpoints in different SDP modes is disabled",reason:"decline",reasonDescription:"P2P disabled"},n?this._rejectIncomingCall(t,n):this._acceptP2PIncomingCall(t,i)}_onIceConnectionInterrupted(t){t.isP2P?this.isP2PConnectionInterrupted=!0:this.isJvbConnectionInterrupted=!0,t.isP2P===this.isP2PActive()&&this.eventEmitter.emit(tT.CONNECTION_INTERRUPTED)}_onIceConnectionFailed(t){if(t.isP2P)n$.analytics.addPermanentProperties({p2pFailed:!0}),this.p2pJingleSession&&n$.sendAnalyticsAndLog(nh(na.ACTION_P2P_FAILED,{initiator:this.p2pJingleSession.isInitiator})),this._stopP2PSession({reason:"connectivity-error",reasonDescription:"ICE FAILED"});else if(t&&this.jvbJingleSession===t&&this._iceRestarts<3){let t=aZ(this._iceRestarts,1e3);this._delayedIceFailed=new s0(this),setTimeout(()=>{l2.error(`triggering ice restart after ${t} `),this._delayedIceFailed.start(),this._iceRestarts++},t)}else if(this.jvbJingleSession===t){var i;l2.warn("ICE failed, force reloading the conference after failed attempts to re-establish ICE"),n$.sendAnalyticsAndLog(function(t){return{action:t,attributes:arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},type:na.TYPE_OPERATIONAL}}(na.ACTION_JVB_ICE_FAILED,{participantId:this.myUserId(),userRegion:null==(i=this.options.config.deploymentInfo)?void 0:i.userRegion})),this.eventEmitter.emit(tT.CONFERENCE_FAILED,tv)}}_onP2PTerminationRequired(t){t===this.p2pJingleSession&&(l2.warn("Stopping P2P session due to SSRC regeneration on P2P connection"),this._stopP2PSession({reason:"connectivity-error",reasonDescription:"P2P SSRC regeneration"}))}_onIceConnectionRestored(t){t.isP2P?this.isP2PConnectionInterrupted=!1:(this.isJvbConnectionInterrupted=!1,this._delayedIceFailed&&this._delayedIceFailed.cancel()),t.isP2P===this.isP2PActive()&&this.eventEmitter.emit(tT.CONNECTION_RESTORED)}_acceptP2PIncomingCall(t,i){this.isP2PConnectionInterrupted=!1,this.p2pJingleSession=t,this._sendConferenceJoinAnalyticsEvent(),this.p2pJingleSession.initialize(this.room,this.rtc,this._signalingLayer,{...this.options.config,codecSettings:{codecList:this.qualityController.codecController.getCodecPreferenceList("p2p"),mediaType:nx.VIDEO,screenshareCodec:this.qualityController.codecController.getScreenshareCodec("p2p")},enableInsertableStreams:this.isE2EEEnabled()||nR.isRunInLiteModeEnabled()});let n=this.getLocalTracks();this.p2pJingleSession.acceptOffer(i,()=>{l2.debug('Got RESULT for P2P "session-accept"'),this.eventEmitter.emit(tT._MEDIA_SESSION_STARTED,t),t.addEventListener(cn.VIDEO_CODEC_CHANGED,()=>{this.eventEmitter.emit(tT.VIDEO_CODEC_CHANGED)})},t=>{l2.error("Failed to accept incoming P2P Jingle session",t),this.p2pJingleSession&&this.eventEmitter.emit(tT.CONFERENCE_FAILED,tE,t)},n)}_addRemoteJVBTracks(){this._addRemoteTracks("JVB",this.jvbJingleSession.peerconnection.getRemoteTracks())}_addRemoteP2PTracks(){this._addRemoteTracks("P2P",this.p2pJingleSession.peerconnection.getRemoteTracks())}_addRemoteTracks(t,i){for(let n of i)this.participants.has(n.ownerEndpointId)&&(l2.info(`Adding remote ${t} track: ${n}`),this.onRemoteTrackAdded(n))}_onIceConnectionEstablished(t){null!==this.p2pJingleSession&&(this.p2pEstablishmentDuration=this.p2pJingleSession.establishmentDuration),null!==this.jvbJingleSession&&(this.jvbEstablishmentDuration=this.jvbJingleSession.establishmentDuration);let i=!1;if(t.isP2P?this.p2pJingleSession!==t&&(l2.error("CONNECTION_ESTABLISHED - wrong P2P session instance ?!"),i=!0):i=!0,nO(this.p2pEstablishmentDuration)&&nO(this.jvbEstablishmentDuration)){let t=this.p2pEstablishmentDuration-this.jvbEstablishmentDuration;n$.sendAnalytics(na.ICE_ESTABLISHMENT_DURATION_DIFF,{value:t})}t.isP2P===this.isP2PActive()&&this.eventEmitter.emit(tT.CONNECTION_ESTABLISHED),i||(this._setP2PStatus(!0),this.jvbJingleSession?this._removeRemoteJVBTracks():l2.info("Not removing remote JVB tracks - no session yet"),this._addRemoteP2PTracks(),this.jvbJingleSession&&this._suspendMediaTransferForJvbConnection(),l2.info("Starting remote stats with p2p connection"),this.statistics.startRemoteStats(this.p2pJingleSession.peerconnection),n$.sendAnalyticsAndLog(nh(na.A
84CTION_P2P_ESTABLISHED,{initiator:this.p2pJingleSession.isInitiator})))}_updateProperties(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=!ir(t,this.properties);if(this.properties=t,i){var n,r;this.eventEmitter.emit(tT.PROPERTIES_CHANGED,this.properties);let i="true"===this.properties["audio-limit-reached"],o="true"===this.properties["video-limit-reached"];this._audioSenderLimitReached!==i&&(this._audioSenderLimitReached=i,this.eventEmitter.emit(tT.AUDIO_UNMUTE_PERMISSIONS_CHANGED,i),l2.info(`Audio unmute permissions set by Jicofo to ${i}`)),this._videoSenderLimitReached!==o&&(this._videoSenderLimitReached=o,this.eventEmitter.emit(tT.VIDEO_UNMUTE_PERMISSIONS_CHANGED,o),l2.info(`Video unmute permissions set by Jicofo to ${o}`)),["bridge-count"].forEach(i=>{void 0!==t[i]&&n$.analytics.addPermanentProperties({[i.replace("-","_")]:t[i]})});let s=null==(n=this.properties["visitor-codecs"])?void 0:n.split(",");null!=(r=s)&&r.length&&(s=s.filter(t=>"string"==typeof t&&t.trim().length&&Object.values(oZ).find(i=>i===t))),this._visitorCodecs!==s&&(this._visitorCodecs=s,this.eventEmitter.emit(tT.CONFERENCE_VISITOR_CODECS_CHANGED,this._visitorCodecs));let a=this._hasVisitors;this._hasVisitors=this.properties["visitor-count"]>0,a!==this._hasVisitors&&this._maybeStartOrStopP2P(!0)}}_fireIncompatibleVersionsEvent(){this.eventEmitter.emit(tT.CONFERENCE_FAILED,ty)}_sendBridgeVideoTypeMessage(t){let i=!t||t.isMuted()?l1.NONE:t.getVideoType();i===rw.DESKTOP&&this._desktopSharingFrameRate>5&&(i=l1.DESKTOP_HIGH_FPS),t&&this.rtc.sendSourceVideoType(t.getSourceName(),i)}_stopJvbSession(t){let i=t.requestRestart,n=void 0!==i&&i,r=t.sendSessionTerminate,o=void 0!==r&&r;this.jvbJingleSession?(this.isP2PActive()||this._removeRemoteJVBTracks(),l2.info("Stopping stats for jvb connection"),this.statistics.stopRemoteStats(this.jvbJingleSession.peerconnection),this.jvbJingleSession.terminate(()=>{n&&o&&l2.info("session-terminate for ice restart - done"),this.jvbJingleSession=null},t=>{n&&o&&(l2.error("session-terminate for ice restart failed: reloading the client"),this.eventEmitter.emit(tT.CONFERENCE_FAILED,tv)),l2.error(`An error occurred while trying to terminate the JVB session', reason=${t.reason},msg=${t.msg}`)},t)):l2.error("No JVB session to be stopped")}_removeLocalTrackFromPc(t){let i=[];return t.conference===this&&(this.jvbJingleSession?i.push(this.jvbJingleSession.removeTrackFromPc(t)):l2.debug("Remove local MediaStream - no JVB JingleSession started yet"),this.p2pJingleSession?i.push(this.p2pJingleSession.removeTrackFromPc(t)):l2.debug("Remove local MediaStream - no P2P JingleSession started yet")),Promise.allSettled(i)}async _addLocalTrackToPc(t){let i=[];t.conference===this?(this.jvbJingleSession?i.push(this.jvbJingleSession.addTrackToPc(t)):l2.debug("Add local MediaStream - no JVB Jingle session started yet"),this.p2pJingleSession?i.push(this.p2pJingleSession.addTrackToPc(t)):l2.debug("Add local MediaStream - no P2P Jingle session started yet")):i.push(this.addTrack(t)),await Promise.allSettled(i)}_setTrackMuteStatus(t,i){let n=!1;return t&&(n=this._signalingLayer.setTrackMuteStatus(t.getSourceName(),i)||!1)&&l2.debug(`Mute state of ${t} changed to muted=${i}`),n}
84_updateStartMutedPolicy(t,i){if(this.isJoined())return;let n=!1;t!==this.startMutedPolicy.audio&&(this.startMutedPolicy.audio=t,n=!0),i!==this.startMutedPolicy.video&&(this.startMutedPolicy.video=i,n=!0),n&&this.eventEmitter.emit(tT.START_MUTED_POLICY_CHANGED,this.startMutedPolicy)}_setTranscribingEnabled(t){this._transcribingEnabled!==t&&(this._transcribingEnabled=t,this._maybeStartOrStopP2P(!0))}_onMucJoined(){this._numberOfParticipantsOnJoin=this.getParticipantCount(),this._maybeStartOrStopP2P()}_onMemberBotTypeChanged(t,i){let n=this.getParticipants().find(i=>i.getJid()===t);if(n){n.setBotType(i);let r=io.Strophe.getResourceFromJid(t);this.eventEmitter.emit(tT.BOT_TYPE_CHANGED,r,i)}n.getBotType()||this._maybeStartOrStopP2P()}onSuspendDetected(t){t.isP2P||(this.leave(),this.eventEmitter.emit(tT.SUSPEND_DETECTED))}join(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.room&&this.room.join(t,i).then(()=>this._maybeSetSITimeout())}authenticateAndUpgradeRole(t){let i,n=t.id,r=t.password,o=t.onCreateResource,s=t.onLoginSuccessful,a=!1,d=new cw(this.connection.options,void 0),c=new Promise((t,c)=>{i=c,d.addListener(nW.CONNECTION_DISCONNECTED,()=>{d=void 0}),d.addListener(nW.CONNECTION_ESTABLISHED,()=>{if(a)return;null==s||s();let i=this.options.config,n=d.createRoom(this.options.name,{...i,statsId:this._statsCurrentId},o);n.xmpp.moderator.authenticate(n.roomjid).then(()=>{var i;null==(i=d)||i.disconnect(),a||this.room.xmpp.moderator.sendConferenceRequest(this.room.roomjid).catch(t=>l2.trace("sendConferenceRequest rejected",t)).finally(()=>{this.room.xmpp.moderator.conferenceRequestSent=!1,t(void 0)})}).catch(t=>{let i=t.error,n=t.message;d.disconnect(),c({authenticationError:i,message:n})})}),d.addListener(nW.CONNECTION_FAILED,(t,i,n)=>{c({connectionError:t,credentials:n,message:i}),d=void 0}),a||d.connect(n,r)});return c.cancel=()=>{var t;a=!0,i({}),null==(t=d)||t.disconnect()},c}isJoined(){var t;return null==(t=this.room)?void 0:t.joined}isP2PEnabled(){var t;return!!(null==(t=this.options.config.p2p)?void 0:t.enabled)||void 0===this.options.config.p2p}isP2PTestModeEnabled(){var t;return!!(null==(t=this.options.config.testing)?void 0:t.p2pTestMode)}async leave(t){var i;let n;if(this.avgRtpStatsReporter&&(this.avgRtpStatsReporter.dispose(),this.avgRtpStatsReporter=null),this.e2eping&&(this.e2eping.stop(),this.e2eping=null),this.getLocalTracks().forEach(t=>this.onLocalTrackRemoved(t)),this.rtc.closeBridgeChannel(),this._sendConferenceLeftAnalyticsEvent(),this.statistics&&this.statistics.dispose(),this._delayedIceFailed&&this._delayedIceFailed.cancel(),this._maybeClearSITimeout(),this.jvbJingleSession&&(this.jvbJingleSession.close(),this.jvbJingleSession=null),this.p2pJingleSession&&(this.p2pJingleSession.close(),this.p2pJingleSession=null),!this.room)return;if("switch_room"===t&&null!=(i=this.getBreakoutRooms())&&i.isBreakoutRoom()){let t=this.getBreakoutRooms().getMainRoomJid();this.xmpp.connection._breakoutMovingToMain=t}let r=this.room;r.removeListener(nG.CONNECTION_INTERRUPTED,this._onIceConnectionInterrupted),r.removeListener(nG.CONNECTION_RESTORED,this._onIceConnectionRestored),r.removeListener(nG.CONNECTION_ESTABLISHED,this._onIceConnectionEstablished),r.removeListener(nG.CONFERENCE_PROPERTIES_CHANGED,this._updateProperties),r.removeListener(nG.MEETING_ID_SET,this._sendConferenceJoinAnalyticsEvent),r.removeListener(nG.P2P_TERMINATION_REQUIRED,this._onP2PTerminationRequired),r.removeListener(nG.SESSION_ACCEPT,this._updateRoomPresence),r.removeListener(nG.SOURCE_ADD,this._updateRoomPresence),r.removeListener(nG.SOURCE_ADD_ERROR,this._removeLocalSourceOnReject),r.removeListener(nG.SOURCE_REMOVE,this._updateRoomPresence),this.eventManager.removeXMPPListeners(),this._signalingLayer.setChatRoom(null),this.room=null;try{await r.leave(t)}
84catch(t){n=t,this.getParticipants().forEach(t=>this.onMemberLeft(t.getJid()))}if(this.qualityController&&this.qualityController.dispose(),this.rtc&&this.rtc.destroy(),n)throw n}async dispose(){var t;await this.leave(),await (null==(t=this.connection)?void 0:t.disconnect())}isEndConferenceSupported(){var t;return!!(null==(t=this.room)?void 0:t.xmpp.endConferenceComponentAddress)}end(){if(this.isEndConferenceSupported()){if(!this.room)throw Error("You have already left the conference");this.room.end()}else l2.warn("Cannot end conference: is not supported.")}getActiveMediaSession(){return this.isP2PActive()?this.p2pJingleSession:this.jvbJingleSession}getMediaSessions(){let t=[];return this.jvbJingleSession&&t.push(this.jvbJingleSession),this.p2pJingleSession&&t.push(this.p2pJingleSession),t}getName(){return this.options.name.toString()}getConnection(){return this.connection}isAuthEnabled(){return this.authEnabled}isLoggedIn(){return!!this.authIdentity}getAuthLogin(){return this.authIdentity}getLocalTracks(t){let i=[];return this.rtc&&(i=this.rtc.getLocalTracks(t)),i}getLocalAudioTrack(){return this.rtc?this.rtc.getLocalAudioTrack():null}getLocalVideoTrack(){return this.rtc?this.rtc.getLocalVideoTrack():null}getLocalVideoTracks(){return this.rtc?this.rtc.getLocalVideoTracks():null}addCommandListener(t,i){this.room&&this.room.addPresenceListener(t,i)}removeCommandListener(t,i){this.room&&this.room.removePresenceListener(t,i)}sendTextMessage(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"body",n=arguments.length>2?arguments[2]:void 0;this.room&&this.room.sendMessage(t,i,n)}sendReaction(t,i,n){this.room&&this.room.sendReaction(t,i,n)}sendPrivateTextMessage(t,i){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"body",r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4?arguments[4]:void 0;this.room&&this.room.sendPrivateMessage(t,i,n,r,o)}sendCommand(t,i){this.room?this.room.addOrReplaceInPresence(t,i)&&this.room.sendPresence():l2.warn("Not sending a command, room not initialized.")}sendCommandOnce(t,i){this.sendCommand(t,i),this.removeCommand(t)}removeCommand(t){this.room&&this.room.removeFromPresence(t)}setDisplayName(t){if(this.room){let i="nick";t?this.room.addOrReplaceInPresence(i,{attributes:{xmlns:"http://jabber.org/protocol/nick"},value:t})&&this.room.sendPresence(!1):this.room.getFromPresence(i)&&(this.room.removeFromPresence(i),this.room.sendPresence(!1))}}setIsSilent(t){this.room&&this.room.addOrReplaceInPresence("silent",{attributes:{xmlns:"http://jitsi.org/protocol/silent"},value:t})&&this.room.sendPresence(!1)}setSubject(t){this.room&&this.isModerator()?this.room.setSubject(t):l2.warn(`Failed to set subject, ${this.room?"":"not in a room, "}${this.isModerator()?"":"participant is not a moderator"}`)}getTranscriptionStatus(){return this.room.transcriptionStatus}addTrack(t){if(!t)throw Error("addTrack - a track is required");let i=t.getType(),n=this.rtc.getLocalTracks(i);if(n.length>0){var r,o;if(t===n[0])return Promise.resolve();if(null!=(r=this.options.config.testing)&&r.allowMultipleTracks||i===nx.VIDEO&&!n.find(i=>i.getVideoType()===t.getVideoType())){let n=o2(this.myUserId(),i,null==(o=this.getLocalTracks(i))?void 0:o.length);t.setSourceName(n);let r=[];return this.p2pJingleSession&&r.push(this.p2pJingleSession.addTracks([t])),this.jvbJingleSession&&r.push(this.jvbJingleSession.addTracks([t])),Promise.all(r).then(()=>{this._setupNewTrack(t),i===nx.VIDEO&&this._sendBridgeVideoTypeMessage(t),this._updateRoomPresence(this.getActiveMediaSession()),(this.isMutedByFocus||this.isVideoMutedByFocus||this.isDesktopMutedByFocus)&&this._fireMuteChangeEvent(t)})}return Promise.reject(Error(`Cannot add second ${i} track to the conference`))}return this.replaceTrack(null,t).then(()=>{t.getVideoType()===rw.DESKTOP&&this._updateRoomPresence(this.getActiveMediaSession())})}onLocalTrackRemoved(t){t.setConference(null),this.rtc.removeLocalTrack(t),this._unsubscribers.forEach(t=>t()),this._unsubscribers=[],this.eventEmitter.emit(tT.TRACK_REMOVED,t)}removeTrack(t){return this.replaceTrack(t,null)}
84replaceTrack(t,i){let n=null==t?void 0:t.getVideoType(),r=(null==t?void 0:t.getType())||(null==i?void 0:i.getType()),o=null==i?void 0:i.getVideoType();if(t&&i&&n!==o)throw Error(`Replacing a track of videoType=${n} with a track of videoType=${o} is not supported in this mode.`);if(i){var s;let n=t?t.getSourceName():o2(this.myUserId(),r,null==(s=this.getLocalTracks(r))?void 0:s.length);i.setSourceName(n)}let a=this===(null==t?void 0:t.conference);return a&&t.disposed||null!=i&&i.disposed?Promise.reject(new ru(ro)):(t&&!a&&l2.warn(`JitsiConference.replaceTrack oldTrack (${t} does not belong to this conference`),this._doReplaceTrack(a?t:null,i).then(()=>(!a||t.isMuted()||i||t._sendMuteStatus(!0),a&&this.onLocalTrackRemoved(t),i&&this._setupNewTrack(i),(a&&null!=t&&t.isVideoTrack()||null!=i&&i.isVideoTrack())&&this._sendBridgeVideoTypeMessage(i),this._updateRoomPresence(this.getActiveMediaSession()),null!==i&&(this.isMutedByFocus||this.isVideoMutedByFocus||this.isDesktopMutedByFocus)&&this._fireMuteChangeEvent(i),Promise.resolve())).catch(t=>(l2.error(`replaceTrack failed: ${null==t?void 0:t.stack}`),Promise.reject(t))))}getRole(){return this.room.role}isHidden(){return!!this.connection&&io.Strophe.getDomainFromJid(this.connection.getJid())===this.options.config.hiddenDomain}isModerator(){return!!this.room&&this.room.isModerator()}lock(t){return this.isModerator()?new Promise((i,n)=>{this.room.lockRoom(t||"",()=>i(),t=>n(t),()=>n(tS))}):Promise.reject(Error("You are not moderator."))}unlock(){return this.lock("")}getLastN(){return this.qualityController.receiveVideoController.getLastN()}getForwardedSources(){return this.rtc.getForwardedSources()}setAudioSubscriptionMode(t){this.qualityController.audioController.setAudioSubscriptionMode(t)}setLastN(t){if(!Number.isInteger(t))throw Error(`Invalid value for lastN: ${t}`);let i=Number(t);if(i<-1)throw RangeError("lastN cannot be smaller than -1");if(this.qualityController.receiveVideoController.setLastN(i),this.p2pJingleSession){let t=0!==i;this.p2pJingleSession.setP2pVideoTransferActive(t).catch(i=>{l2.error(`Failed to adjust video transfer status (${t})`,i)})}}getParticipants(){return Array.from(this.participants.values())}getParticipantCount(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.getParticipants();return t||(i=i.filter(t=>!t.isHidden())),i.length+1}getParticipantById(t){return this.participants.get(t)}grantOwner(t){let i=this.getParticipantById(t);i&&this.room.setAffiliation(i.getConnectionJid(),"owner")}revokeOwner(t){let i=this.getParticipantById(t),n=this.myUserId()===t,r=this.isMembersOnly()?"member":"none";n?this.room.setAffiliation(this.connection.getJid(),r):i&&this.room.setAffiliation(i.getConnectionJid(),r)}kickParticipant(t,i){let n=this.getParticipantById(t);n&&this.room.kick(n.getJid(),i)}muteRemoteAudio(t){this.qualityController.audioController.muteRemoteAudio(t)}muteParticipant(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:nx.AUDIO;if(!i)return void l2.error(`Unsupported media type: ${i}`);let n=this.getParticipantById(t);n&&this.room.muteParticipant(n.getJid(),!0,i)}onMemberJoined(t,i,n,r,o,s,a,d,c,l,u){var h,p,m,g;let f=io.Strophe.getResourceFromJid(t);if("focus"===f||this.myUserId()===f)return;let _=new n6(t,this,i,r,o,s,a);for(let t of(_.setConnectionJid(c),_.setRole(n),_.setBotType(d),_.setFeatures(l),_.setIsReplacing(u),this.isP2PActive()?null!=(h=null==(p=this.p2pJingleSession)?void 0:p.peerconnection.getRemoteTracks(f))?h:[]:null!=(m=null==(g=this.jvbJingleSession)?void 0:g.peerconnection.getRemoteTracks(f))?m:[]))_._tracks.push(t);this.participants.set(f,_),this.eventEmitter.emit(tT.USER_JOINED,f,_),this._updateFeatures(_),this.isJoined()&&this._maybeStartOrStopP2P(),this._maybeSetSITimeout();let v=this.options.config,y=v.startAudioMuted,E=v.startVideoMuted;if(this.jvbJingleSession&&this.getActiveMediaSession()===this.jvbJingleSession||(void 0===y||-1===y)&&(void 0===E||-1===E))return;let S=!1,b=!1,C=this.getParticipantCount();C>this.options.config.startAudioMuted&&(S=!0),C>this.options.config.startVideoMuted&&(b=!0),(S&&!this.startMutedPol
84icy.audio||b&&!this.startMutedPolicy.video)&&this._updateStartMutedPolicy(S,b)}onMemberLeft(t,i){let n=io.Strophe.getResourceFromJid(t);if("focus"===n||this.myUserId()===n)return;let r=this.getMediaSessions(),o=[];for(let t of r){let i=t.peerconnection.getRemoteTracks(n);i&&(o=[...o,...i]),t._signalingLayer.updateSsrcOwnersOnLeave(n),nR.isSsrcRewritingSupported()||t.removeRemoteStreamsOnLeave(n)}o.forEach(t=>{this.eventEmitter.emit(tT.TRACK_REMOVED,t),nR.isSsrcRewritingSupported()&&(t.setSourceName(null),t.setOwner(null))});let s=this.participants.get(n);s&&(this.participants.delete(n),this.eventEmitter.emit(tT.USER_LEFT,n,s,i)),null!==this.room&&(this._maybeStartOrStopP2P(!0),this._maybeClearSITimeout())}onMemberKicked(t,i,n,r,o){let s;if(s=i===this.myUserId()?{getId:()=>i}:this.participants.get(i),t)return this.leave().finally(()=>this._xmpp.disconnect()),void this.eventEmitter.emit(tT.KICKED,s,r,o);let a=this.participants.get(n);a.setIsReplaced(o),this.eventEmitter.emit(tT.PARTICIPANT_KICKED,s,a,r)}onLocalRoleChanged(t){this.eventEmitter.emit(tT.USER_ROLE_CHANGED,this.myUserId(),t)}onUserRoleChanged(t,i){let n=io.Strophe.getResourceFromJid(t),r=this.getParticipantById(n);r&&(r.setRole(i),this.eventEmitter.emit(tT.USER_ROLE_CHANGED,n,i))}onDisplayNameChanged(t,i){let n=io.Strophe.getResourceFromJid(t),r=this.getParticipantById(n);r&&r._displayName!==i&&(r._displayName=i,this.eventEmitter.emit(tT.DISPLAY_NAME_CHANGED,n,i))}onSilentStatusChanged(t,i){let n=io.Strophe.getResourceFromJid(t),r=this.getParticipantById(n);r&&(r.setIsSilent(i),this.eventEmitter.emit(tT.SILENT_STATUS_CHANGED,n,i))}onRemoteTrackAdded(t){if(t.isP2P&&!this.isP2PActive())return void l2.info("Trying to add remote P2P track, when not in P2P - IGNORED");if(!t.isP2P&&this.isP2PActive())return void l2.info("Trying to add remote JVB track, when in P2P - IGNORED");let i=t.getParticipantId(),n=this.getParticipantById(i);n?n._tracks.push(t):l2.info(`Source signaling received before presence for ${i}`);let r=this.eventEmitter;
84t.addEventListener(is.TRACK_MUTE_CHANGED,()=>r.emit(tT.TRACK_MUTE_CHANGED,t)),t.isAudioTrack()&&t.addEventListener(is.TRACK_AUDIO_LEVEL_CHANGED,(t,n)=>{this.getActivePeerConnection()===n&&r.emit(tT.TRACK_AUDIO_LEVEL_CHANGED,i,t)}),r.emit(tT.TRACK_ADDED,t)}onCallAccepted(t,i){this.p2pJingleSession===t&&(l2.info("P2P setAnswer"),this.p2pJingleSession.setAnswer(i).then(()=>{this.eventEmitter.emit(tT._MEDIA_SESSION_STARTED,this.p2pJingleSession)}).catch(t=>{l2.error("Error setting P2P answer",t),this.p2pJingleSession&&this.eventEmitter.emit(tT.CONFERENCE_FAILED,tE,t)}))}onTransportInfo(t,i){this.p2pJingleSession===t&&(l2.info("P2P addIceCandidates"),this.p2pJingleSession.addIceCandidates(i))}onRemoteTrackRemoved(t){this.getParticipants().forEach(i=>{let n=i.getTracks();for(let r=0;r<n.length;r++)if(n[r]===t){i._tracks.splice(r,1),this.eventEmitter.emit(tT.TRACK_REMOVED,t);break}},this)}onIncomingCall(t,i,n){if(t.isP2P)this._onIncomingCallP2P(t,i);else{if(!this.isFocus(t.remoteJid)){let i="Rejecting session-initiate from non-focus.";return void this._rejectIncomingCall(t,{errorMsg:i,reason:"security-error",reasonDescription:i})}this._acceptJvbIncomingCall(t,i,n)}}onCallEnded(t,i,n){if(l2.info(`Call ended: ${i} - ${n} P2P ?${t.isP2P}`),t===this.jvbJingleSession)this.wasStopped=!0,n$.sendAnalytics(nu(na.ACTION_JINGLE_TERMINATE,{p2p:!1})),this.statistics&&this.statistics.stopRemoteStats(this.jvbJingleSession.peerconnection),this.jvbJingleSession=null,this.rtc.onCallEnded();else if(t===this.p2pJingleSession){let t={};"connectivity-error"===i&&"ICE FAILED"===n?n$.analytics.addPermanentProperties({p2pFailed:!0}):"success"===i&&"restart"===n&&(t.requestRestart=!0),this._stopP2PSession(t)}else l2.error("Received onCallEnded for invalid session",t.sid,t.remoteJid,i,n)}updateDTMFSupport(){let t=!1,i=this.getParticipants();for(let n=0;n<i.length;n+=1)if(i[n].supportsDTMF()){t=!0;break}t!==this.somebodySupportsDTMF&&(this.somebodySupportsDTMF=t,this.eventEmitter.emit(tT.DTMF_SUPPORT_CHANGED,t))}isDTMFSupported(){return this.somebodySupportsDTMF}myUserId(){var t;return null!=(t=this.room)&&t.myroomjid?io.Strophe.getResourceFromJid(this.room.myroomjid):null}sendTones(t,i,n){let r=this.getActivePeerConnection();r?r.sendTones(t,i,n):l2.warn("cannot sendTones: no peer connection")}startRecording(t){return this.room?this.recordingManager.startRecording(t):Promise.reject(Error("The conference is not created yet!"))}stopRecording(t){return this.room?this.recordingManager.stopRecording(t):Promise.reject(Error("The conference is not created yet!"))}isSIPCallingSupported(){var t,i;return null!=(t=null==(i=this.room)||null==(i=i.xmpp)||null==(i=i.moderator)?void 0:i.isSipGatewayEnabled())&&t}dial(t){return this.room?this.room.dial(t):Promise.reject(Error("The conference is not created yet!"))}hangup(){return this.room?this.room.hangup():Promise.resolve()}getPhoneNumber(){return this.room?this.room.getPhoneNumber():null}getPhonePin(){return this.room?this.room.getPhonePin():null}getMeetingUniqueId(){if(this.room)return this.room.getMeetingId()}getActivePeerConnection(){let t=this.isP2PActive()?this.p2pJingleSession:this.jvbJingleSession;return t?t.peerconnection:null}getConnectionState(){let t=this.getActivePeerConnection();return t?t.getConnectionState():null}
84setStartMutedPolicy(t){this.isModerator()?(l2.info(`Setting start muted policy: ${JSON.stringify(t)} in presence and in conference metadata`),this.room.addOrReplaceInPresence("startmuted",{attributes:{audio:t.audio,video:t.video,xmlns:"http://jitsi.org/jitmeet/start-muted"}})&&this.room.sendPresence(),this.getMetadataHandler().setMetadata("startMuted",{audio:t.audio,video:t.video})):l2.warn(`Failed to set start muted policy, ${this.room?"":"not in a room, "}${this.isModerator()?"":"participant is not a moderator"}`)}getStartMutedPolicy(){return this.startMutedPolicy}getConnectionTimes(){return this.room.connectionTimes}setLocalParticipantProperty(t,i){this.sendCommand(`jitsi_participant_${t}`,{value:i})}removeLocalParticipantProperty(t){this.removeCommand(`jitsi_participant_${t}`),this.room&&this.room.sendPresence()}setTranscriptionLanguage(t){this.setLocalParticipantProperty("transcription_language",t)}getLocalParticipantProperty(t){let i=this.room.presMap.nodes.find(i=>i.tagName===`jitsi_participant_${t}`);return i?i.value:void 0}sendFeedback(t,i){return this.statistics.sendFeedback(t,i)}getSsrcByTrack(t){var i;return t.isLocal()?null==(i=this.getActivePeerConnection())?void 0:i.getLocalSSRC(t):t.getSsrc()}sendApplicationLog(){}isFocus(t){return this.room?this.room.isFocus(t):null}sendEndpointMessage(t,i){this.rtc.sendChannelMessage(t,i)}sendEndpointStatsMessage(t){this.rtc.sendEndpointStatsMessage(t)}broadcastEndpointMessage(t){this.sendEndpointMessage("",t)}sendMessage(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3?arguments[3]:void 0,o=typeof t;if("object"!==o&&(n||"string"!==o))l2.error(`Can not send a message of type ${o}`);else if(n)this.sendEndpointMessage(i,t);else{let n=t,s="body";if("object"===o){s="json-message",n.hasOwnProperty(cT)||(n[cT]="");try{n=JSON.stringify(n)}catch(t){return void l2.error("Can not send a message, stringify failed: ",t)}}i?this.sendPrivateTextMessage(i,n,s,!1,r):this.sendTextMessage(n,s,r)}}isConnectionInterrupted(){return this.isP2PActive()?this.isP2PConnectionInterrupted:this.isJvbConnectionInterrupted}getProperty(t){return this.properties[t]}isP2PActive(){return this.p2p}getP2PConnectionState(){return this.isP2PActive()?this.p2pJingleSession.peerconnection.getConnectionState():null}setDesktopSharingFrameRate(t){var i;if(!nO(t))return l2.error(`Invalid value ${t} specified for desktop capture frame rate`),!1;let n=Number(t);return this._desktopSharingFrameRate=n,null==(i=this.jvbJingleSession)||i.peerconnection.setDesktopSharingFrameRate(n),this.rtc.setDesktopSharingFrameRate(n),!0}startP2PSession(){let t=this.getParticipants();if(1!==t.length)throw Error("There must be exactly 1 participant to start the P2P session !");{let i=t[0].getJid();this._startP2PSession(i)}}stopP2PSession(t){this._stopP2PSession(t)}getSpeakerStats(){return this.speakerStatsCollector.getStats()}sendFaceLandmarks(t){t.faceExpression&&this._xmpp.sendFaceLandmarksEvent(this.room.roomjid,t)}setReceiverConstraints(t){this.qualityController.receiveVideoController.setReceiverConstraints(t)}setAssumedBandwidthBps(t){this.qualityController.receiveVideoController.setAssumedBandwidthBps(t)}setReceiverVideoConstraint(t){this.qualityController.receiveVideoController.setPreferredReceiveMaxFrameHeight(t)}setSenderVideoConstraint(t){return this.qualityController.sendVideoController.setPreferredSendMaxFrameHeight(t)}createVideoSIPGWSession(t,i){return this.room?this.videoSIPGWHandler.createVideoSIPGWSession(t,i):Error(lq)}isE2EEEnabled(){var t;return!!(null==(t=this._e2eEncryption)?void 0:t.isEnabled())}isE2EESupported(){return c1.isSupported(this.options.config)}toggleE2EE(t){this.isE2EESupported()?this._e2eEncryption.setEnabled(t):l2.warn("Cannot enable / disable E2EE: platform is not supported.")}setMediaEncryptionKey(t){this._e2eEncryption.setEncryptionKey(t)}startVerification(t){let i=this.getParticipantById(t);i&&this._e2eEncryption.startVerification(i)}markParticipantVerified(t,i){let n=this.getParticipantById(t);n&&this._e2eEncryption.markParticipantVerified(n,i)}isLobbySupported(){var t;return!!(null==(t=this.room)?void 0:t.getLobby().isSupported())}isMembersOnly(){var t;return!!(null==(t=this.room)?void 0:t.membersOnlyEnabled)}isVisitorsSupported(){var t;return!!(null==(t=this.room)?void 0:t.visitorsSupported)}enableLobby(){return this.room&&this.isModerator()?this.room.getLobby().enable():Promise.reject(Error("The conference not started or user is not moderator"))}disableLobby(){this.room&&this.isModerator()?this.room.getLobby().disable():l2.warn(`Failed to disable lobby, ${this.room?"":"not in a room, "}${this.isModerator()?"":"participant is not a moderator"}`)}joinLobby(t,i){var n;return this.room?null!=(n=this.room.getLobby())&&null!=(n=n.lobbyRoom)&&n.joined?(l2.warn("Already joined the lobby"),Promise.resolve()):this.room.getLobby().join(t,i):Promise.reject(Error("The conference not started"))}myLobbyUserId(){if(this.room)return this.room.getLobby().getLocalId()}sendLobbyMessage(t,i){if(this.room)return i?this.room.getLobby().sendPrivateMessage(i,t):this.room.getLobby().sendMessage(t)}addLobbyMessageListener(t){if(this.room)return this.room.getLobby().addMessageListener(t)}removeLobbyMessageHandler(t){if(this.room)return this.room.getLobby().removeMessageHandler(t)}lobbyDenyAccess(t){this.room&&this.room.getLobby().denyAccess(t)}lobbyApproveAccess(t){this.room&&this.room.getLobby().approveAccess(t)}isAVModerationSupported(){var t;return!!(null==(t=this.room)?void 0:t.getAVModeration().isSupported())}enableAVModeration(t){this.room&&this.isModerator()&&(t===nx.AUDIO||t===nx.DESKTOP||t===nx.VIDEO)?this.room.getAVModeration().enable(!0,t):l2.warn(`Failed to enable AV moderation, ${this.room?"":"not in a room, "}${this.isModerator()?"":"participant is not a moderator, "}${this.room&&this.isModerator()?"wrong media type passed":""}`)}disableAVModeration(t){this.room&&this.isModerator()&&(t===nx.AUDIO||t===nx.DESKTOP||t===nx.VIDEO)?this.room.getAVModeration().enable(!1,t):l2.warn(`Failed to disable AV moderation, ${this.room?"":"not in a room, "}${this.isModerator()?"":"participant is not a moderator, "}${this.room&&this.isModerator()?"wrong media type passed":""}`)}avModerationApprove(t,i){if(this.room&&this.isModerator()&&(t===nx.AUDIO||t===nx.DESKTOP||t===nx.VIDEO)){let n=this.getParticipantById(i);n&&this.room.getAVModeration().approve(t,n.getJid())}else l2.warn(`AV moderation approve skipped , ${this.room?"":"not in a room, "}${this.isModerator()?"":"participant is not a moderator, "}${this.room&&this.isModerator()?"wrong media type passed":""}`)}avModerationReject(t,i){if(this.room&&this.isModerator()&&(t===nx.AUDIO||t===nx.DESKTOP||t===nx.VIDEO)){let n=this.getParticipantById(i);n&&this.room.getAVModeration().reject(t,n.getJid())}else l2.warn(`AV moderation reject skipped , ${this.room?"":"not in a room, "}${this.isModerator()?"":"participant is not a moderator, "}${this.room&&this.isModerator()?"wrong media type passed":""}`)}getBreakoutRooms(){var t;return null==(t=this.room)?void 0:t.getBreakoutRooms()}getFileSharing(){var t;return null==(t=this.room)?void 0:t.getFileSharing()}getMetadataHandler(){var t;return null==(t=this.room)?void 0:t.getMetadataHandler()}getPolls(){var t;return null==(t=this.room)?void 0:t.getPolls()}getShortTermCredentials(t){return this.room?this.room.getShortTermCredentials(t):Promise.reject(Error("The conference is not created yet!"))}getAudioAnalyser(){return null==this?void 0:this._audioAnalyser}get xmpp(){return this._xmpp}}let l4=(0,m.getLogger)("core:JitsiConnection");class l9{constructor(t,i,n){this.appID=t,this.token=i,this.options=n,nR.init(n.flags||{}),this._xmpp=new cw(n,i),this.addEventListener(nW.CONNECTION_FAILED,(t,i,n,r)=>{n$.sendAnalyticsAndLog({action:"connection.failed",attributes:{error_message:i,error_type:t,...r},type:na.TYPE_OPERATIONAL})}),this.addEventListener(nW.CONNECTION_DISCONNECTED,t=>{t&&n$.sendAnalytics(na.CONNECTION_DISCONNECTED,{message:t})})}connect(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};ns.startWithConnection(this),this.xmpp.moderator.targetUrl&&!this.options.disableFocus&&t.name?this.xmpp.moderator.sendConferenceRequest
84(this.xmpp.getRoomJid(t.name,void 0)).then(()=>{this.xmpp.connect(t.id,t.password)}).catch(t=>l4.trace("sendConferenceRequest rejected",t)):this.xmpp.connect(t.id,t.password)}attach(t){this.xmpp.attach(t)}disconnect(){return this.xmpp.disconnect(...arguments)}getJid(){return this.xmpp.getJid()}refreshToken(t){return this.token=t,this._xmpp.refreshToken(this.token)}initJitsiConference(t,i){return new l5({config:i,connection:this,name:t})}addEventListener(t,i){this.xmpp.addListener(t,i)}removeEventListener(t,i){this.xmpp.removeListener(t,i)}getConnectionTimes(){return this.xmpp.connectionTimes}addFeature(t){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.xmpp.caps.addFeature(t,i,!0)}removeFeature(t){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.xmpp.caps.removeFeature(t,i,!0)}getLogs(){let t=this.xmpp.getJingleLog(),i={};i.time=new Date,i.url=window.location.href,i.ua=navigator.userAgent;let n=this.xmpp.getXmppLog();return n&&(i.xmpp=n),t.metadata=i,t}get xmpp(){return this._xmpp}}let l7=function(t){return t.DEVICE_LIST_CHANGED="mediaDevices.devicechange",t.PERMISSIONS_CHANGED="rtc.permissions_changed",t.PERMISSION_PROMPT_IS_SHOWN="mediaDevices.permissionPromptIsShown",t}({}),l3="microphone",ue="camera",ut=(0,m.getLogger)("vad:ActiveDeviceDetector");function ui(t){for(let i of t)i.stopStream()}let un=(0,m.getLogger)("proxyconnection:CustomSignalingLayer");class ur extends o5{constructor(){super(),this.ssrcOwners=new Map,this.chatRoom=null}getPeerMediaInfo(t,i,n){return{}}getPeerSourceInfo(t,i){}getSSRCOwner(t){return this.ssrcOwners.get(t)}getTrackSourceName(t){}removeSSRCOwners(t){if(null!=t&&t.length)for(let i of t)this.ssrcOwners.delete(i)}setChatRoom(t){this.chatRoom=t}setSSRCOwner(t,i){if("number"!=typeof t)throw TypeError(`SSRC(${t}) must be a number`);let n=this.ssrcOwners.get(t);n&&n!==i&&un.error(`SSRC owner re-assigned from ${n} to ${i}`),this.ssrcOwners.set(t,i)}setTrackMuteStatus(t,i){return!1}setTrackVideoType(t,i){return!1}updateSsrcOwnersOnLeave(t){let i=Array.from(this.ssrcOwners).filter(i=>i[1]===t).map(t=>t[0]);null!=i&&i.length&&this.removeSSRCOwners(i)}}let uo=function(t){return t.ACCEPT="session-accept",t.CONNECTION_ERROR="connection-error-encountered",t.INITIATE="session-initiate",t.TERMINATE="session-terminate",t.TRANSPORT_INFO="transport-info",t.UNAVAILABLE="unavailable",t}({}),us=(0,m.getLogger)("proxyconnection:ProxyConnectionPC");class ua{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._options={isInitiator:!1,pcConfig:{},receiveAudio:!1,receiveVideo:!1,...t},this._tracks=[],this._peerConnection=null,this._onError=this._onError.bind(this),this._onRemoteStream=this._onRemoteStream.bind(this),this._onSendMessage=this._onSendMessage.bind(this)}getPeerJid(){return this._options.peerJid}processMessage(t){switch(sy(t,"action")){case uo.ACCEPT:this._onSessionAccept(t);break;case uo.INITIATE:this._onSessionInitiate(t);break;case uo.TERMINATE:this._onSessionTerminate(t);break;case uo.TRANSPORT_INFO:this._onTransportInfo(t)}}start(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this._peerConnection||(this._tracks=this._tracks.concat(t),this._peerConnection=this._createPeerConnection(),this._peerConnection.invite(t))}stop(){this._peerConnection&&this._peerConnection.terminate(),this._onSessionTerminate()}_createPeerConnection(){let t={addCancellableListener:()=>()=>{},addEventListener:()=>()=>{},connected:!0,jingle:{terminate:()=>{}},sendIQ:this._onSendMessage},i={iceServers:cD,...this._options.pcConfig},n={addEventListener:()=>{},addPresenceListener:()=>{},connectionTimes:[],eventEmitter:{emit:t=>{switch(t){case nG.CONNECTION_ICE_FAILED:case nG.CONNECTION_FAILED:this._onError(uo.CONNECTION_ERROR,t)}}},removeEventListener:()=>{},removePresenceListener:()=>{}};this._rtc=new sW({myUserId:()=>""},{}),this._rtc.addListener(nJ.REMOTE_TRACK_ADDED,this._onRemoteStream);let r=new cl(void 0,void 0,this._options.peerJid,t,{offerToReceiveAudio:this._options.receiveAudio,offerToReceiveVideo:this._options.receiveVideo},i,!0,this._options.isInitiator),o=new ur;return o.setChatRoom(n),r.initialize(n,this._rtc,o,{}),r}_onError(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this._options.onError(this._options.peerJid,t,i)}_onRemoteStream(t){this._tracks.push(t),this._options.onRemoteStream(t)}_onSendMessage(t,i){this._options.onSendMessage(this._options.peerJid,t),i&&setTimeout(i,250)}_onSessionAccept(t){this._peerConnection?this._peerConnection.setAnswer(t):us.error("Received an answer when no peer connection exists.")}_onSessionInitiate(t){this._peerConnection?us.error("Received an offer when an offer was already sent."):(this._peerConnection=this._createPeerConnection(),this._peerConnection.acceptOffer(t,()=>{},()=>this._onError(this._options.peerJid,uo.CONNECTION_ERROR,"session initiate error"),[]))}_onSessionTerminate(){this._tracks.forEach(t=>t.dispose()),this._tracks=[],this._peerConnection&&this._peerConnection.onTerminated(),this._rtc&&(this._rtc.removeListener(nJ.REMOTE_TRACK_ADDED,this._onRemoteStream),this._rtc.destroy())}_onTransportInfo(t){this._peerConnection.addIceCandidates(t)}}let ud=["jitsiConnection"],uc=(0,m.getLogger)("proxyconnection:ProxyConnectionService");class ul{constructor(t){this.iceCandidateStr=t.candidate,this.parse()}parse(){let t=this.iceCandidateStr.split(" ");t.length<8||(this.protocol="1"===t[1]?"rtp":"rtcp",this.transport=t[2],this.typeTransport=this.extractTypeTransport(t[3]),this.ipv6=-1!==t[4].indexOf(":"),this.ipAddress=t[4],this.port=t[5],this.type=t[7])}extractTypeTransport(t){let i="None",n=t>>
8424;if("rtp"===this.protocol&&n>=0&&n<=2)switch(n){case 0:i="TLS";break;case 1:i="TCP";break;case 2:i="UDP"}return i}getString(){return this.iceCandidateStr}getType(){return this.type}isHost(){return"host"===this.type.toLowerCase()}isServerReflexive(){return"srflx"===this.type.toLowerCase()}isPeerReflexive(){return"prflx"===this.type.toLowerCase()}isRelay(){return"relay"===this.type.toLowerCase()||"relayed"===this.type.toLowerCase()}isPublicIp(){return"srflx"===this.type.toLowerCase()||"prflx"===this.type.toLowerCase()}getTypeTransport(){return this.typeTransport}isTypeTransportUdp(){return"UDP"===this.typeTransport}isTypeTransportTcp(){return"TCP"===this.typeTransport}isTypeTransportTls(){return"TLS"===this.typeTransport}getTransport(){return this.transport}isUdp(){return"udp"===this.transport.toLowerCase()}isTcp(){return"tcp"===this.transport.toLowerCase()}getProtocol(){return this.protocol}isRtp(){return"rtp"===this.protocol}isRtcp(){return"rtcp"===this.protocol}isIpv6(){return this.ipv6}getIpAddress(){return this.ipAddress}getPort(){return this.port}}let uu="Chrome",uh="Firefox",up="Edge",um={chrome:"Chrome",firefox:"Firefox",edge:"Edge",msie:"Microsoft Internet Explorer",safari:"Safari"},ug="Windows",uf="Mac OS X",u_="Android",uv="iOS";
84class uy{constructor(t,i){this.codeBase=t,this.browser=i}getIceCandidates(t){if(!t)return{localCandidates:[],remoteCandidates:[],iceCandidatePairs:[]};let i=this.extractRawStats(t);return this.processRawStatsForIceInfo(i)}extractRawStats(t){let i,n=[],r=uh,o=uu,s=um.safari;if(this.codeBase===r&&this.browser!==s)t.forEach(function(t){n.push(t)});else if(this.codeBase===o&&this.browser!==s)t&&t.result?n=t.result():t&&t.forEach&&(n=[],t.forEach(function(t){n.push(t)}));else for(i in t)t.hasOwnProperty(i)&&n.push(t[i]);return n}processRawStatsForIceInfo(t){let i,n=[],r=[],o=[];if(!t)return{localCandidates:n,remoteCandidates:r,iceCandidatePairs:o};for(let s=0;s<t.length;++s){let a=this.getParsedStats(t[s]),d=this.statsClassifier(a);if(d.candidatePair)o.push(d.candidatePair);else if(d.transportStats){if("transport"===d.transportStats.type){i=d.transportStats.selectedCandidatePairId;continue}o.push(d.transportStats)}else if(d.localCandidate){let t=d.localCandidate;if("relay"==t.candidateType||"relayed"==t.candidateType){if(!t.mozLocalTransport){let i=t.priority>>24;t.mozLocalTransport=this.formatRelayType(i)}t.mozLocalTransport=t.mozLocalTransport.toLowerCase()}n.push(t)}else d.remoteCandidate&&r.push(d.remoteCandidate)}if(i)for(let t=0;t<o.length;++t)o[t].id===i&&(o[t].googActiveConnection="true");return{localCandidates:n,remoteCandidates:r,iceCandidatePairs:o}}getParsedStats(t){let i={};if(t.timestamp instanceof Date&&(i.timestamp=t.timestamp.getTime().toString()),t.type&&(i.type=t.type),t.names){let n=t.names();for(let r=0;r<n.length;++r)i[n[r]]=t.stat(n[r])}else Object.assign(i,t);if(i.values){for(let t=0;t<i.values.length;t++){let n=i.values[t];Object.assign(i,n)}delete i.values}return i}statsClassifier(t){let i={},n=function(){for(let i=0;i<arguments.length;i++){let n=i<0||arguments.length<=i?void 0:arguments[i];if(t.type===n)return!0}return!1},r=n("inbound-rtp","inboundrtp"),o="true"===t.isRemote||!0===t.isRemote;return r||n("outbound-rtp","outboundrtp")?(i.tracks={},i.tracks.data=t,i.tracks.ssrc=t.ssrc,i.tracks.streamType=r?"inbound":"outbound",i.tracks.reportType="local",void 0!==t.isRemote&&(i.tracks.reportType=o?"remote":"local")):n("candidatepair")&&t.selected?i.transportStats=t:n("localcandidate","local-candidate")?i.localCandidate=t:n("remotecandidate","remote-candidate")?i.remoteCandidate=t:n("transport","googCandidatePair")?i.transportStats=t:n("VideoBwe")?i.bwe=t:n("track")?i.trackStats=t:n("candidate-pair")?i.candidatePair=t:n("codec")?i.codec=t:n("ssrc")&&(i.tracks={},i.tracks.data=t,i.tracks.ssrc=t.ssrc,i.tracks.reportType="local",i.tracks.streamType=t.bytesSent?"outbound":"inbound"),i}formatRelayType(t){let i="none";switch(t){case 0:i="tls";break;case 1:i="tcp";break;case 2:i="udp"}return i}}class uE{constructor(t){this.codeBase=t.codeBase,this.browserName=t.browserName,this.adapter=new uy(this.codeBase,this.browserName),this.isPromiseBased=!0}getIceCandidates(t){let i=this;return new Promise(function(n,r){i.csioGetStats(i.iceCandidatesHandler.bind(i),t,t=>{n(t)})})}iceCandidatesHandler(t,i){i(this.adapter.getIceCandidates(t))}csioGetStats(t,i,n){let r=uh,o=uu,s=up,a=um.safari;i&&(this.codeBase===r?this.getStatsFirefox(t,i,n):this.browserName===a?this.getStatsSafari(t,i,n):this.codeBase===o?this.getStatsChrome(t,i,n):this.codeBase===s&&this.getStatsEdge(t,i,n))}getStatsFirefox(t,i,n){let r=this;if(r.isPromiseBased)try{i.getStats().then(i=>{t(i,n)}).catch(function(o){r.isPromiseBased=!1,i.getStats(null,i=>{t(i,n)},()=>{})})}catch(o){r.isPromiseBased=!1,i.getStats(null,i=>{t(i,n)},()=>{})}else i.getStats(null,i=>{t(i,n)},()=>{})}getStatsChrome(t,i,n){let r=this;if(window&&window.csioReactNative)i.getStats(null,i=>{t(i,n)},function(t){});else if(r.isPromiseBased)try{i.getStats().then(i=>{t(i,n)}).catch(function(o){r.isPromiseBased=!1,i.getStats(i=>{t(i,n)})})}catch(o){r.isPromiseBased=!1,i.getStats(i=>{t(i,n)})}else i.getStats(i=>{t(i,n)})}getStatsEdge(t,i,n){i.getStats().then(i=>{t(i,n)}).catch(function(t){})}getStatsSafari(t,i,n){i.getStats().then(i=>{t(i,n)}).catch(function(t){})}}class uS{constructor(t){this.reset(),this.statshandler=new uE(t)}reset(){this.disconnect(),this.iceServers=null,this.pctpc1=null,this.pctpc2=null,this.sendChannel=null,this.messageCallback=null,this.errorCallback=null,this.parsedIceResults={},this.resolveCb=null,this.rejectCb=null,this.localIpAddressInfo=[],this.localIpAddresses=[],this.localIp=null,this.localIpType=null,this.numberOfLocalIp=0}setMessageCallback(t){this.messageCallback=t}setErrorCallback(t){this.errorCallback=t}send(t){if(this.sendChannel&&"open"===this.sendChannel.readyState)try{this.sendChannel.send(t)}catch(t){this.raiseSendError(Error("Send channel Error"))}else this.raiseSendError(Error("No send channel"))}raiseSendError(t){this.errorCallback&&this.errorCallback(t)}assignEvent(t,i,n){t.addEventListener?t.addEventListener(i,n.bind(this),!1):t.attachEvent&&(i="on"+i,t.attachEvent(i,n.bind(this)))}connect(t){this.reset();let i=new Promise((t,i)=>{this.resolveCb=t,this.rejectCb=i});this.iceServers=t;let n=null;try{if(RTCPeerConnection?n=RTCPeerConnection:webkitRTCPeerConnection?n=webkitRTCPeerConnection:mozRTCPeerConnection?n=mozRTCPeerConnection:window&&window.RTCPeerConnection&&(n=window.RTCPeerConnection),!n){let t=Error("RTCPeerConnection not found");return t.continueFlag=!1,this.rejectCb(t),i}}catch(t){return t.continueFlag=!1,this.rejectCb(t),i}let r={ordered:!1,maxRetransmits:0},o={iceTransportPolicy:"all",iceServers:this.iceServers};try{this.pctpc1=new n(o),this.pctpc2=new n(o)}catch(t){return this.rejectDisconnect(!1,Error("Error creating PCs")),i}this.connectionTimer=setTimeout(()=>{delete this.connectionTimer,this.rejectDisconnect(!1,Error("Connection timeout"))},3e4);
84try{this.sendChannel=this.pctpc1.createDataChannel("precalltest",r),this.sendChannel.binaryType="arraybuffer",this.assignEvent(this.sendChannel,"error",t=>{this.raiseSendError(Error("Datachannel error")),this.rejectDisconnect(!0,Error("Datachannel error"))}),this.assignEvent(this.pctpc2,"datachannel",t=>{let i=t.channel;this.assignEvent(i,"open",t=>{this.resolveCb&&(this.resolveCb(),this.resolveCb=null)}),this.assignEvent(i,"close",t=>{this&&this.disconnect&&this.disconnect()}),this.assignEvent(i,"message",t=>{this.messageCallback&&this.messageCallback(t.data)}),this.assignEvent(i,"error",t=>{this.errorCallback&&this.errorCallback(t),this.rejectDisconnect(!0,Error("receiveChannel error"))})})}catch(t){return this.rejectDisconnect(!1,Error("Error adding datachannel")),i}try{this.assignEvent(this.pctpc1,"icecandidate",t=>{this.onIceCandidate(this.pctpc1,t)}),this.assignEvent(this.pctpc1,"iceconnectionstatechange",t=>{this.onIceStateChange(this.pctpc1,t)}),this.assignEvent(this.pctpc2,"icecandidate",t=>{this.onIceCandidate(this.pctpc2,t)}),this.assignEvent(this.pctpc2,"iceconnectionstatechange",t=>{this.onIceStateChange(this.pctpc2,t)}),this.pctpc1.createOffer().then((t,i)=>{this.onCreateOfferSuccess(t)},t=>{this.onCreateOfferError(this.pctpc1,t)})}catch(t){return this.rejectDisconnect(!1,Error("Error starting connection")),i}return i}rejectDisconnect(t,i){this.disconnect(),this.rejectCb&&(i.continueFlag=t,this.rejectCb(i)),this.resolveCb=null,this.rejectCb=null}disconnect(){if(clearTimeout(this.connectionTimer),clearTimeout(this.iceTimer),this.sendChannel)try{this.sendChannel.close()}catch(t){}if(this.pctpc1)try{this.pctpc1.close()}catch(t){}if(this.pctpc1=null,this.pctpc2)try{this.pctpc2.close()}catch(t){}this.pctpc2=null}getName(t){return t===this.pctpc1?"pctpc1":"pctpc2"}getOtherPc(t){return t===this.pctpc1?this.pctpc2:this.pctpc1}onCreateOfferError(t,i){this.rejectDisconnect(!1,Error("Failed to create offer"))}onCreateAnswerError(t,i){this.rejectDisconnect(!1,Error("Failed to create answer"))}onCreateOfferSuccess(t){try{this.pctpc1.setLocalDescription(t).then(()=>{this.onSetLocalSuccess(this.pctpc1)},t=>{this.onSetSessionDescriptionError(this.pctpc1,t)}),this.pctpc2.setRemoteDescription(t).then(()=>{this.onSetRemoteSuccess(this.pctpc2)},t=>{this.onSetRemoteSessionDescriptionError(this.pctpc2,t)}),this.pctpc2.createAnswer().then(t=>{this.onCreateAnswerSuccess(t)},t=>{this.onCreateAnswerError(this.pctpc2,t)})}catch(t){this.rejectDisconnect(!1,Error("Error processing offer"))}}onSetLocalSuccess(t){this.getName(t)}onSetRemoteSuccess(t){this.getName(t)}onSetSessionDescriptionError(t,i){this.rejectDisconnect(!1,Error("Failed to set session description"))}onSetRemoteSessionDescriptionError(t,i){this.rejectDisconnect(!1,Error("Failed to set session description"))}onCreateAnswerSuccess(t){try{this.pctpc2.setLocalDescription(t).then(()=>{this.onSetLocalSuccess(this.pctpc2)},t=>{this.onSetSessionDescriptionError(this.pctpc2,t)}),this.pctpc1.setRemoteDescription(t).then(()=>{this.onSetRemoteSuccess(this.pctpc1)},t=>{this.onSetRemoteSessionDescriptionError(this.pctpc1,t)})}catch(t){this.rejectDisconnect(!1,Error("Error processing answer"))}}onIceCandidate(t,i){try{if(!i.candidate||!i.candidate.candidate)return;let n=new ul(i.candidate);if(t==this.pctpc1&&this.statshandler.codeBase==uu&&(n.isRelay()&&(n.isTypeTransportUdp()&&(this.parsedIceResults.relayUdpGathered=!0),n.isTypeTransportTcp()&&(this.parsedIceResults.relayTcpGathered=!0),n.isTypeTransportTls()&&(this.parsedIceResults.relayTlsGathered=!0)),n.isServerReflexive()&&(this.parsedIceResults.srflxGathered=!0)),!n.isRelay())return this.localIpAddresses.includes(n.getIpAddress())||(this.localIpAddresses.push(n.getIpAddress()),this.localIpAddressInfo.push({ip:n.getIpAddress(),candidateType:n.getType(),networkType:"unknown"}),n.isPublicIp()&&this.numberOfLocalIp++),void(n.isPublicIp()&&null===this.localIp&&(this.localIp=n.getIpAddress(),this.localIpType=n.getType()));this.getOtherPc(t).addIceCandidate(i.candidate).then(()=>{this.onAddIceCandidateSuccess(t)},i=>{this.onAddIceCandidateError(t,i,n.isRelay())})}catch(t){this.rejectDisconnect(!1,t)}}onAddIceCandidateSuccess(t){this.getName(t)}onAddIceCandidateError(t,i,n){n&&this.rejectDisconnect(!1,Error("failed to add ICE Candidate"))}onIceStateChange(t,i){try{let i="(?)";t&&(i=t.iceConnectionState),"failed"===i&&this.rejectDisconnect(!0,Error("ICE failure")),"checking"!==i||this.iceTimer||(this.iceTimer=setTimeout(()=>{delete this.iceTimer,this.rejectDisconnect(!0,Error("ICE timeout"))},1e4)),"completed"!==i&&"connected"!==i||(clearTimeout(this.iceTimer),delete this.iceTimer)}catch(t){this.rejectDisconnect(!1,Error("Error processing ICE state change"))}}getIceResults(){return new Promise((t,i)=>{let n=JSON.parse(JSON.stringify(this.iceServers));for(let t=0;t<n.length;t++){let i=n[t];n.hasOwnProperty(i)||delete i.credential}let r={turnIpAddress:"",turnIpVersion:"",turnTransport:"",iceServers:n,ipv6Supported:!1,ipv4Supported:!1,relayTlsGathered:!1,relayTcpGathered:!1,relayUdpGathered:!1,srflxGathered:!1,relayTlsSuccess:!1,relayTcpSuccess:!1,relayUdpSuccess:!1,srflxSuccess:!1,localIpAddressInfo:[],localIP:"",numberOfLocalIPs:0,localIPType:"",localIPNetworkType:""};for(let t in this.parsedIceResults)this.parsedIceResults.hasOwnProperty(t)&&(r[t]=this.parsedIceResults[t]);this.pctpc1?this.statshandler.getIceCandidates(this.pctpc1).then(i=>{r.localIP=this.localIp,r.localIPType=this.localIpType,r.numberOfLocalIPs=this.numberOfLocalIp;for(let t=0;t<this.localIpAddressInfo.length;t++){let n=this.localIpAddressInfo[t];for(let t=0;t<i.localCandidates.length;t++){let r=i.localCandidates[t],o=null;(o=r.ip?r.ip:r.address?r.address:r.ipAddress)===n.ip&&"unknown"!==r.networkType&&(n.networkType=r.networkType)}r.localIpAddressInfo.push(n)}let n=!1;for(let t=0;t<i.iceCandidatePairs.length;t++){let o=i.iceCandidatePairs[t],s="string"==typeof o.googActiveConnection?"true"===o.googActiveConnection:o.googActiveConnection,a="string"==typeof o.selected?"true"===o.selected:o.selected;if(s||a)for(let t=0;t<i.localCandidates.length;t++){let s=i.localCandidates[t],a=null;a=s.ip?s.ip:s.address?s.address:s.ipAddress,s.id==o.localCandidateId&&(r.turnIpAddress=a,r.turnNetworkType=s.networkType,r.localIPNetworkType=s.networkType,r.turnIpVersion=-1!==a.indexOf(":")?"ipv6":"ipv4",r.turnTransport=s.mozLocalTransport,n=!0),"relay"!==s.candidateType&&"relayed"!==s.candidateType||("udp"===s.mozLocalTransport&&(r.relayUdpSuccess=!0),"tcp"===s.mozLocalTransport&&(r.relayTcpSuccess=!0),"tls"===s.mozLocalTransport&&(r.relayTlsSuccess=!0)),a&&(-1!==a.indexOf(":")?r.ipv6Supported=!0:r.ipv4Supported=!0)}}for(let t=0;t<i.localCandidates.length;t++){let n=i.localCandidates[t];"relay"!==n.candidateType&&"relayed"!==n.candidateType||("udp"===n.mozLocalTransport&&(r.relayUdpGathered=!0),"tcp"===n.mozLocalTransport&&(r.relayTcpGathered=!0),"tls"===n.mozLocalTransport&&(r.relayTlsGathered=!0)),"srflx"!==n.candidateType&&"serverreflexive"!==n.candidateType||(r.srflxGathered=!0)}for(let t=0;t<i.iceCandidatePairs.length;t++){let n=i.iceCandidatePairs[t];if("succeeded"===n.state)for(let t=0;t<i.localCandidates.length;t++){let o=i.localCandidates[t];o.id==n.localCandidateId&&("relay"!==o.candidateType&&"relayed"!==o.candidateType||("udp"===o.mozLocalTransport&&(r.relayUdpSuccess=!0),"tcp"===o.mozLocalTransport&&(r.relayTcpSuccess=!0),"tls"===o.mozLocalTransport&&(r.relayTlsSuccess=!0)),"srflx"!==o.candidateType&&"serverreflexive"!==o.candidateType||(r.srflxSuccess=!0))}}t(r)},t=>{i(t)}):i(Error("PC not available for stats"))},t=>{reject(t)})}}function ub(){return window&&window.performance&&window.performance.now&&window.performance.timing&&window.performance.timing.navigationStart?window.performance.now()+window.performance.timing.navigationStart:Date.now()}class uC{constructor(t){this.connection=t,this.active=!1,this.results={}}getResults(){return this.results}start(){let t=new Promise((t,i)=>{this.resolveCb=t,this.rejectCb=i});return this.connection.setMessageCallback(this.handleMessage.bind(this)),this.connection.setErrorCallback(this.handleError.bind(this)),this.active=!0,this.forceStopped=!1,this.initiate(),t}stop(){this.active=!1}forceStop(){this.forceStopped=!0,this.stop(),this.finished()}isActive(){return this.active}initiate(){}handleMessage(t){}handleError(t){}send(t){this.connection.send(t)}finished(){this.active=!1,this.resolveCb&&(this.resolveCb(),this.resolveCb=null)}failed(t){this.active=!1,this.rejectCb&&(this.rejectCb(t),this.rejectCb=null)}}let uD=500;class uT extends uC{constructor(t){super(t),this.sendTimer=null,this.countSent=0,this.rtts=[]}initiate(){this.results.startTimestamp=ub(),this.sendPing()}handleMessage(t){if(!this.isActive())return;let i=parseInt(t,10),n=this.calculateRtt(i);this.rtts.push(n),this.countSent<10?this.sendPing():this.calculateMetrics()}handleError(t){this.fillResults(),this.failed(t)}
84sendPing(){if(!this.isActive())return;let t=ub();this.send(t.toString()),this.countSent+=1,this.sendTimer&&(clearTimeout(this.sendTimer),this.sendTimer=null),this.countSent<10?this.sendTimer=setTimeout(this.sendPing.bind(this),100):this.sendTimer=setTimeout(this.calculateMetrics.bind(this),uD)}calculateRtt(t){return ub()-t}calculateMetrics(){this.sendTimer&&(clearTimeout(this.sendTimer),this.sendTimer=null),this.fillResults(),this.finished()}fillResults(){this.results.sentMessages=this.countSent,this.results.unAckedMessages=this.countSent-this.rtts.length,this.results.maxMessages=10,this.results.forceStopped=this.forceStopped,this.results.median=this.median(),this.results.average=this.average(),this.results.variance=this.std(),this.results.endTimestamp=ub()}median(){if(0==this.rtts.length)return uD;this.rtts.sort();let t=Math.floor(this.rtts.length/2);return this.rtts[t]}average(){if(0==this.rtts.length)return uD;let t=0;for(let i=0;i<this.rtts.length;i++)t+=this.rtts[i];return t/this.rtts.length}variance(){if(0==this.rtts.length)return uD;let t=0,i=this.average();for(let n=0;n<this.rtts.length;n++)t+=Math.pow(this.rtts[n]-i,2);return t/this.rtts.length}std(){let t=this.variance();return t<=0?0:Math.sqrt(t)}stop(){this.isActive()&&(super.stop(),this.fillResults())}}function ux(t){let i="";for(let n=0;n<t;n++)i+=String.fromCharCode(35+58*Math.random());return i}class uR{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1200;this.message={timestamp:"",sentBytes:1e4,padding:""};const i=ux(t-ub().toString().length-JSON.stringify(this.message).length);this.message.padding=i}make(t){return this.message.timestamp=ub(),this.message.sentBytes=t,JSON.stringify(this.message)}}class uA extends uC{constructor(t,i,n){if(super(t),this.sentBytes=0,this.receivedBytes=0,this.secondHalfBytes=0,this.secondHalfStart=null,this.bufferEmpty=1,this.chunkSize=1200,this.messageMaker=new uR(this.chunkSize),this.duration=5e3,null!=i){let t=50*i;this.duration=Math.max(Math.min(t,1e4),1e3)}this.sendTimer=null,this.intervals=[],this.intervalStart=0,this.intervalLength=100,this.intervalBytes=0,this.loss=n,this.lastReceivedTimestamp=0}initiate(){if(window&&window.csioReactNative){let t="Not running throughput test for react-native";return void this.handleError(Error(t))}this.startSend()}handleMessage(t){if(!this.isActive())return;this.lastMessage=t,this.receivedBytes+=t.length;let i=ub();if(this.lastReceivedTimestamp=i,this.sendTimer||(this.results.startTimestamp=i,this.sendTimer=setTimeout(()=>{this.stop(),this.finished()},this.duration)),0==this.intervalStart&&(this.intervalStart=i),this.intervalBytes+=t.length,i-this.intervalStart>=this.intervalLength){let t=i-this.intervalStart,n=this.averageThroughput(this.intervalBytes,t),r=null;try{r=i-JSON.parse(this.lastMessage).timestamp}catch(t){}this.intervals.push({startTimestamp:this.intervalStart,endTimestamp:i,bytesReceived:this.intervalBytes,average:n,rtt:r}),this.intervalStart=i,this.intervalBytes=0}this.results.startTimestamp&&i-this.results.startTimestamp>this.duration/2&&(this.secondHalfStart||(this.secondHalfStart=i),this.secondHalfBytes+=t.length)}handleError(t){this.stop(),this.failed(t)}averageThroughput(t,i){return 0===i?0:t/(i/1e3)*8/1024}bufferListener(){this.sendChannel.removeEventListener("bufferedamountlow",this.bufferListener.bind(this)),this.fillBuffer()}fillBuffer(){for(0==this.sendChannel.bufferedAmount&&(this.bufferEmpty+=1);this.isActive()&&!(this.sentBytes>1e6);){if(this.sendChannel.bufferedAmount>this.bufferFullThreshold)return void(this.usePolling?setTimeout(this.fillBuffer.bind(this),250):this.sendChannel.addEventListener("bufferedamountlow",this.bufferListener.bind(this)));let t=this.messageMaker.make(this.sentBytes);this.sentBytes+=t.length,this.send(t)}this.sendChannel.removeEventListener("bufferedamountlow",this.bufferListener.bind(this))}startSend(){this.isActive()&&(this.bufferFullThreshold=1e3*this.chunkSize,this.sendChannel=this.connection.sendChannel,this.usePolling=!0,"number"==typeof this.sendChannel.bufferedAmountLowThreshold&&(this.usePolling=!1,this.sendChannel.bufferedAmountLowThreshold=this.bufferFullThreshold/10),setTimeout(this.fillBuffer.bind(this),0))}fillResults(){this.results.endTimestamp=this.lastReceivedTimestamp,this.results.maxDuration=this.duration,this.results.forceStopped=this.forceStopped,this.results.bufferEmpty=this.bufferEmpty,this.results.intervals=this.intervals,this.results.bytesPrepared=this.sentBytes,this.results.bytesReceived=this.receivedBytes,this.results.startTimestamp||(this.results.startTimestamp=this.results.endTimestamp);let t=0,i=0;this.secondHalfStart&&(t=this.results.endTimestamp-this.secondHalfStart,i=this.averageThroughput(this.secondHalfBytes,t));let n=this.results.endTimestamp-this.results.startTimestamp,r=this.averageThroughput(this.receivedBytes,n);r>i&&(i=r),this.results.average=i,this.results.fractionLostBytes=this.loss}stop(){this.isActive()&&(clearTimeout(this.sendTimer),this.sendTimer=null,super.stop(),this.fillResults())}}class uw extends uC{constructor(t){super(t),this.sentBytes=0,this.receivedBytes=0,this.chunkSize=1024,this.messageMaker=new uR(this.chunkSize),this.duration=3e3,this.sendTimer=null,this.lastMessage=null,this.numBufferFill=0}initiate(){if(window&&window.csioReactNative){let t="Not running loss test for react-native";return void this.handleError(Error(t))}let t=ub();this.results.startTimestamp=t,this.startSend()}handleMessage(t){this.isActive()&&(this.lastMessage=t,this.receivedBytes+=t.length,this.sendTimer||(this.sendTimer=setTimeout(()=>{this.stop(),this.finished()},this.duration)))}handleError(t){this.stop(),this.failed(t)}fillBuffer(){let t=0;for(;this.isActive()&&!(t>this.bufferFullThreshold);){let i=this.messageMaker.make(this.sentBytes);this.sentBytes+=i.length,t+=i.length,setTimeout(this.send(i),8)}t=0,this.numBufferFill++,this.numBufferFill>=2||this.startSend()}startSend(){this.isActive()&&(this.bufferFullThreshold=1e3*this.chunkSize/8,this.sendChannel=this.connection.sendChannel,setTimeout(this.fillBuffer.bind(this),250))}fillResults(){this.results.endTimestamp=ub(),this.results.maxDuration=this.duration,this.results.forceStopped=this.forceStopped,this.results.sentBytes=this.sentBytes,this.results.bytesReceived=this.receivedBytes;let t=null;try{t=JSON.parse(this.lastMessage)}catch(t){return}if(t){let i=t.sentBytes+this.lastMessage.length;this.results.bytesSent=i,this.results.fractionLostBytes=1-this.receivedBytes/i}else this.results.bytesSent=-1,this.results.fractionLostBytes=-1}stop(){this.isActive()&&(clearTimeout(this.sendTimer),this.sendTimer=null,super.stop(),this.fillResults())}}let uI="success",uk="stopped",uO="failed";class uN{constructor(){this.start=ub(),this.id=`${Math.trunc(this.start)}-${ux(20)}`,this.version="@@pctVersion",this.failures=[],this.results={},this.status=uI}setStatusStopped(){this.status!==uO&&(this.status=uk)}setStatusFailed(){this.status=uO}setStatusSuccess(){this.status!==uk&&(this.status=uI)}getResults(){return{id:this.id,version:this.version,status:this.status,startTimestamp:this.start,endTimestamp:ub(),failures:this.failures,tests:this.results}}getFailureNumber(){return this.failures.length}getId(){return this.id}add(t,i){this.results[t]=i,i.hasOwnProperty("forceStopped")&&1==i.forceStopped&&this.setStatusStopped()}failure(t){"object"==typeof t&&(t=t.toString());let i={timestamp:ub(),reason:t};this.failures.push(i)}}class uP{constructor(){this.active=!1}start(){this.active=!0,this.onlineCheck=[],window&&window.addEventListener&&"function"==typeof window.addEventListener&&(window.addEventListener("offline",()=>{this.addEntry()}),window.addEventListener("online",()=>{this.addEntry()}),this.addEntry())}addEntry(){if(!this.active)return;let t=ub();if(navigator&&navigator.onLine){let i=navigator.onLine;this.onlineCheck.push({timestamp:t,online:i})}}stop(){return this.active=!1,window&&window.removeEventListener&&"function"==typeof window.removeEventListener&&(window.removeEventListener("offline",()=>{this.addEntry()}),window.removeEventListener("online",()=>{this.addEntry()})),this.onlineCheck}}let uL="rtt",uM="loss",uF="throughput",uj=class{constructor(){this.browserInfo=function(){let t=um.chrome,i=null,n=null,r=null,o=null,s=uu;if(window&&(!window.navigator||!window.navigator.userAgent||window.csioReactNative))return window&&window.csioGetOsName&&(i=window.csioGetOsName()),window&&window.csioGetOsVer&&(n=window.csioGetOsVer()),window&&window.csioReactNative&&(r="react-native"),{browserName:t,codeBase:s,os:i,osVersion:n,userAgent:r};let a,d,c,l=(r=navigator.userAgent).toLowerCase();(o=navigator.appVersion)&&(d=""+parseFloat(a=o.toLowerCase()));let u="version";if(-1!==(c=l.indexOf("opera")))t=um.opera,d=l.substring(c+6),-1!==(c=l.indexOf(u))&&(d=l.substring(c+8)),s=uu;else if(-1!==(c=l.indexOf("opr")))t=um.opera,d=l.substring(c+4),-1!==(c=l.indexOf(u))&&(d=l.substring(c+8)),s=uu;else if(-1!==(c=l.indexOf("msie")))t=um.msie,d=l.substring(c+5),s=uu;else if(-1!==(c=l.indexOf("edge")))t=um.edge,d=l.substring(c+5),s=up;else if(-1!==(c=l.indexOf("edg")))t=um.edge,d=l.substring(c+4),s=uu;else if(-1!==(c=l.indexOf("chrome")))t=um.chrome,d=l.substring(c+7),s=uu;
84else if(-1!==(c=l.indexOf("safari"))){if(t=um.safari,d=l.substring(c+7),-1!==(c=l.indexOf(u))&&(d=l.substring(c+8))){let t=d.split(" ");t&&t.length>0&&(d=t[0])}s=uu}else -1!==(c=l.indexOf("firefox"))?(t=um.firefox,d=l.substring(c+8),s=uh):-1!==(c=l.indexOf("trident"))&&(t=um.msie,c=l.indexOf("rv"),d=l.substring(c+3,c+7),s=uu);let h,p,m=[{s:"Windows 3.11",r:/win16/},{s:"Windows 95",r:/(windows 95|win95|windows_95)/},{s:"Windows ME",r:/(win 9x 4.90|windows me)/},{s:"Windows 98",r:/(windows 98|win98)/},{s:"Windows CE",r:/windows ce/},{s:"Windows 2000",r:/(windows nt 5.0|windows 2000)/},{s:"Windows XP",r:/(windows nt 5.1|windows xp)/},{s:"Windows Server 2003",r:/windows nt 5.2/},{s:"Windows Vista",r:/windows nt 6.0/},{s:"Windows 7",r:/(windows 7|windows nt 6.1)/},{s:"Windows 8.1",r:/(windows 8.1|windows nt 6.3)/},{s:"Windows 8",r:/(windows 8|windows nt 6.2)/},{s:"Windows 10",r:/(windows 10|windows nt 10.0)/},{s:"Windows NT 4.0",r:/(windows nt 4.0|winnt4.0|winnt|windows nt)/},{s:"Windows ME",r:/windows me/},{s:"Android",r:/android/},{s:"Open BSD",r:/openbsd/},{s:"Sun OS",r:/sunos/},{s:"Linux",r:/(linux|x11)/},{s:"iOS",r:/(iphone|ipad|ipod)/},{s:"Mac OS X",r:/mac os x/},{s:"Mac OS",r:/(macppc|macintel|mac_powerpc|macintosh)/},{s:"QNX",r:/qnx/},{s:"UNIX",r:/unix/},{s:"BeOS",r:/beos/},{s:"OS/2",r:/os\/2/},{s:"Search Bot",r:/(nuhk|googlebot|yammybot|openbot|slurp|msnbot|ask jeeves\/teoma|ia_archiver)/}];for(h in m)if(m.hasOwnProperty(h)&&(p=m[h]).r.test(l)){i=p.s;break}switch(i&&/Windows/.test(i)&&(n=/Windows (.*)/.exec(i)[1],i=ug),i){case uf:if(!(n=/mac os x (1[\.\_\d]+)/.exec(l)))break;n=n[1];break;case u_:if(!(n=/android ([\.\_\d]+)/.exec(l)))break;n=n[1];break;case uv:if(!a||!(n=/os (\d+)_(\d+)_?(\d+)?/.exec(a)))break;n=n[1]+"."+n[2]+"."+(0|n[3])}let g=d.split(" "),f=d;return g&&g.length>0&&(f=g[0]),{browserName:t,browserVersion:f,os:i,osVersion:n,codeBase:s,userAgent:r}}(),this.onlineCheck=new uP,this.callsInProgress=0,this.turnTests=[uL,uM,uF],this.active=!1,this.rtt=null,this.fractionLostBytes=-1,this.resultsHandler=null,this.startResolve=null,this.startReject=null}start(t){return this.iceServers=t,new Promise((i,n)=>{if(this.startResolve=i,this.startReject=n,this.browserInfo.browserName===um.msie)return void this.startReject(Error("Not started: disabled for IE"));if(this.active)return void this.startReject(Error("Not started: already in progress"));if(this.callsInProgress>0)return void this.startReject(Error("Not started: call in progress"));if(!t)return void this.startReject(Error("Not started: no ICE servers given"));this.turnTestCounter=0,this.resultsHandler=new uN;let r={type:"browser",os:this.browserInfo.os,osVersion:this.browserInfo.osVersion,buildName:this.browserInfo.browserName,buildVersion:this.browserInfo.browserVersion,userAgent:this.browserInfo.userAgent};this.resultsHandler.add("endpointInfo",r),this.onlineCheck.start(),this.active=!0,this._start()})}_start(){this.active&&(this.turnConnection=new uS(this.browserInfo),this.turnConnection.connect(this.iceServers).then(()=>{this.active?(this.resultsHandler&&this.resultsHandler.setStatusSuccess(),this.startTurnTests().then(()=>{this.stop()},t=>{this.stop()})):this.stop()},t=>{let i=t.continueFlag;if(this.resultsHandler&&this.resultsHandler.failure(t),!i){this.turnConnection.disconnect(),this.active=!1;let i="";try{i=t.stack}catch(n){i=t.toString()}return i&&""!==i||(i=t.toString()),this.resultsHandler&&this.resultsHandler.setStatusFailed(),void this.startReject(Error(i))}this.resultsHandler?(this.resultsHandler.setStatusFailed(),this.resultsHandler.getFailureNumber()>=10?this.stop():(this.turnConnection.disconnect(),setTimeout(()=>{this._start()},0))):this.stop()}))}stop(){if(!this.active)return;this.active=!1,this.activeTurnTest&&this.activeTurnTest.forceStop();let t=this.onlineCheck.stop();this.resultsHandler&&this.resultsHandler.add("onlineStatus",t),this.turnConnection.getIceResults().then(t=>{this.resultsHandler&&this.resultsHandler.add("ice",t),this.turnConnection.disconnect(),this.sendResults()},t=>{this.resultsHandler&&this.resultsHandler.failure(t),this.turnConnection.disconnect(),this.sendResults()})}getPublicPrecalltestResults(t){let i={mediaConnectivity:!1,throughput:null,fractionalLoss:null,rtt:null,jitter:null,timestamp:Date.now()};return t&&t.tests&&(i.startTimestamp=t.startTimestamp,i.endTimestamp=t.endTimestamp,t.tests.rtt&&(i.rtt=t.tests.rtt.median,i.mediaConnectivity=!0,i.jitter=t.tests.rtt.variance),t.tests.throughput&&(i.throughput=t.tests.throughput.average,i.fractionalLoss=Math.max(t.tests.throughput.fractionLostBytes,0),i.mediaConnectivity=!0),t.tests.ice&&(t.tests.ice.relayTcpSuccess||t.tests.ice.relayTlsSuccess||t.tests.ice.relayUdpSuccess)&&(i.mediaConnectivity=!0)),i}sendResults(){if(!this.resultsHandler)return void this.startReject(Error("No results present"));let t=this.resultsHandler.getResults(),i=this.getPublicPrecalltestResults(t);this.startResolve(i)}callStarts(){this.callsInProgress+=1,this.resultsHandler&&this.resultsHandler.setStatusStopped(),this.stop()}callFinished(){this.callsInProgress-=1}crashDisconnect(){try{this.turnConnection.disconnect()}catch(t){}}startTurnTests(){if(this.turnTestCounter>=this.turnTests.length)return new Promise((t,i)=>{t()});let t=this.turnTests[this.turnTestCounter],i=null;switch(t){case uL:i=new uT(this.turnConnection);break;case uM:i=new uw(this.turnConnection);break;case uF:i=new uA(this.turnConnection,this.rtt,this.fractionLostBytes);break;default:return new Promise((i,n)=>{n(Error(`Unknown test: ${t}`))})}return this.activeTurnTest=i,this.active?i.start().then(()=>(this.handleTestResults(t,i.getResults()),this.turnTestCounter+=1,this.activeTurnTest=null,this.startTurnTests()),n=>(this.handleTestResults(t,i.getResults(),n),this.turnTestCounter+=1,this.activeTurnTest=null,this.startTurnTests())):new Promise((t,i)=>{i(Error("Test trying to start while testing is not active"))})}handleTestResults(t,i){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;null==n&&t==uL?this.rtt=i.median:null==n&&t==uM&&(this.fractionLostBytes=i.fractionLostBytes),this.resultsHandler&&this.resultsHandler.add(t,i)}};var uV=n(943),uB=n.n(uV);
84let uU={loadScript(t){let i=t.src,n=t.async,r=t.prepend,o=t.relativeURL,s=t.loadCallback,a=t.errorCallback,d=document,c="script",l=d.createElement(c),u=d.getElementsByTagName(c)[0];if(l.async=n,o){let t=uB()();if(t){let n=t.src,r=n.substring(0,n.lastIndexOf("/")+1);n&&r&&(i=r+i)}}s&&(l.onload=s),a&&(l.onerror=a),l.src=i,r?u.parentNode.insertBefore(l,u):u.parentNode.appendChild(l)}},u$=(0,m.getLogger)("webaudio:AudioMixer");class uH{constructor(){this._started=!1,this._streamsToMix=[],this._streamMSSArray=[]}addMediaStream(t){t.getAudioTracks()&&0!==t.getAudioTracks().length||u$.warn("Added MediaStream doesn't contain audio tracks."),this._streamsToMix.push(t)}start(){if(this._started&&this._mixedMSD)return this._mixedMSD.stream;if(this._audioContext=s8(),!this._streamsToMix.length)return u$.warn("No MediaStream's added to AudioMixer, nothing will happen."),null;for(let t of(this._started=!0,this._mixedMSD=this._audioContext.createMediaStreamDestination(),this._streamsToMix)){let i=this._audioContext.createMediaStreamSource(t);i.connect(this._mixedMSD),this._streamMSSArray.push(i)}return this._mixedMSD.stream}reset(){for(let t of(this._started=!1,this._streamsToMix=[],this._streamMSSArray))t.disconnect();this._streamMSSArray=[],this._audioContext&&(this._audioContext=void 0),this._mixedMSD=void 0}}let uJ=g().getLogger("core:JitsiMeetJS");g().setLogLevel(g().levels.INFO);let uq=!1;function uG(t){let i={};return i.audio_requested=t.devices.includes(nx.AUDIO),i.video_requested=t.devices.includes(nx.VIDEO),i.screen_sharing_requested=t.devices.includes(rw.DESKTOP),i.video_requested&&(i.resolution=t.resolution),i}let uz=new class extends rI{constructor(){super(),this._initialized=!1,this._permissions={},this._permissionsApiSupported=Promise.resolve(!1)}_parsePermissionState(){let t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).state;if("string"!=typeof t)throw TypeError();return"granted"===t}_handlePermissionsChange(t){[nx.AUDIO,nx.VIDEO].some(i=>i in t&&t[i]!==this._permissions[i])&&(this._permissions={...this._permissions,...t},this.eventEmitter.emit(l7.PERMISSIONS_CHANGED,this._permissions),(this._permissions[nx.AUDIO]||this._permissions[nx.VIDEO])&&this.enumerateDevices(()=>{}))}init(){this._initialized||(this._initialized=!0,sW.addListener(nJ.DEVICE_LIST_CHANGED,t=>this.eventEmitter.emit(l7.DEVICE_LIST_CHANGED,t)),sW.addListener(nJ.PERMISSIONS_CHANGED,t=>this._handlePermissionsChange(t)),this._permissionsApiSupported=new Promise(t=>{if(!navigator.permissions)return void t(!1);let i=[];i.push(navigator.permissions.query({name:ue}).then(t=>(this._handlePermissionsChange({[nx.VIDEO]:this._parsePermissionState(t)}),t.onchange=()=>{try{this._handlePermissionsChange({[nx.VIDEO]:this._parsePermissionState(t)})}catch(t){}},!0)).catch(()=>!1)),i.push(navigator.permissions.query({name:l3}).then(t=>(this._handlePermissionsChange({[nx.AUDIO]:this._parsePermissionState(t)}),t.onchange=()=>{try{this._handlePermissionsChange({[nx.AUDIO]:this._parsePermissionState(t)})}catch(t){}},!0)).catch(()=>!1)),Promise.all(i).then(i=>t(i.every(t=>t)))}))}enumerateDevices(t){sW.enumerateDevices(t)}isDeviceChangeAvailable(t){return sW.isDeviceChangeAvailable(t)}isDevicePermissionGranted(t){return new Promise(i=>{t in this._permissions?i(this._permissions[t]):this._permissionsApiSupported.then(n=>{if(!n)return void i(!1);let r=[];switch(t){case nx.VIDEO:r.push(navigator.permissions.query({name:ue}));break;case nx.AUDIO:r.push(navigator.permissions.query({name:l3}));break;default:r.push(navigator.permissions.query({name:ue})),r.push(navigator.permissions.query({name:l3}))}Promise.all(r).then(t=>i(t.every(t=>{try{return this._parsePermissionState(t)}catch{return!1}})),()=>i(!1))})})}isMultipleAudioInputSupported(){return!(nf.isFirefox()&&nf.isVersionLessThan(101)||nf.isIosBrowser())}getAudioOutputDevice(){return sW.getAudioOutputDevice()}setAudioOutputDevice(t){return sW.setAudioOutputDevice(t)}},uK={JitsiConnection:l9,ProxyConnectionService:class{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const i=t.jitsiConnection,n=function(t,i){if(null==t)return{};var n,r,o=function(t,i){if(null==t)return{};var n={};for(var r in t)if(({}).hasOwnProperty.call(t,r)){if(-1!==i.indexOf(r))continue;n[r]=t[r]}return n}(t,i);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(r=0;r<s.length;r++)n=s[r],-1===i.indexOf(n)&&({}).propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(t,ud);this._options={pcConfig:i&&i.xmpp.connection.jingle.p2pIceConfig,...n},this._peerConnection=null,this._onFatalError=this._onFatalError.bind(this),this._onSendMessage=this._onSendMessage.bind(this),this._onRemoteStream=this._onRemoteStream.bind(this)}processMessage(t){let i=t.from;if(!i)return;if(this._peerConnection&&this._peerConnection.getPeerJid()!==i)return void this._onFatalError(i,uo.CONNECTION_ERROR,"rejected");let n=sb(this._convertStringToXML(t.data.iq),"jingle"),r=sy(n,"action");r===uo.INITIATE&&(this._peerConnection=this._createPeerConnection(i,{isInitiator:!1,receiveVideo:!0})),this._peerConnection&&n&&this._peerConnection.processMessage(n),r!==uo.CONNECTION_ERROR&&r!==uo.UNAVAILABLE&&r!==uo.TERMINATE||this._selfCloseConnection()}start(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this._peerConnection=this._createPeerConnection(t,{isInitiator:!0,receiveVideo:!1}
84),i.forEach((t,i)=>{let n=o2("peer",t.getType(),i);t.setSourceName(n)}),this._peerConnection.start(i)}stop(){this._peerConnection&&this._peerConnection.stop(),this._peerConnection=null}_convertStringToXML(t){try{return function(t){if(!t||"string"!=typeof t)return null;let i=(new DOMParser).parseFromString(t,"text/xml"),n=sb(i,"parsererror");return n&&s_.error("XML parsing error:",n.textContent||""),i}(t)}catch(t){return uc.error("Attempted to convert incorrectly formatted xml"),null}}_createPeerConnection(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t)throw Error("Cannot create ProxyConnectionPC without a peer.");return new ua({onError:this._onFatalError,onRemoteStream:this._onRemoteStream,onSendMessage:this._onSendMessage,pcConfig:this._options.pcConfig,peerJid:t,...i})}_onFatalError(t,i){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";uc.error("Received a proxy connection error",t,i,n);let r=(0,io.$iq)({to:t,type:"set"}).c("jingle",{action:i,xmlns:"urn:xmpp:jingle:1"}).c("details").t(n).up();this._onSendMessage(t,r),this._peerConnection&&this._peerConnection.getPeerJid()===t&&this._selfCloseConnection()}_onRemoteStream(t){let i;if(!this._options.onRemoteStream)return uc.error("Remote track received without callback."),void t.dispose();let n=t.isVideoTrack();n&&(i=this._options.convertVideoToDesktop?rw.DESKTOP:rw.CAMERA);let r=t.getOriginalStream(),o=sW.createLocalTracks([{deviceId:`proxy:${this._peerConnection.getPeerJid()}`,mediaType:n?nx.VIDEO:nx.AUDIO,sourceType:"proxy",stream:r,track:r.getVideoTracks()[0],videoType:i}]);this._options.onRemoteStream(o[0])}_onSendMessage(t,i){if(this._options.onSendMessage)try{let n=(new XMLSerializer).serializeToString(i.nodeTree||i);this._options.onSendMessage(t,{iq:n})}catch(t){uc.error("Attempted to send an incorrectly formatted iq.")}}_selfCloseConnection(){this.stop(),this._options.onConnectionClosed&&this._options.onConnectionClosed()}},addGlobalLogTransport(t){g().addGlobalTransport(t)},analytics:n$.analytics,constants:{recording:{error:{BUSY:"busy",ERROR:"error",POLICY_VIOLATION:"policy-violation",RESOURCE_CONSTRAINT:"resource-constraint",SERVICE_UNAVAILABLE:"service-unavailable",UNEXPECTED_REQUEST:"unexpected-request"},mode:{FILE:"file",STREAM:"stream"},status:{OFF:"off",ON:"on",PENDING:"pending"}},sipVideoGW:p,trackStreamingStatus:sR,transcriptionStatus:h},createAudioMixer:()=>new uH,createLocalTracks(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=!1,n=window.performance.now();return window.connectionTimes||(window.connectionTimes={}),uq||(uq=!0,i=!0,window.connectionTimes["firstObtainPermissions.start"]=n),window.connectionTimes["obtainPermissions.start"]=n,sW.obtainAudioAndVideoPermissions(t).then(n=>{let r=window.performance.now();if(window.connectionTimes["obtainPermissions.end"]=r,i&&(window.connectionTimes["firstObtainPermissions.end"]=r),n$.sendAnalytics(nl("success",uG(t))),this.isCollectingLocalStats())for(let t=0;t<n.length;t++){let i=n[t];i.getType()===nx.AUDIO&&n$.startLocalStats(i,i.setAudioLevel.bind(i))}let o=sW.getCurrentlyAvailableMediaDevices();if(o)for(let t=0;t<n.length;t++)n[t]._setRealDeviceIdFromDeviceList(o);return n}).catch(n=>{if(n.name===rn)n$.sendAnalytics(nl("warning",{reason:"extension install user canceled"}));else if(n.name===n3){let i=uG(t);i.reason="device not found",i.devices=n.gum.devices.join("."),n$.sendAnalytics(nl("error",i))}else{let i=uG(t);i.reason=n.name,n$.sendAnalytics(nl("error",i))}let r=window.performance.now();return window.connectionTimes["obtainPermissions.end"]=r,i&&(window.connectionTimes["firstObtainPermissions.end"]=r),Promise.reject(n)})},createLocalTracksFromMediaStreams:t=>sW.createLocalTracks(t.map(t=>{let i=t.stream.getTracks().filter(i=>i.kind===t.mediaType);if(!i||0===i.length)throw new ru(rc,null,null);if(i.length>1)throw new ru(rd,null,null);return t.track=i[0],t})),createTrackVADEmitter:(t,i,n)=>s5.create(t,i,n),errorTypes:{JitsiTrackError:ru},errors:{conference:o,connection:u,track:s},events:{conference:tT,connection:nW,connectionQuality:sY,detection:s1,e2eping:c2,mediaDevices:l7,rtcstats:ni,track:is},getActiveAudioDevice:()=>new Promise(t=>{sW.enumerateDevices(i=>{let n=i.filter(t=>"audioinput"===t.kind),r=[];for(let t of n){let i=sW.obtainAudioAndVideoPermissions({devices:["audio"],micDeviceId:t.deviceId}).then(t=>{let i=t[0];return n$.startLocalStats(i,i.setAudioLevel.bind(i)),i});r.push(i)}Promise.allSettled(r).then(i=>{let n=i.filter(t=>"fulfilled"===t.status),r=i.filter(t=>"rejected"===t.status),o=n.map(t=>t.value);for(let t of r.map(t=>t.value))ut.error("Failed to acquire audio device with error: ",t);for(let i of o)i.on(is.TRACK_AUDIO_LEVEL_CHANGED,n=>{n>.008&&(ui(o),t({deviceId:i.deviceId,deviceLabel:i.getTrack().label}))});setTimeout(()=>{ui(o),t({deviceId:"",deviceLabel:""})},3e3)})})}),init(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.analytics,n=void 0===i?{}:i,r=n.rtcstatsStoreLogs,o=n.rtcstatsLogFlushSizeBytes;r&&g().addGlobalTransport(ns.getDefaultLogCollector(o)),uJ.info(`This appears to be ${nf.getName()}, ver: ${nf.getVersion()}`),uz.init(),ne.init(t.externalStorage),n$.init(t),window.connectionTimes||(window.connectionTimes={}),!0!==t.enableAnalyticsLogging&&(uJ.warn("Analytics disabled, disposing."),this.analytics.dispose()),sW.init(t)},isCollectingLocalStats:()=>n$.audioLevelsEnabled&&nT.isLocalStatsSupported(),isDesktopSharingEnabled:()=>sW.isDesktopSharingEnabled(),isMultipleAudioInputSupported(){return this.mediaDevices.isMultipleAudioInputSupported()},isWebRtcSupported:()=>sW.isWebRtcSupported(),async joinConference(t){var i,n,r,o;let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},c=new ae,l=null!=(i=d.connectionOptions)?i:{};if(s.startsWith("vpaas-magic-cookie")){g().addGlobalTransport(ns.getDefaultLogCollector());let i=null!=(n=null==(r=d.jaas)?void 0:r.useStaging)&&n,a=i?"staging.8x8.vc":"8x8.vc",c=`wss://${a}/${s}/xmpp-websocket?room=${t}`;null!=(o=d.jaas)&&o.release&&(c=`${c}&release=release-${d.jaas.release}`),l=ti(l,{analytics:{rtcstatsEnabled:!0,rtcstatsEndpoint:`wss://rtcstats-server-${i?"pilot":"8x8"}.jitsi.net/`,rtcstatsSendSdp:!0},conferenceRequestUrl:`https://${a}/${s}/conference-request/v1?room=${t}`,hosts:{domain:a,muc:`conference.${s}.${a}`},serviceUrl:c,websocketKeepAliveUrl:`https://${a}/${s}/_unlock?room=${t}`})}let u=new l9(s,a,l);function h(){u.removeEventListener(nW.CONNECTION_ESTABLISHED,p),u.removeEventListener(nW.CONNECTION_FAILED,m)}function p(){var i;h();let n=u.initJitsiConference(t,null!=(i=d.conferenceOptions)?i:{});c.resolve(n),queueMicrotask(()=>{for(let t of d.tracks||[])n.addTrack(t);n.join(),n.setReceiverConstraints({defaultConstraints:{maxHeight:720},lastN:-1})})}function m(t){h(),c.reject(t)}return u.addEventListener(nW.CONNECTION_ESTABLISHED,p),u.addEventListener(nW.CONNECTION_FAILED,m),u.connect({
84name:t}),c},logLevels:g().levels,mediaDevices:uz,removeGlobalLogTransport(t){g().removeGlobalTransport(t)},rtcstats:{isTraceAvailable:()=>ns.isTraceAvailable(),on(t,i){ns.events.on(t,i)},sendIdentityEntry(t){ns.sendIdentity(t)},sendStatsEntry(t,i){ns.sendStatsEntry(t,null,i)}},runPreCallTest:t=>(async function(t){let i=new uj;return await i.start(t)})(t),setGlobalLogOptions(t){g().setGlobalOptions(t)},setLogLevel(t){g().setLogLevel(t)},setLogLevelById(t,i){g().setLogLevelById(t,i)},setNetworkInfo(t){let i=t.isOnline;aX.updateNetworkInfo({isOnline:i})},util:{ScriptUtil:uU,browser:nf},version:"60abc50"}},154(t,i,n){t.exports=function(t){return"object"==typeof window.JitsiMeetJS?{...window.JitsiMeetJS,...t}:t}(n(624).A)},586(t,i){"use strict";let n=/"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*\:/;i.parse=function(t){let r="object"==typeof(arguments.length<=1?void 0:arguments[1])&&(arguments.length<=1?void 0:arguments[1]),o=(arguments.length<=1?0:arguments.length-1)>1||!r?arguments.length<=1?void 0:arguments[1]:void 0,s=(arguments.length<=1?0:arguments.length-1)>1&&(arguments.length<=2?void 0:arguments[2])||r||{},a=JSON.parse(t,o);return"ignore"===s.protoAction||a&&"object"==typeof a&&t.match(n)&&i.scan(a,s),a},i.scan=function(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[t];for(;n.length;){let t=n;for(let r of(n=[],t)){if(Object.prototype.hasOwnProperty.call(r,"__proto__")){if("remove"!==i.protoAction)throw SyntaxError("Object contains forbidden prototype property");delete r.__proto__}for(let t in r){let i=r[t];i&&"object"==typeof i&&n.push(r[t])}}}},i.safeParse=function(t,n){try{return i.parse(t,n)}catch(t){return null}}},556(t,i,n){var r;!function(o){"use strict";var s="function",a="undefined",d="object",c="string",l="major",u="model",h="name",p="type",m="vendor",g="version",f="architecture",_="console",v="mobile",y="tablet",E="smarttv",S="wearable",b="embedded",C="Amazon",D="Apple",T="ASUS",x="BlackBerry",R="Browser",A="Chrome",w="Firefox",I="Google",k="Huawei",O="LG",N="Microsoft",P="Motorola",L="Opera",M="Samsung",F="Sharp",j="Sony",V="Xiaomi",B="Zebra",U="Facebook",$="Chromium OS",H="Mac OS",J=function(t){for(var i={},n=0;n<t.length;n++)i[t[n].toUpperCase()]=t[n];return i},q=function(t,i){return typeof t===c&&-1!==G(i).indexOf(G(t))},G=function(t){return t.toLowerCase()},z=function(t,i){if(typeof t===c)return t=t.replace(/^\s\s*/,""),typeof i===a?t:t.substring(0,350)},K=function(t,i){for(var n,r,o,a,c,l,u=0;u<i.length&&!c;){var h=i[u],p=i[u+1];for(n=r=0;n<h.length&&!c&&h[n];)if(c=h[n++].exec(t))for(o=0;o<p.length;o++)l=c[++r],typeof(a=p[o])===d&&a.length>0?2===a.length?typeof a[1]==s?this[a[0]]=a[1].call(this,l):this[a[0]]=a[1]:3===a.length?typeof a[1]!==s||a[1].exec&&a[1].test?this[a[0]]=l?l.replace(a[1],a[2]):void 0:this[a[0]]=l?a[1].call(this,l,a[2]):void 0:4===a.length&&(this[a[0]]=l?a[3].call(this,l.replace(a[1],a[2])):void 0):this[a]=l||void 0;u+=2}},W=function(t,i){for(var n in i)if(typeof i[n]===d&&i[n].length>0){for(var r=0;r<i[n].length;r++)if(q(i[n][r],t))return"?"===n?void 0:n}else if(q(i[n],t))return"?"===n?void 0:n;return t},Y={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},Q={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[g,[h,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[g,[h,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[h,g],[/opios[\/ ]+([\w\.]+)/i],[g,[h,L+" Mini"]],[/\bopr\/([\w\.]+)/i],[g,[h,L]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[h,g],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[g,[h,"UC"+R]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i],[g,[h,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[g,[h,"WeChat"]],[/konqueror\/([\w\.]+)/i],[g,[h,"
84Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[g,[h,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[g,[h,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[h,/(.+)/,"$1 Secure "+R],g],[/\bfocus\/([\w\.]+)/i],[g,[h,w+" Focus"]],[/\bopt\/([\w\.]+)/i],[g,[h,L+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[g,[h,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[g,[h,"Dolphin"]],[/coast\/([\w\.]+)/i],[g,[h,L+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[g,[h,"MIUI "+R]],[/fxios\/([-\w\.]+)/i],[g,[h,w]],[/\bqihu|(qi?ho?o?|360)browser/i],[[h,"360 "+R]],[/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i],[[h,/(.+)/,"$1 "+R],g],[/(comodo_dragon)\/([\w\.]+)/i],[[h,/_/g," "],g],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[h,g],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i,/\[(linkedin)app\]/i],[h],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[h,U],g],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[h,g],[/\bgsa\/([\w\.]+) .*safari\//i],[g,[h,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[g,[h,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[g,[h,A+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[h,A+" WebView"],g],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[g,[h,"Android "+R]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[h,g],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[g,[h,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[g,h],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[h,[g,W,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[h,g],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[h,"Netscape"],g],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[g,[h,w+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[h,g],[/(cobalt)\/([\w\.]+)/i],[h,[g,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[f,"amd64"]],[/(ia32(?=;))/i],[[f,G]],[/((?:i[346]|x)86)[;\)]/i],[[f,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[f,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[f,"armhf"]],[/windows (ce|mobile); ppc;/i],[[f,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[f,/ower/,"",G]],[/(sun4\w)[;\)]/i],[[f,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[f,G]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[u,[m,M],[p,y]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[u,[m,M],[p,v]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[u,[m,D],[p,v]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[u,[m,D],[p,y]],[/(macintosh);/i],[u,[m,D]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[u,[m,F],[p,v]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[u,[m,k],[p,y]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[u,[m,k],[p,v]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[u,/_/g," "],[m,V],[p,v]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[u,/_/g," "],[m,V],[p,y]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[u,[m,"OPPO"],[p,v]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[u,[m,"Vivo"],[p,v]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[u,[m,"Realme"],[p,v]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[u,[m,P],[p,v]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[u,[m,P],[p,y]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[u,[m,O],[p,y]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[u,[m,O],[p,v]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[u,[m,"Lenovo"],[p,y]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[u,/_/g," "],[m,"N
84okia"],[p,v]],[/(pixel c)\b/i],[u,[m,I],[p,y]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[u,[m,I],[p,v]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[u,[m,j],[p,v]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[u,"Xperia Tablet"],[m,j],[p,y]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[u,[m,"OnePlus"],[p,v]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[u,[m,C],[p,y]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[u,/(.+)/g,"Fire Phone $1"],[m,C],[p,v]],[/(playbook);[-\w\),; ]+(rim)/i],[u,m,[p,y]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[u,[m,x],[p,v]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[u,[m,T],[p,y]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[u,[m,T],[p,v]],[/(nexus 9)/i],[u,[m,"HTC"],[p,y]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[m,[u,/_/g," "],[p,v]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[u,[m,"Acer"],[p,y]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[u,[m,"Meizu"],[p,v]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[m,u,[p,v]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[m,u,[p,y]],[/(surface duo)/i],[u,[m,N],[p,y]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[u,[m,"Fairphone"],[p,v]],[/(u304aa)/i],[u,[m,"AT&T"],[p,v]],[/\bsie-(\w*)/i],[u,[m,"Siemens"],[p,v]],[/\b(rct\w+) b/i],[u,[m,"RCA"],[p,y]],[/\b(venue[\d ]{2,7}) b/i],[u,[m,"Dell"],[p,y]],[/\b(q(?:mv|ta)\w+) b/i],[u,[m,"Verizon"],[p,y]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[u,[m,"Barnes & Noble"],[p,y]],[/\b(tm\d{3}\w+) b/i],[u,[m,"NuVision"],[p,y]],[/\b(k88) b/i],[u,[m,"ZTE"],[p,y]],[/\b(nx\d{3}j) b/i],[u,[m,"ZTE"],[p,v]],[/\b(gen\d{3}) b.+49h/i],[u,[m,"Swiss"],[p,v]],[/\b(zur\d{3}) b/i],[u,[m,"Swiss"],[p,y]],[/\b((zeki)?tb.*\b) b/i],[u,[m,"Zeki"],[p,y]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[m,"Dragon Touch"],u,[p,y]],[/\b(ns-?\w{0,9}) b/i],[u,[m,"Insignia"],[p,y]],[/\b((nxa|next)-?\w{0,9}) b/i],[u,[m,"NextBook"],[p,y]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[m,"Voice"],u,[p,v]],[/\b(lvtel\-)?(v1[12]) b/i],[[m,"LvTel"],u,[p,v]],[/\b(ph-1) /i],[u,[m,"Essential"],[p,v]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[u,[m,"Envizen"],[p,y]],[/\b(trio[-\w\. ]+) b/i],[u,[m,"MachSpeed"],[p,y]],[/\btu_(1491) b/i],[u,[m,"Rotor"],[p,y]],[/(shield[\w ]+) b/i],[u,[m,"Nvidia"],[p,y]],[/(sprint) (\w+)/i],[m,u,[p,v]],[/(kin\.[onetw]{3})/i],[[u,/\./g," "],[m,N],[p,v]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[u,[m,B],[p,y]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[u,[m,B],[p,v]],[/smart-tv.+(samsung)/i],[m,[p,E]],[/hbbtv.+maple;(\d+)/i],[[u,/^/,"SmartTV"],[m,M],[p,E]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[m,O],[p,E]],[/(apple) ?tv/i],[m,[u,D+" TV"],[p,E]],[/crkey/i],[[u,A+"cast"],[m,I],[p,E]],[/droid.+aft(\w)( bui|\))/i],[u,[m,C],[p,E]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[u,[m,F],[p,E]],[/(bravia[\w ]+)( bui|\))/i],[u,[m,j],[p,E]],[/(mitv-\w{5}) bui/i],[u,[m,V],[p,E]],[/Hbbtv.*(technisat) (.*);/i],[m,u,[p,E]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[m,z],[u,z],[p,E]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,E]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[m,u,[p,_]],[/droid.+; (shield) bui/i],[u,[m,"Nvidia"],[p,_]],[/(playstation [345portablevi]+)/i],[u,[m,j],[p,_]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[u,[m,N],[p,_]],[/((pebble))app/i],[m,u,[p,S]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[u,[m,D],[p,S]],[/droid.+; (glass) \d/i],[u,[m,I],[p,S]],[/droid.+; (wt63?0{2,3}
84)\)/i],[u,[m,B],[p,S]],[/(quest( 2| pro)?)/i],[u,[m,U],[p,S]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[m,[p,b]],[/(aeobc)\b/i],[u,[m,C],[p,b]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[u,[p,v]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[u,[p,y]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,y]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,v]],[/(android[-\w\. ]{0,9});.+buil/i],[u,[m,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[g,[h,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[g,[h,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[h,g],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[g,h]],os:[[/microsoft (windows) (vista|xp)/i],[h,g],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[h,[g,W,Y]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[h,"Windows"],[g,W,Y]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/ios;fbsv\/([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[g,/_/g,"."],[h,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[h,H],[g,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[g,h],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[h,g],[/\(bb(10);/i],[g,[h,x]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[g,[h,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[g,[h,w+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[g,[h,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[g,[h,"watchOS"]],[/crkey\/([\d\.]+)/i],[g,[h,A+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[h,$],g],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[h,g],[/(sunos) ?([\w\.\d]*)/i],[[h,"Solaris"],g],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[h,g]]},X=function(t,i){if(typeof t===d&&(i=t,t=void 0),!(this instanceof X))return new X(t,i).getResult();var n=typeof o!==a&&o.navigator?o.navigator:void 0,r=t||(n&&n.userAgent?n.userAgent:""),_=n&&n.userAgentData?n.userAgentData:void 0,E=i?function(t,i){var n={};for(var r in t)i[r]&&i[r].length%2==0?n[r]=i[r].concat(t[r]):n[r]=t[r];return n}(Q,i):Q,S=n&&n.userAgent==r;return this.getBrowser=function(){var t,i={};return i[h]=void 0,i[g]=void 0,K.call(i,r,E.browser),i[l]=typeof(t=i[g])===c?t.replace(/[^\d\.]/g,"").split(".")[0]:void 0,S&&n&&n.brave&&typeof n.brave.isBrave==s&&(i[h]="Brave"),i},this.getCPU=function(){var t={};return t[f]=void 0,K.call(t,r,E.cpu),t},this.getDevice=function(){var t={};return t[m]=void 0,t[u]=void 0,t[p]=void 0,K.call(t,r,E.device),S&&!t[p]&&_&&_.mobile&&(t[p]=v),S&&"Macintosh"==t[u]&&n&&typeof n.standalone!==a&&n.maxTouchPoints&&n.maxTouchPoints>2&&(t[u]="iPad",t[p]=y),t},this.getEngine=function(){var t={};return t[h]=void 0,t[g]=void 0,K.call(t,r,E.engine),t},this.getOS=function(){var t={};return t[h]=void 0,t[g]=void 0,K.call(t,r,E.os),S&&!t[h]&&_&&"Unknown"!=_.platform&&(t[h]=_.platform.replace(/chrome os/i,$).replace(/macos/i,H)),t},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return r},this.setUA=function(t){return r=typeof t===c&&t.length>350?z(t,350):t,this},this.setUA(r),this};X.VERSION="1.0.35",X.BROWSER=J([h,g,l]),X.CPU=J([f]),X.DEVICE=J([u,m,p,_,v,E,y,S,b]),X.ENGINE=X.OS=J([h,g]),typeof i!==a?(t.exports&&(i=t.exports=X),i.UAParser=X):n.amdO?void 0===(r=(function(){return X}).call(i,n,i,t))||(t.exports=r):typeof o!==a&&(o.UAParser=X);var Z=typeof o!==a&&(o.jQuery||o.Zepto);if(Z&&!Z.ua){var ee=new X;Z.ua=ee.getResult(),Z.ua.get=function(){return ee.getUA()},Z.ua.set=function(t){ee.setUA(t);var i=ee.getResult();for(var n in i)Z.ua[n]=i[n]}}}("object"==typeof window?window:this)},325(t,i,n){var r=n(964);function o(t,i){this.logStorage=t,this.stringifyObjects=!(!i||!i.stringifyObjects)&&i.stringifyObjects,this.storeInterval=i&&i.storeInterval?i.storeInterval:3e4,this.maxEntryLength=i&&i.maxEntryLength?i.maxEntryLength:1e4,Object.values(r.levels).forEac
84h((function(t){this[t]=(function(){this._log.apply(this,arguments)}).bind(this,t)}).bind(this)),this.storeLogsIntervalID=null,this.queue=[],this.totalLen=0,this.outputCache=[]}o.prototype.stringify=function(t){try{return JSON.stringify(t)}catch(t){return"[object with circular refs?]"}},o.prototype.formatLogMessage=function(t){for(var i="",n=1,r=arguments.length;n<r;n++){var o=arguments[n];o instanceof Error?i+=o.toString()+": "+o.stack:this.stringifyObjects&&"object"==typeof o?i+=this.stringify(o):i+=o,n!==r-1&&(i+=" ")}return i.length?i:null},o.prototype._log=function(){var t=arguments[1],i=this.formatLogMessage.apply(this,arguments);if(i){var n=this.queue[this.queue.length-1];(n&&n.text)===i?n.count+=1:(this.queue.push({text:i,timestamp:t,count:1}),this.totalLen+=i.length)}this.totalLen>=this.maxEntryLength&&this._flush(!0,!0)},o.prototype.start=function(){this._reschedulePublishInterval()},o.prototype._reschedulePublishInterval=function(){this.storeLogsIntervalID&&(window.clearTimeout(this.storeLogsIntervalID),this.storeLogsIntervalID=null),this.storeLogsIntervalID=window.setTimeout(this._flush.bind(this,!1,!0),this.storeInterval)},o.prototype.flush=function(){this._flush(!1,!0)},o.prototype._storeLogs=function(t){try{this.logStorage.storeLogs(t)}catch(t){console.error("LogCollector error when calling logStorage.storeLogs(): ",t)}},o.prototype._flush=function(t,i){var n=!1;try{n=this.logStorage.isReady()}catch(t){console.error("LogCollector error when calling logStorage.isReady(): ",t)}this.totalLen>0&&(n||t)&&(n?(this.outputCache.length&&(this.outputCache.forEach((function(t){this._storeLogs(t)}).bind(this)),this.outputCache=[]),this._storeLogs(this.queue)):this.outputCache.push(this.queue),this.queue=[],this.totalLen=0),i&&this._reschedulePublishInterval()},o.prototype.stop=function(){this._flush(!1,!1)},t.exports=o},964(t){var i={trace:0,debug:1,info:2,log:3,warn:4,error:5};s.consoleTransport=console;var n=[s.consoleTransport];s.addGlobalTransport=function(t){-1===n.indexOf(t)&&n.push(t)},s.removeGlobalTransport=function(t){var i=n.indexOf(t);-1!==i&&n.splice(i,1)};var r={};function o(){var t=arguments[0],o=arguments[1],s=Array.prototype.slice.call(arguments,2);if(!(i[o]<t.level))for(var a=!(t.options.disableCallerInfo||r.disableCallerInfo)&&function(){var t={methodName:"",fileLocation:"",line:null,column:null},i=Error(),n=i.stack?i.stack.split(` 85`):[];if(!n||n.length<3)return t;var r=null;return n[3]&&(r=n[3].match(/\s*at\s*(.+?)\s*\((\S*)\s*:(\d*)\s*:(\d*)\)/)),!r||r.length<=4?0===n[2].indexOf("log@")?t.methodName=n[3].substr(0,n[3].indexOf("@")):t.methodName=n[2].substr(0,n[2].indexOf("@")):(t.methodName=r[1],t.fileLocation=r[2],t.line=r[3],t.column=r[4]),t}(),d=n.concat(t.transports),c=0;c<d.length;c++){var l=d[c],u=l[o];if(u&&"function"==typeof u){var h=[];h.push((new Date).toISOString()),h.push("["+o.toUpperCase()+"]"),t.id&&h.push("["+t.id+"]"),a&&a.methodName.length>1&&h.push("<"+a.methodName+">: ");var p=h.concat(s);try{u.bind(l).apply(l,p)}catch(t){console.error("An error occured when trying to log with one of the available transports",t)}}}}function s(t,n,r,s){this.id=n,this.options=s||{},this.transports=r,this.transports||(this.transports=[]),this.level=i[t];for(var a=Object.keys(i),d=0;d<a.length;d++)this[a[d]]=o.bind(null,this,a[d])}s.setGlobalOptions=function(t){r=t||{}},s.prototype.setLevel=function(t){this.level=i[t]},t.exports=s,s.levels={TRACE:"trace",DEBUG:"debug",INFO:"info",LOG:"log",WARN:"warn",ERROR:"error"}},294(t,i,n){var r=n(964),o=n(325),s={},a=[],d=r.levels.TRACE;t.exports={addGlobalTransport:function(t){r.addGlobalTransport(t)},removeGlobalTransport:function(t){r.removeGlobalTransport(t)},setGlobalOptions:function(t){r.setGlobalOptions(t)},getLogger:function(t,i,n){var o=new r(d,t,i,n);return t?(s[t]=s[t]||[],s[t].push(o)):a.push(o),o},getUntrackedLogger:function(t,i,n){return new r(d,t,i,n)},setLogLevelById:function(t,i){for(var n=i?s[i]||[]:a,r=0;r<n.length;r++)n[r].setLevel(t)},setLogLevel:function(t){d=t;for(var i=0;i<a.length;i++)a[i].setLevel(t);for(var n in s){var r=s[n]||[];for(i=0;i<r.length;i++)r[i].setLevel(t)}
85},levels:r.levels,LogCollector:o}},551(t,i,n){var r=n(426);function o(t,i){this.logStorage=t,this.stringifyObjects=!(!i||!i.stringifyObjects)&&i.stringifyObjects,this.storeInterval=i&&i.storeInterval?i.storeInterval:3e4,this.maxEntryLength=i&&i.maxEntryLength?i.maxEntryLength:1e4,Object.values(r.levels).forEach((function(t){this[t]=(function(){this._log.apply(this,arguments)}).bind(this,t)}).bind(this)),this.storeLogsIntervalID=null,this.queue=[],this.totalLen=0,this.outputCache=[]}o.prototype.stringify=function(t){try{return JSON.stringify(t)}catch(t){return"[object with circular refs?]"}},o.prototype.formatLogMessage=function(t){for(var i="",n=1,r=arguments.length;n<r;n++){var o=arguments[n];o instanceof Error?i+=o.toString()+": "+o.stack:this.stringifyObjects&&"object"==typeof o?i+=this.stringify(o):i+=o,n!==r-1&&(i+=" ")}return i.length?i:null},o.prototype._log=function(){var t=arguments[1],i=this.formatLogMessage.apply(this,arguments);if(i){var n=this.queue[this.queue.length-1];(n&&n.text)===i?n.count+=1:(this.queue.push({text:i,timestamp:t,count:1}),this.totalLen+=i.length)}this.totalLen>=this.maxEntryLength&&this._flush(!0,!0)},o.prototype.start=function(){this._reschedulePublishInterval()},o.prototype._reschedulePublishInterval=function(){this.storeLogsIntervalID&&(window.clearTimeout(this.storeLogsIntervalID),this.storeLogsIntervalID=null),this.storeLogsIntervalID=window.setTimeout(this._flush.bind(this,!1,!0),this.storeInterval)},o.prototype.flush=function(){this._flush(!1,!0)},o.prototype._storeLogs=function(t){try{this.logStorage.storeLogs(t)}catch(t){console.error("LogCollector error when calling logStorage.storeLogs(): ",t)}},o.prototype._flush=function(t,i){var n=!1;try{n=this.logStorage.isReady()}catch(t){console.error("LogCollector error when calling logStorage.isReady(): ",t)}this.totalLen>0&&(n||t)&&(n?(this.outputCache.length&&(this.outputCache.forEach((function(t){this._storeLogs(t)}).bind(this)),this.outputCache=[]),this._storeLogs(this.queue)):this.outputCache.push(this.queue),this.queue=[],this.totalLen=0),i&&this._reschedulePublishInterval()},o.prototype.stop=function(){this._flush(!1,!1)},t.exports=o},426(t){var i={trace:0,debug:1,info:2,log:3,warn:4,error:5};s.consoleTransport=console;var n=[s.consoleTransport];s.addGlobalTransport=function(t){-1===n.indexOf(t)&&n.push(t)},s.removeGlobalTransport=function(t){var i=n.indexOf(t);-1!==i&&n.splice(i,1)};var r={};function o(){var t=arguments[0],o=arguments[1],s=Array.prototype.slice.call(arguments,2);if(!(i[o]<t.level))for(var a=!(t.options.disableCallerInfo||r.disableCallerInfo)&&function(){var t={methodName:"",fileLocation:"",line:null,column:null},i=Error(),n=i.stack?i.stack.split(` 86`):[];if(!n||n.length<3)return t;var r=null;return n[3]&&(r=n[3].match(/\s*at\s*(.+?)\s*\((\S*)\s*:(\d*)\s*:(\d*)\)/)),!r||r.length<=4?0===n[2].indexOf("log@")?t.methodName=n[3].substr(0,n[3].indexOf("@")):t.methodName=n[2].substr(0,n[2].indexOf("@")):(t.methodName=r[1],t.fileLocation=r[2],t.line=r[3],t.column=r[4]),t}(),d=n.concat(t.transports),c=0;c<d.length;c++){var l=d[c],u=l[o];if(u&&"function"==typeof u){var h=[];h.push((new Date).toISOString()),t.id&&h.push("["+t.id+"]"),a&&a.methodName.length>1&&h.push("<"+a.methodName+">: ");var p=h.concat(s);try{u.bind(l).apply(l,p)}catch(t){console.error("An error occured when trying to log with one of the available transports",t)}}}}function s(t,n,r,s){this.id=n,this.options=s||{},this.transports=r,this.transports||(this.transports=[]),this.level=i[t];for(var a=Object.keys(i),d=0;d<a.length;d++)this[a[d]]=o.bind(null,this,a[d])}s.setGlobalOptions=function(t){r=t||{}},s.prototype.setLevel=function(t){this.level=i[t]},t.exports=s,s.levels={TRACE:"trace",DEBUG:"debug",INFO:"info",LOG:"log",WARN:"warn",ERROR:"error"}},116(t,i,n){var r=n(426),o=n(551),s={},a=[],d=r.levels.TRACE;t.exports={addGlobalTransport:function(t){r.addGlobalTransport(t)},removeGlobalTransport:function(t){r.removeGlobalTransport(t)},setGlobalOptions:function(t){r.setGlobalOptions(t)},getLogger:function(t,i,n){var o=new r(d,t,i,n);return t?(s[t]=s[t]||[],s[t].push(o)):a.push(o),o},getUntrackedLogger:function(t,i,n){return new r(d,t,i,n)}
vendor: 2,899 bytes, line 86
86,setLogLevelById:function(t,i){for(var n=i?s[i]||[]:a,r=0;r<n.length;r++)n[r].setLevel(t)},setLogLevel:function(t){d=t;for(var i=0;i<a.length;i++)a[i].setLevel(t);for(var n in s){var r=s[n]||[];for(i=0;i<r.length;i++)r[i].setLevel(t)}},levels:r.levels,LogCollector:o}},17(t,i,n){var r;!function(o){"use strict";var s="function",a="undefined",d="object",c="string",l="major",u="model",h="name",p="type",m="vendor",g="version",f="architecture",_="console",v="mobile",y="tablet",E="smarttv",S="wearable",b="embedded",C="Amazon",D="Apple",T="ASUS",x="BlackBerry",R="Browser",A="Chrome",w="Firefox",I="Google",k="Huawei",O="LG",N="Microsoft",P="Motorola",L="Opera",M="Samsung",F="Sharp",j="Sony",V="Xiaomi",B="Zebra",U="Facebook",$="Chromium OS",H="Mac OS",J=function(t){for(var i={},n=0;n<t.length;n++)i[t[n].toUpperCase()]=t[n];return i},q=function(t,i){return typeof t===c&&-1!==G(i).indexOf(G(t))},G=function(t){return t.toLowerCase()},z=function(t,i){if(typeof t===c)return t=t.replace(/^\s\s*/,""),typeof i===a?t:t.substring(0,350)},K=function(t,i){for(var n,r,o,a,c,l,u=0;u<i.length&&!c;){var h=i[u],p=i[u+1];for(n=r=0;n<h.length&&!c&&h[n];)if(c=h[n++].exec(t))for(o=0;o<p.length;o++)l=c[++r],typeof(a=p[o])===d&&a.length>0?2===a.length?typeof a[1]==s?this[a[0]]=a[1].call(this,l):this[a[0]]=a[1]:3===a.length?typeof a[1]!==s||a[1].exec&&a[1].test?this[a[0]]=l?l.replace(a[1],a[2]):void 0:this[a[0]]=l?a[1].call(this,l,a[2]):void 0:4===a.length&&(this[a[0]]=l?a[3].call(this,l.replace(a[1],a[2])):void 0):this[a]=l||void 0;u+=2}},W=function(t,i){for(var n in i)if(typeof i[n]===d&&i[n].length>0){for(var r=0;r<i[n].length;r++)if(q(i[n][r],t))return"?"===n?void 0:n}else if(q(i[n],t))return"?"===n?void 0:n;return t},Y={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},Q={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[g,[h,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[g,[h,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[h,g],[/opios[\/ ]+([\w\.]+)/i],[g,[h,L+" Mini"]],[/\bopr\/([\w\.]+)/i],[g,[h,L]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[h,g],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[g,[h,"UC"+R]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i],[g,[h,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[g,[h,"WeChat"]],[/konqueror\/([\w\.]+)/i],[g,[h,"
86Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[g,[h,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[g,[h,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[h,/(.+)/,"$1 Secure "+R],g],[/\bfocus\/([\w\.]+)/i],[g,[h,w+" Focus"]],[/\bopt\/([\w\.]+)/i],[g,[h,L+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[g,[h,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[g,[h,"Dolphin"]],[/coast\/([\w\.]+)/i],[g,[h,L+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[g,[h,"MIUI "+R]],[/fxios\/([-\w\.]+)/i],[g,[h,w]],[/\bqihu|(qi?ho?o?|360)browser/i],[[h,"360 "+R]],[/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i],[[h,/(.+)/,"$1 "+R],g],[/(comodo_dragon)\/([\w\.]+)/i],[[h,/_/g," "],g],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[h,g],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i,/\[(linkedin)app\]/i],[h],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[h,U],g],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[h,g],[/\bgsa\/([\w\.]+) .*safari\//i],[g,[h,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[g,[h,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[g,[h,A+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[h,A+" WebView"],g],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[g,[h,"Android "+R]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[h,g],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[g,[h,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[g,h],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[h,[g,W,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[h,g],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[h,"Netscape"],g],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[g,[h,w+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[h,g],[/(cobalt)\/([\w\.]+)/i],[h,[g,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[f,"amd64"]],[/(ia32(?=;))/i],[[f,G]],[/((?:i[346]|x)86)[;\)]/i],[[f,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[f,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[f,"armhf"]],[/windows (ce|mobile); ppc;/i],[[f,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[f,/ower/,"",G]],[/(sun4\w)[;\)]/i],[[f,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[f,G]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[u,[m,M],[p,y]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[u,[m,M],[p,v]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[u,[m,D],[p,v]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[u,[m,D],[p,y]],[/(macintosh);/i],[u,[m,D]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[u,[m,F],[p,v]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[u,[m,k],[p,y]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[u,[m,k],[p,v]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[u,/_/g," "],[m,V],[p,v]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[u,/_/g," "],[m,V],[p,y]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[u,[m,"OPPO"],[p,v]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[u,[m,"Vivo"],[p,v]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[u,[m,"Realme"],[p,v]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[u,[m,P],[p,v]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[u,[m,P],[p,y]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[u,[m,O],[p,y]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[u,[m,O],[p,v]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[u,[m,"Lenovo"],[p,y]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[u,/_/g," "],[m,"N
86okia"],[p,v]],[/(pixel c)\b/i],[u,[m,I],[p,y]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[u,[m,I],[p,v]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[u,[m,j],[p,v]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[u,"Xperia Tablet"],[m,j],[p,y]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[u,[m,"OnePlus"],[p,v]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[u,[m,C],[p,y]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[u,/(.+)/g,"Fire Phone $1"],[m,C],[p,v]],[/(playbook);[-\w\),; ]+(rim)/i],[u,m,[p,y]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[u,[m,x],[p,v]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[u,[m,T],[p,y]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[u,[m,T],[p,v]],[/(nexus 9)/i],[u,[m,"HTC"],[p,y]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[m,[u,/_/g," "],[p,v]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[u,[m,"Acer"],[p,y]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[u,[m,"Meizu"],[p,v]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[m,u,[p,v]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[m,u,[p,y]],[/(surface duo)/i],[u,[m,N],[p,y]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[u,[m,"Fairphone"],[p,v]],[/(u304aa)/i],[u,[m,"AT&T"],[p,v]],[/\bsie-(\w*)/i],[u,[m,"Siemens"],[p,v]],[/\b(rct\w+) b/i],[u,[m,"RCA"],[p,y]],[/\b(venue[\d ]{2,7}) b/i],[u,[m,"Dell"],[p,y]],[/\b(q(?:mv|ta)\w+) b/i],[u,[m,"Verizon"],[p,y]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[u,[m,"Barnes & Noble"],[p,y]],[/\b(tm\d{3}\w+) b/i],[u,[m,"NuVision"],[p,y]],[/\b(k88) b/i],[u,[m,"ZTE"],[p,y]],[/\b(nx\d{3}j) b/i],[u,[m,"ZTE"],[p,v]],[/\b(gen\d{3}) b.+49h/i],[u,[m,"Swiss"],[p,v]],[/\b(zur\d{3}) b/i],[u,[m,"Swiss"],[p,y]],[/\b((zeki)?tb.*\b) b/i],[u,[m,"Zeki"],[p,y]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[m,"Dragon Touch"],u,[p,y]],[/\b(ns-?\w{0,9}) b/i],[u,[m,"Insignia"],[p,y]],[/\b((nxa|next)-?\w{0,9}) b/i],[u,[m,"NextBook"],[p,y]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[m,"Voice"],u,[p,v]],[/\b(lvtel\-)?(v1[12]) b/i],[[m,"LvTel"],u,[p,v]],[/\b(ph-1) /i],[u,[m,"Essential"],[p,v]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[u,[m,"Envizen"],[p,y]],[/\b(trio[-\w\. ]+) b/i],[u,[m,"MachSpeed"],[p,y]],[/\btu_(1491) b/i],[u,[m,"Rotor"],[p,y]],[/(shield[\w ]+) b/i],[u,[m,"Nvidia"],[p,y]],[/(sprint) (\w+)/i],[m,u,[p,v]],[/(kin\.[onetw]{3})/i],[[u,/\./g," "],[m,N],[p,v]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[u,[m,B],[p,y]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[u,[m,B],[p,v]],[/smart-tv.+(samsung)/i],[m,[p,E]],[/hbbtv.+maple;(\d+)/i],[[u,/^/,"SmartTV"],[m,M],[p,E]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[m,O],[p,E]],[/(apple) ?tv/i],[m,[u,D+" TV"],[p,E]],[/crkey/i],[[u,A+"cast"],[m,I],[p,E]],[/droid.+aft(\w)( bui|\))/i],[u,[m,C],[p,E]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[u,[m,F],[p,E]],[/(bravia[\w ]+)( bui|\))/i],[u,[m,j],[p,E]],[/(mitv-\w{5}) bui/i],[u,[m,V],[p,E]],[/Hbbtv.*(technisat) (.*);/i],[m,u,[p,E]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[m,z],[u,z],[p,E]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,E]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[m,u,[p,_]],[/droid.+; (shield) bui/i],[u,[m,"Nvidia"],[p,_]],[/(playstation [345portablevi]+)/i],[u,[m,j],[p,_]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[u,[m,N],[p,_]],[/((pebble))app/i],[m,u,[p,S]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[u,[m,D],[p,S]],[/droid.+; (glass) \d/i],[u,[m,I],[p,S]],[/droid.+; (wt63?0{2,3}
86)\)/i],[u,[m,B],[p,S]],[/(quest( 2| pro)?)/i],[u,[m,U],[p,S]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[m,[p,b]],[/(aeobc)\b/i],[u,[m,C],[p,b]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[u,[p,v]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[u,[p,y]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,y]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,v]],[/(android[-\w\. ]{0,9});.+buil/i],[u,[m,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[g,[h,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[g,[h,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[h,g],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[g,h]],os:[[/microsoft (windows) (vista|xp)/i],[h,g],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[h,[g,W,Y]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[h,"Windows"],[g,W,Y]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/ios;fbsv\/([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[g,/_/g,"."],[h,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[h,H],[g,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[g,h],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[h,g],[/\(bb(10);/i],[g,[h,x]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[g,[h,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[g,[h,w+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[g,[h,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[g,[h,"watchOS"]],[/crkey\/([\d\.]+)/i],[g,[h,A+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[h,$],g],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[h,g],[/(sunos) ?([\w\.\d]*)/i],[[h,"Solaris"],g],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[h,g]]},X=function(t,i){if(typeof t===d&&(i=t,t=void 0),!(this instanceof X))return new X(t,i).getResult();var n=typeof o!==a&&o.navigator?o.navigator:void 0,r=t||(n&&n.userAgent?n.userAgent:""),_=n&&n.userAgentData?n.userAgentData:void 0,E=i?function(t,i){var n={};for(var r in t)i[r]&&i[r].length%2==0?n[r]=i[r].concat(t[r]):n[r]=t[r];return n}(Q,i):Q,S=n&&n.userAgent==r;return this.getBrowser=function(){var t,i={};return i[h]=void 0,i[g]=void 0,K.call(i,r,E.browser),i[l]=typeof(t=i[g])===c?t.replace(/[^\d\.]/g,"").split(".")[0]:void 0,S&&n&&n.brave&&typeof n.brave.isBrave==s&&(i[h]="Brave"),i},this.getCPU=function(){var t={};return t[f]=void 0,K.call(t,r,E.cpu),t},this.getDevice=function(){var t={};return t[m]=void 0,t[u]=void 0,t[p]=void 0,K.call(t,r,E.device),S&&!t[p]&&_&&_.mobile&&(t[p]=v),S&&"Macintosh"==t[u]&&n&&typeof n.standalone!==a&&n.maxTouchPoints&&n.maxTouchPoints>2&&(t[u]="iPad",t[p]=y),t},this.getEngine=function(){var t={};return t[h]=void 0,t[g]=void 0,K.call(t,r,E.engine),t},this.getOS=function(){var t={};return t[h]=void 0,t[g]=void 0,K.call(t,r,E.os),S&&!t[h]&&_&&"Unknown"!=_.platform&&(t[h]=_.platform.replace(/chrome os/i,$).replace(/macos/i,H)),t},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return r},this.setUA=function(t){return r=typeof t===c&&t.length>350?z(t,350):t,this},this.setUA(r),this};X.VERSION="1.0.35",X.BROWSER=J([h,g,l]),X.CPU=J([f]),X.DEVICE=J([u,m,p,_,v,E,y,S,b]),X.ENGINE=X.OS=J([h,g]),typeof i!==a?(t.exports&&(i=t.exports=X),i.UAParser=X):n.amdO?void 0===(r=(function(){return X}).call(i,n,i,t))||(t.exports=r):typeof o!==a&&(o.UAParser=X);var Z=typeof o!==a&&(o.jQuery||o.Zepto);if(Z&&!Z.ua){var ee=new X;Z.ua=ee.getResult(),Z.ua.get=function(){return ee.getUA()},Z.ua.set=function(t){ee.setUA(t);var i=ee.getResult();for(var n in i)Z.ua[n]=i[n]}}}("object"==typeof window?window:this)},201(t){t.exports=(()=>{var t={607:(t,i,n)=>{"use strict";i.ap=i.Tk=i.Vk=i.b1=i.zP=i.$j=i.dL=i.aM=i.vP=i.xt=i.Zt=i.UN=i.IO=i.zl=i.v6=i.S1=void 0,n(699);var r=n(231);i.S1=function(t,i){(0,r.initSDK)(t||{},[""],i)},i.v6=function(t){(0,r.setConfig)(t)},i.zl=function(t){},i.IO=function(t,i){(0,r.setUserRating)(t,i)},i.UN=function(t){(0,r.addKeys)(t)},i.Zt=function(){(0,r.disableDataCollection)()},i.xt=function(){(0,r.enableDataCollection)()},i.vP=function(t){(0,r.addEvent)(t)},i.aM=function(t,i){(0,r.mapStream)(t,i)},i.dL=function(t,i){(0,r.mapTrack)(t,i)},i.$j=function(){(0,r.connect)()},i.zP=function(){(0,r.disconnect)()},i.b1=function(t){(0,r.registerOnStatsListener)(t)},i.Vk=function(t){(0,r.persistentEnd)(t)},i.Tk=function(t,i){(0,r.persistentStart)(t,i)},i.ap=function(t){(0,r.registerStateListener)(t)},i.default={init:i.S1,addTags:i.zl,setUserRating:i.IO,addKeys:i.UN,setConfig:i.v6,disableDataCollection:i.Zt,enableDataCollection:i.xt,addEvent:i.vP,mapStream:i.aM,mapTrack:i.dL,connect:i.$j,disconnect:i.zP,addStatsListener:i.b1,persistentEnd:i.Vk,persistentStart:i.Tk,addStateListener:i.ap,qualityrtc:{run:r.qrtcRun,stop:r.qrtcStop}}},231:function(t,i,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(t){for(var i,n=1,r=arguments.length;n<r;n++)for(var o in i=arguments[n])Object.prototype.hasOwnProperty.call(i,o)&&(t[o]=i[o]);return t}).apply(this,arguments)},o=this&&this.__awaiter||function(t,i,n,r){return new(n||(n=Prom
86ise))(function(o,s){function a(t){try{c(r.next(t))}catch(t){s(t)}}function d(t){try{c(r.throw(t))}catch(t){s(t)}}function c(t){var i;t.done?o(t.value):((i=t.value)instanceof n?i:new n(function(t){t(i)})).then(a,d)}c((r=r.apply(t,i||[])).next())})},s=this&&this.__generator||function(t,i){var n,r,o,s,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:d(0),throw:d(1),return:d(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function d(d){return function(c){return function(d){if(n)throw TypeError("Generator is already executing.");for(;s&&(s=0,d[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&d[0]?r.return:d[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,d[1])).done)return o;switch(r=0,o&&(d=[2&d[0],o.value]),d[0]){case 0:case 1:o=d;break;case 4:return a.label++,{value:d[1],done:!1};case 5:a.label++,r=d[1],d=[0];continue;case 7:d=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==d[0]&&2!==d[0])){a=0;continue}if(3===d[0]&&(!o||d[1]>o[0]&&d[1]<o[3])){a.label=d[1];break}if(6===d[0]&&a.label<o[1]){a.label=o[1],o=d;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(d);break}o[2]&&a.ops.pop(),a.trys.pop();continue}d=i.call(t,a)}catch(t){d=[6,t],r=0}finally{n=o=0}if(5&d[0])throw d[1];return{value:d[0]?d[1]:void 0,done:!0}}([d,c])}}},a=this&&this.__spreadArray||function(t,i,n){if(n||2==arguments.length)for(var r,o=0,s=i.length;o<s;o++)!r&&o in i||(r||(r=Array.prototype.slice.call(i,0,o)),r[o]=i[o]);return t.concat(r||Array.prototype.slice.call(i))};Object.defineProperty(i,"__esModule",{value:!0}),i.qrtcStop=i.qrtcRun=i.persistentStart=i.persistentEnd=i.registerStateListener=i.registerOnStatsListener=i.disconnect=i.connect=i.mapTrack=i.mapStream=i.addEvent=i.enableDataCollection=i.disableDataCollection=i.addKeys=i.setUserRating=i.setConfig=i.initSDK=i.sdkLogWithoutTrace=i.sdkLog=void 0;var d,c,l,u,h,p=n(85),m=n(911),g=n(593),f=n(412),_="u">typeof window,v=_?window:n.g,y=!!_&&!!v.mozRTCPeerConnection,E=(_&&!y&&v.RTCPeerConnection&&v.navigator.webkitGetUserMedia,{}),S=0,b={},C={rtcRoomId:void 0,rtcPeerId:void 0,projectId:void 0},D=null,T=null,x=null,R=0,A=!1,w=!1,I=0,k=!1,O=!1,N=null,P=null,L=!0;i.sdkLog=(0,g.getSdkLogger)(function(){return null==D?void 0:D.logLevel}),i.sdkLogWithoutTrace=(0,g.getSdkLogWithoutTrace)(function(){return null==D?void 0:D.logLevel});var M=function(t){return t?"".concat(t.kind,":").concat(t.id," state:").concat(t.readyState," muted:").concat(t.muted," label:").concat(t.label):"no track"},F={},j=function(t){var n,o=t.forceRecreate,s=void 0!==o&&o,a=t.reconnecting,c=void 0!==a&&a,u=t.pcId,p=void 0===u?"PC_unknown":u,m=t.nailUp,_=void 0!==m&&m;if(null==x?void 0:x.isDisabledDataCollection())(0,i.sdkLog)("debug","maybeOpenWebsocketConnection. disabledDataCollection, ignore [".concat(p,"]"));else{if((0,i.sdkLog)("debug","maybeOpenWebsocketConnection called: [".concat(p,"]"),{forceRecreate:s,reconnecting:c,isManualDisconnect:O,isManualConnect:k,tryingToConnectSocket:A,watchrtcConfig:JSON.stringify(D),disabled:null==x?void 0:x.isDisabledDataCollection(),openChannels:JSON.stringify(E)}),O=!1,(null==(n=null==x?void 0:x.connection)?void 0:n.readyState)===v.WebSocket.OPEN){if(!(0,g.isRoomIdOrPeerIdChanged)(C,D)||!s)return void(0,i.sdkLog)("debug","maybeOpenWebsocketConnection. WS connection already opened [".concat(p,"]"));(0,i.sdkLog)("debug","maybeOpenWebsocketConnection. Closing WS connection. [".concat(p,"]")),null==x||x.close()}var y=(0,g.countOfValidConnections)(E);if(k||!(y<1)||A){var S=(0,g.validateConfig)(D),T=Object.keys(E)[y-1];if(!S)return A=!1,void(0,i.sdkLog)("debug","maybeOpenWebsocketConnection. WS connection not opened - invalid config [".concat(p,"]"),{watchrtcConfig:D});D.keys&&Object.keys(D.keys||{}).forEach(function(t){"string"==typeof D.keys[t]&&(D.keys[t]=[D.keys[t]])});var N=!!D.rtcToken,M=(0,g.getConnectionData)("ws",N?D.rtcToken:D.rtcApiKey,D.proxyUrl);x||(0,i.sdkLog)("debug","maybeOpenWebsocketConnection. WS socket wasn't initialized [".concat(p,"]")),A=!0,R=Date.now(),(0,i.sdkLog)("debug","maybeOpenWebsocketConnection. Opening websocket connection [".concat(p,"]")),V(_);var F=Date.now();null==x||x.connect({url:"".concat(M.url,"?").concat(N?"token":"apiKey","=").concat(M.key,"×tamp=").concat(Date.now()),options:{cleanOldTraces:L},onData:function(t){for(var n,o=0,s=Object.entries(t);o<s.length;o++){var a=s[o],u=a[0],h=a[1];b[u]=h}if(C.projectId=t.projectId,A=!1,D.allowBrowserLogCollection=!!t.collectConsoleLogEnabled,D.allowBrowserLogCollection?(null==(n=null==D?void 0:D.console)?void 0:n.override)||!t.collectConsoleLogLevel||(0,g.setConsoleLevel)(t.collectConsoleLogLevel,d):((0,g.restoreOriginalConsoleMethods)(),(null==x?void 0:x.buffer)&&(x.buffer=x.buffer.filter(function(t){return"log"!==t[0]}))),(0,i.sdkLog)("info","Connection established. watchRTCConnectionId: ".concat(t.connectionId," sdkVersion:").concat(f.default," [").concat(p,"]")),t.interval!==D.collectionInterval){var m=D.collectionInterval;D.collectionInterval=t.interval,H(),V(),(0,i.sdkLog)("error","Collection interval mismatch - connection state reset"),d({data:["collectionIntervalChange",null,{oldInterval:m}]})}d({data:["watchrtc",T,r(r(r({},D),t),{sdkVersion:f.default})]}),c&&((0,i.sdkLog)("debug","websocket onData reconnecting"),d({data:["reconnect",null,null]})),l&&d({data:["hardware",null,l]}),d({data:["sessionId",null,v.watchRTCSessionId]})},onError:function(t,n){(0,i.sdkLog)("debug","websocket onError ".concat(n)),"auth"===n&&(w=!0),A=!1,R=0},onOpen:function(){if(L=!1,P&&P({connectionStatus:"connected"}),c){var t=Date.now()-I;d({data:["reconnectDuration",null,t]})}w=!1,h&&(clearInterval(h),h=void 0);var n=Date.now()-F;(0,i.sdkLog)("debug","maybeOpenWebsocketConnection. Connection opened. Opening time - ".concat(n," ms [").concat(p,"]"))},onClose:function(t){P&&P({connectionStatus:"disconnected"});var n=t.code,r=t.reason,o=t.wasClean;(0,i.sdkLog)("debug","close event. authFailed: ".concat(w," code: ").concat(n," reason: ").concat(r," wasClean: ").concat(o," reconnectTimerId: ").concat(h),{authFailed:w,code:n,reason:r,wasClean:o,reconnectTimerId:h}),w?((0,i.sdkLog)("debug","websocket authFailed"),h&&clearInterval(h)):h||O||((0,i.sdkLog)("debug","websocket onClose reconnecting"),I=Date.now(),j({reconnecting:!0,pcId:p}),h=setInterval(function(){j({reconnecting:!0,pcId:p})},3e4))}})}else(0,i.sdkLog)("debug","maybeOpenWebsocketConnection. WS connection not opened - previous connect call not finished or missing peer connection [".concat(p,"]"),{openChannels:JSON.stringify(E),connectionCount:y,tryingToConnectSocket:A,isManualConnect:k})}},V=function(t){if(void 0===t&&(t=!1),v.clearInterval(c),t){(0,i.sdkLog)("debug","startStatsCollection - nail up");for(var n=function(t){"closed"!==t.pc.signalingState&&t.pc.getStats(null).then(function(i){var n={};
86y?i.forEach(function(t){n["".concat(t.type,"_").concat(t.id)]=t}):n=(0,g.map2obj)(i),t.nailUpRef=JSON.parse(JSON.stringify(n))})},a=0,d=Object.values(E);a<d.length;a++)n(d[a])}c=v.setInterval(function(){return o(this,void 0,void 0,function(){var t,n,o,a,d,l,u;return s(this,function(s){switch(s.label){case 0:return k||0!==(0,g.countOfValidConnections)(E)?[3,1]:((null==D?void 0:D.logGetStats)&&(0,i.sdkLog)("debug","getStatsInterval. No valid connections at this time"),R&&R+2e4<Date.now()&&(L=!0,v.clearInterval(c),null==x||x.close(),(0,i.sdkLog)("info","Last connection closed. watchRTCConnectionId: ".concat(null==b?void 0:b.connectionId," sdkVersion: ").concat(f.default))),[3,6]);case 1:R=Date.now(),t={connections:{},streams:{}},n=0,o=Object.values(E),s.label=2;case 2:return n<o.length?(a=o[n],(null==D?void 0:D.logGetStats)&&(0,i.sdkLogWithoutTrace)("debug","getStatsInterval. ".concat(a.id," signalingState: ").concat(a.pc.signalingState)),"closed"===a.pc.signalingState?[3,4]:[4,B(a)]):[3,5];case 3:l=(d=s.sent()).peer,u=d.streams,t.connections=r(r({},t.connections),l),t.streams=r(r({},t.streams),u),s.label=4;case 4:return n++,[3,2];case 5:N&&N(t),s.label=6;case 6:return[2]}})})},D.collectionInterval)},B=function(t){return new Promise(function(n,r){if(t){var o=t.id,s=t.pc,a=t.prev,c=t.nailUpRef;s.getStats(null).then(function(r){(null==D?void 0:D.logGetStats)&&(0,i.sdkLogWithoutTrace)("debug","getStats res",{res:r});var s={};y?r.forEach(function(t){s["".concat(t.type,"_").concat(t.id)]=t}):s=(0,g.map2obj)(r);var l=JSON.parse(JSON.stringify(s));s=(0,g.applyPatchForRTT)(a,s),c&&(s=(0,g.subtractNailUpReferenceStats)(c,s));var u=(0,g.deltaCompression)(a,s);(null==D?void 0:D.logGetStats)&&(0,i.sdkLogWithoutTrace)("debug","getStats(null) [".concat(o,"]"),{data:u}),null!==(null==u?void 0:u.timestamp)&&(null==u?void 0:u.timestamp)!==-1/0&&d({data:["getstats",o,u]}),t.prev=l,n((0,g.exposeApplicationStatsForPC)(o,a,s,F))})}})};i.initSDK=function(t,n,o){var s,a;if(v.watchRTCInitialized)(0,i.sdkLogWithoutTrace)("info","init. watchRTC SDK already has been initialized");else if(v.RTCPeerConnection){if(-1===v.RTCPeerConnection.toString().indexOf("[native code]")&&_&&(0,i.sdkLog)("info","init. RTCPeerConnection object has been already overridden"),v.watchRTCInitialized=!0,v.watchRTCSessionId=(0,g.generateID)(),setTimeout(function(){var t=Date.now();(0,g.getHardwareInfo)().then(function(n){var r=Date.now()-t;r<=5e4?(l=n,(0,i.sdkLog)("debug","getHardware",{hardwareInfo:l})):(0,i.sdkLog)("debug","getHardware failure: getHardwareTime: ".concat(r),{hardwareInfo:l})}).catch(function(t){(0,i.sdkLog)("error","Error. Get hardware info: ".concat(t.message))})},0),_){var c=new URLSearchParams(location.search);c.has("watchrtc")&&"debug"===c.get("watchrtc")&&(t.logLevel="debug")}if(x=(null==o?void 0:o.socketService)||new p.default,T=(null==o?void 0:o.httpService)||new m.default,t.collectionInterval=null!=(s=t.collectionInterval)?s:8e3,t.logLevel=t.logLevel||"debug",C.rtcRoomId=(D=t).rtcRoomId,C.rtcPeerId=D.rtcPeerId,d=x.trace,D.wsUrl&&(0,i.sdkLog)("info",'"wsUrl" config property is deprecated. Use "proxyUrl" instead of it'),D.proxyUrl&&(0,i.sdkLog)("info",'"proxyUrl" is used'),(null==D?void 0:D.debug)&&(0,i.sdkLog)("info",'"debug" config property is deprecated. Use "logLevel" instead of it'),n.forEach(function(t){if(v[t+"RTCPeerConnection"]){var n=v[t+"RTCPeerConnection"],o=function(t,o){(null==t?void 0:t.watchrtc)&&(C.rtcRoomId=(D=r(r({},D),t.watchrtc)).rtcRoomId,C.rtcPeerId=D.rtcPeerId);var s=new n(t,o),a="PC_"+S++;return s.__rtcStatsId=a,E[a]={id:a,pc:s,validConnection:!1},t||(t={nullConfig:!0}),((t=JSON.parse(JSON.stringify(t)))&&t.iceServers||[]).forEach(function(t){delete t.credential}),(null==t?void 0:t.watchrtc)&&delete t.watchrtc,t.browserType=y?"moz":"webkit",(0,i.sdkLog)("debug","new RTCPeerConnection called.",{config:JSON.stringify(t),constraints:o}),d({data:["create",a,t]}),o&&d({data:["constraints",a,o]}),s.addEventListener("icecandidate",function(t){(0,i.sdkLog)("debug","onicecandidate id:[".concat(a,"], candidate:[").concat(t.candidate,"]")),d({data:["onicecandidate",a,t.candidate]})}),s.addEventListener("icecandidateerror",function(t){(0,i.sdkLog)("debug","onicecandidateerror id:[".concat(a,"], error:[").concat(t.errorCode,":").concat(t.errorText,"]")),d({data:["onicecandidateerror",a,"".concat(t.errorCode,":").concat(t.errorText)]})}),s.addEventListener("addstream",function(t){d({data:["onaddstream",a,t.stream.id+" "+t.stream.getTracks().map(function(t){return t.kind+":"+t.id})]})}),s.addEventListener("track",function(t){d({data:["ontrack",a,M(t.track)+" "+t.streams.map(function(t){return"stream:"+t.id})]}),t.track.addEventListener("ended",function(){d({data:["ontrack",a,M(t.track)+" "+t.streams.map(function(t){return"stream:"+t.id})]})})}),s.addEventListener("removestream",function(t){d({data:["onremovestream",a,t.stream.id+" "+t.stream.getTracks().map(function(t){return t.kind+":"+t.id})]})}),s.addEventListener("signalingstatechange",function(){E[a]&&!E[a].validConnection?(E[a].validConnection=!0,setTimeout(function(){(0,i.sdkLog)("debug","signalingstatechage. forceRecreate websocket connection[".concat(a,"]"),{openChannels:JSON.stringify(E)}),j({forceRecreate:!0,pcId:a})},5e3)):(0,i.sdkLog)("debug","signalingstatechage. WS connection opening not triggered - peer connection not in channels or was already opened [".concat(a,"]"),{openChannels:JSON.stringify(E)}),d({data:["onsignalingstatechange",a,s.signalingState]})}),s.addEventListener("iceconnectionstatechange",function(){(0,i.sdkLog)("debug","oniceconnectionstatechange id:[".concat(a,"], state:[").concat(s.iceConnectionState,"]")),d({data:["oniceconnectionstatechange",a,s.iceConnectionState]})}),s.addEventListener("icegatheringstatechange",function(){(0,i.sdkLog)("debug","onicegatheringstatechange id:[".concat(a,"], state:[").concat(s.iceGatheringState,"]")),d({data:["onicegatheringstatechange",a,s.iceGatheringState]})}),s.addEventListener("connectionstatechange",function(){(0,i.sdkLog)("debug","onconnectionstatechange id:[".concat(a,"], state:[").concat(s.connectionState,"]")),d({data:["onconnectionstatechange",a,s.connectionState]})}),s.addEventListener("negotiationneeded",function(){(0,i.sdkLog)("debug","onnegotiationneeded id:[".concat(a,"]")),d({data:["onnegotiationneeded",a,void 0]})}),s.addEventListener("datachannel",function(t){(0,i.sdkLog)("debug","ondatachannel id:[".concat(a,"], data:[").concat(t.channel.i
86d," ").concat(t.channel.label,"]")),d({data:["ondatachannel",a,[t.channel.id,t.channel.label]]})}),(0,i.sdkLog)("debug","RTCPeerConnection override complete [".concat(a,"].")),s};if("HTMLMediaElement"in v&&"setSinkId"in HTMLMediaElement.prototype){var s=HTMLMediaElement.prototype.setSinkId;HTMLMediaElement.prototype.setSinkId=function(){var t=arguments[0];return navigator.mediaDevices.enumerateDevices().then(function(i){var n=i.find(function(i){return i.deviceId===t});n&&n.deviceId!==u&&d({data:["audioOutputChange",null,n.label]}),u=t}).catch(function(t){(0,i.sdkLog)("debug",t.message,{error:t})}),s.apply(this,arguments)}}if("RTCRtpTransceiver"in v&&"setCodecPreferences"in v.RTCRtpTransceiver.prototype){var a=v.RTCRtpTransceiver,c=a.prototype.setCodecPreferences;a.prototype.setCodecPreferences=function(){return d({data:["setCodecPreferences",this.__pcId,arguments]}),c.apply(this,arguments)}}if("RTCRtpSender"in v&&"setParameters"in v.RTCRtpSender.prototype){var l=(h=v.RTCRtpSender).prototype.setParameters;h.prototype.setParameters=function(){return d({data:["setParameters",this.__pcId,arguments]}),l.apply(this,arguments)}}if("RTCRtpSender"in v&&"replaceTrack"in v.RTCRtpSender.prototype){var h,p=(h=v.RTCRtpSender).prototype.replaceTrack;h.prototype.replaceTrack=function(){var t=arguments[0];if(t){d({data:["replaceTrack",this.__pcId,M(t)]});var i=this.track;i&&i.label!==t.label&&d({data:["".concat(t.kind,"InputChange"),this.__pcId,t.label]})}else d({data:["replaceTrack",this.__pcId,null]});return p.apply(this,arguments)}}["addTransceiver"].forEach(function(t){var i=n.prototype[t];i&&(n.prototype[t]=function(){var n=this,o="";arguments[1]&&arguments[1].streams&&(o=arguments[1].streams.map(function(t){return"stream:"+t.id}).join(";"));var s="string"==typeof arguments[0]?arguments[0]:arguments[0].kind+":"+arguments[0].id+" "+arguments[0].label,a=arguments[1]?r(r({},arguments[1]),{streams:o}):null;d({data:[t,this.__rtcStatsId,[s,a]]});var c=i.apply(this,arguments);c.sender.__pcId=this.__rtcStatsId;var l=arguments[0];return"object"==typeof l&&(d({data:["onlocaltrack",this.__rtcStatsId,M(l)]}),l.addEventListener("ended",function(){d({data:["onlocaltrack",n.__rtcStatsId,M(l)]})})),c})}),["createDataChannel","restartIce"].forEach(function(t){var i=n.prototype[t];i&&(n.prototype[t]=function(){return d({data:[t,this.__rtcStatsId,arguments]}),i.apply(this,arguments)})}),["close"].forEach(function(t){var r=n.prototype[t];r&&(n.prototype[t]=function(){return d({data:[t,this.__rtcStatsId,arguments]}),delete E[this.__rtcStatsId],O=!0,(0,i.sdkLog)("debug","on RTCPeerConnection(".concat(this.__rtcStatsId,") close")),r.apply(this,arguments)})}),["addStream","removeStream"].forEach(function(t){var i=n.prototype[t];i&&(n.prototype[t]=function(){var n=this,r=arguments[0],o=r.getTracks().map(function(t){return t.kind+":"+t.id}).join(",");return d({data:[t,this.__rtcStatsId,r.id+" "+o]}),"addStream"===t&&r.getTracks().map(function(t){d({data:["onlocaltrack",n.__rtcStatsId,M(t)+" "+r.id]}),t.addEventListener("ended",function(){d({data:["onlocaltrack",n.__rtcStatsId,M(t)+" "+r.id]})})}),i.apply(this,arguments)})}),["addTrack"].forEach(function(t){var i=n.prototype[t];i&&(n.prototype[t]=function(){var n=this,r=arguments[0],o=[].slice.call(arguments,1);d({data:[t,this.__rtcStatsId,M(r)+" "+(o.map(function(t){return"stream:"+t.id}).join(";")||"-")]}),d({data:["onlocaltrack",this.__rtcStatsId,M(r)+" "+o.map(function(t){return"stream:"+t.id})]}),r.addEventListener("ended",function(){d({data:["onlocaltrack",n.__rtcStatsId,M(r)+" "+o.map(function(t){return"stream:"+t.id})]})});var s=i.apply(this,arguments);s.__pcId=this.__rtcStatsId;var a=this.getTransceivers();return a&&a.forEach(function(t){t.__pcId=n.__rtcStatsId}),s})}),["removeTrack"].forEach(function(t){var i=n.prototype[t];i&&(n.prototype[t]=function(){var n=arguments[0].track;return d({data:[t,this.__rtcStatsId,n?M(n):"null"]}),i.apply(this,arguments)})}),["createOffer","createAnswer"].forEach(function(t){var i=n.prototype[t];i&&(n.prototype[t]=function(){var n,r=this.__rtcStatsId,o=arguments;return 1==arguments.length&&"object"==typeof arguments[0]?n=arguments[0]:3==arguments.length&&"object"==typeof arguments[2]&&(n=arguments[2]),d({data:[t,this.__rtcStatsId,n]}),i.apply(this,n?[n]:void 0).then(function(i){if(d({data:[t+"OnSuccess",r,i]}),!(o.length>0&&"function"==typeof o[0]))return i;o[0].apply(null,[i])},function(i){if(d({data:[t+"OnFailure",r,i.toString()]}),!(o.length>1&&"function"==typeof o[1]))throw i;o[1].apply(null,[i])})})}),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){var i=n.prototype[t];i&&(n.prototype[t]=function(){var n=this.__rtcStatsId,r=arguments,o=this,s="setLocalDescription"===t&&(!r[0]||r[0]&&!r[0].sdp);return d({data:[t,this.__rtcStatsId,s?{parameterless:!0}:r[0]]}),i.apply(this,[r[0]]).then(function(){d({data:[t+"OnSuccess",n,s?null==o?void 0:o.localDescription:void 0]}),r.length>=2&&"function"==typeof r[1]&&r[1].apply(null,[])},function(i){if(d({data:[t+"OnFailure",n,i.toString()]}),!(r.length>=3&&"function"==typeof r[2]))throw i;r[2].apply(null,[i])})})}),n.generateCertificate&&Object.defineProperty(o,"generateCertificate",{get:function(){return arguments.length?n.generateCertificate.apply(null,arguments):n.generateCertificate}}),v[t+"RTCPeerConnection"]=o,v[t+"RTCPeerConnection"].prototype=n.prototype,(0,i.sdkLog)("debug","RTCPeerConnection prefixes override complete")}else(0,i.sdkLog)("debug","RTCPeerConnection prefixes override failed")}),_){if(n.forEach(function(t){var i=t+(t.length?"GetUserMedia":"getUserMedia");if(navigator[i]){var n=navigator[i].bind(navigator);navigator[i]=(function(){d({data:["getUserMedia",null,arguments[0]]});var t=arguments[1],i=arguments[2];n(arguments[0],function(i){d({data:["getUserMediaOnSuccess",null,(0,g.dumpStream)(i)]}),t&&t(i)},function(t){var n=["getUserMediaOnFailure",null,t.name];d({data:n}),$(n),i&&i(t)})}).bind(navigator)}}),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var h=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=(function(){return d({data:["navigator.mediaDevices.getUserMedia",null,arguments[0]]}),h.apply(navigator.mediaDevices,arguments).then(function(t){return d({data:["navigator.mediaDevices.getUserMediaOnSuccess",null,(0,g.dumpStream)(t)]}),t},function(t){var i=["navigator.mediaDevices.getUserMediaOnFailure",null,t.name];return d({data:i}),$(i),Promise.reject(t)})}).bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var f=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=(function(){return d({data:["navigator.mediaDevices.getDisplayMedia",null,arguments[0]]}),f.apply(navigator.mediaDevices,arguments).then(function(t){return d({data:["navigator.mediaDevices.getDisplayMediaOnSuccess",null,(0,g.dumpStream)(t)]}),t},function(t){var i=["navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name];return d({data:i}),$(i),Promise.reject(t)})}).bind(navigator.mediaDevices)}}(null==(a=t.console)?void 0:a.level)&&(0,g.setConsoleLevel)(t.console.level,d)}else(0,i.sdkLogWithoutTrace)("info","init. RTCPeerConnection does not exist in global globalContext")},i.setConfig=function(t){var n;v.watchRTCInitialized?(!1!==(null==D?void 0:D.allowBrowserLogCollection)&&!0===(null==(n=null==t?void 0:t.console)?void 0:n.override)&&t.console.level&&(0,g.setConsoleLevel)(t.console.level,d),"collectionInterval"in t&&delete t.collectionInterval,C.rtcRoomId=(D=r(r({},D),t)).rtcRoomId,C.rtcPeerId=D.rtcPeerId,(0,i.sdkLog)("debug","setConfig",{newWatchrtcConfig:JSON.stringify(t),watchrtcConfig:JSON.stringify(D)}),j({})):(0,i.sdkLog)("error","SDK is not initialized. Use 'init' function first.")},i.setUserRating=function(t,n){if(!v.watchRTCInitialized)return(0,i.sdkLog)("error","SDK is not initialized. Use 'init' function first."),Promise.resolve({error:"SDK is not initialized. Use 'init' function first."});if(!(0,g.validateRating)(t))return Promise.resolve({error:"Rating is invali
86d"});var r,o=(null==(r=null==x?void 0:x.connection)?void 0:r.readyState)===v.WebSocket.OPEN,s=["userRating",null,{rating:t,ratingComment:n}];return new Promise(function(t,i){o?d({data:s,options:{promiseFuncs:{resolve:t,reject:i}}}):U.apply(void 0,s).then(function(){return t({})}).catch(function(i){return t({error:i})})})},i.addKeys=function(t){var n;if(v.watchRTCInitialized){Object.keys(t||{}).forEach(function(i){"string"==typeof t[i]&&(t[i]=[t[i]])});var r=["keys",null,t],o=(null==(n=null==x?void 0:x.connection)?void 0:n.readyState)===v.WebSocket.OPEN,s=null==x?void 0:x.wasConnected;return new Promise(function(t,i){var n={promiseFuncs:{resolve:t,reject:i}};o?d({data:r,options:n}):s?U.apply(void 0,r).then(function(){return t({})}).catch(function(i){return t({error:i})}):d({data:r,options:n})})}(0,i.sdkLog)("error","SDK is not initialized. Use 'init' function first.")},i.disableDataCollection=function(){v.watchRTCInitialized?(d({data:["disableDataCollection",null,null]}),null==x||x.disableDataCollection()):(0,i.sdkLog)("error","SDK is not initialized. Use 'init' function first.")},i.enableDataCollection=function(){v.watchRTCInitialized?(d({data:["enableDataCollection",null,null]}),null==x||x.enableDataCollection()):(0,i.sdkLog)("error","SDK is not initialized. Use 'init' function first.")},i.addEvent=function(t){if(v.watchRTCInitialized){if((0,g.validateEvent)(t,E)){var n=r({},t),o=null;n.pc&&(o=n.pc.__rtcStatsId||null,delete n.pc);var s=["event",o,n];return new Promise(function(t,i){d({data:s,options:{promiseFuncs:{resolve:t,reject:i}}})})}}else(0,i.sdkLog)("error","addEvent error. SDK is not initialized. Use 'init' function first.")},i.mapStream=function(t,n){if(v.watchRTCInitialized){if(t&&n){var r=["mapStream",null,{id:t,name:n}];(0,i.sdkLog)("info","mapStream method is deprecated. Please use mapTrack instead."),d({data:r})}}else(0,i.sdkLog)("error","mapStream error. SDK is not initialized. Use 'init' function first.")},i.mapTrack=function(t,n){v.watchRTCInitialized?t&&n&&(F[t]=n,d({data:["mapTrack",null,{id:t,name:n}]})):(0,i.sdkLog)("error","mapTrack error. SDK is not initialized. Use 'init' function first.")},i.connect=function(){v.watchRTCInitialized?(L=!0,k=!0,(0,i.sdkLog)("debug","manual connect"),j({})):(0,i.sdkLog)("error","connect error. SDK is not initialized. Use 'init' function first.")},i.disconnect=function(){v.watchRTCInitialized?(k=!1,O=!0,null==x||x.close(),(0,i.sdkLog)("debug","manual disconnect")):(0,i.sdkLog)("error","disconnect error. SDK is not initialized. Use 'init' function first.")},i.registerOnStatsListener=function(t){N=t},i.registerStateListener=function(t){P=t};var U=function(){for(var t,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];if(!C.rtcRoomId||!C.rtcPeerId){var o="Missing configuration parameters rtcPeerId and rtcRoomId to connect";return!C.rtcRoomId&&C.rtcPeerId?o="Missing configuration parameter rtcRoomId to connect":!C.rtcPeerId&&C.rtcRoomId&&(o="Missing configuration parameter rtcPeerId to connect"),(0,i.sdkLog)("error",o),Promise.reject(o)}if(!C.projectId&&!D.rtcApiKey)return o="Missing apiKey to enable trace before connection establishment",(0,i.sdkLog)("info",o),Promise.reject(o);var s=(0,g.getConnectionData)("http",D.rtcApiKey,D.proxyUrl);return T?T.trace.apply(T,a(["".concat(s.url,"/trace"),null!=(t=C.projectId)?t:s.key,C.rtcRoomId,C.rtcPeerId],n,!1)):Promise.reject("Invalid configuration of http service")},$=function(t){var n=null==D?void 0:D.rtcApiKey,r=null==D?void 0:D.rtcRoomId,o=null==D?void 0:D.rtcPeerId;if(n&&r&&o){var s=(0,g.getConnectionData)("http",null==D?void 0:D.rtcApiKey,D.proxyUrl);t=t||(null==x?void 0:x.buffer)||[],null==T||T.trace("".concat(s.url,"/error"),s.key,r,o,t)}else(0,i.sdkLog)("error","Cannot report an error. Please provide rtcApiKey, rtcRoomId and rtcPeerId ")};i.persistentEnd=function(t){v.watchRTCInitialized?(clearInterval(c),k=!1,O=!0,null==x||x.close(t),(0,i.sdkLog)("debug","persistentEnd. sessionId: ".concat(v.watchRTCSessionId))):(0,i.sdkLog)("error","persistentEnd error. SDK is not initialized. Use 'init' function first.")};var H=function(){var t;(0,i.sdkLog)("debug","resetConnectionState sessionId: ".concat(v.watchRTCSessionId));for(var n=0,r=Object.values(E);n<r.length;n++)r[n].prev=null;(null==(t=null==x?void 0:x.buffer)?void 0:t.length)&&(x.buffer=x.buffer.filter(function(t){return"getstats"!==t[0]}))};i.persistentStart=function(t,n){v.watchRTCInitialized?(D=r(r({},D),{rtcRoomId:t,rtcPeerId:n}),C.rtcRoomId=t,C.rtcPeerId=n,H(),j({nailUp:!0}),(0,i.sdkLog)("debug","persistentStart. sessionId: ".concat(v.watchRTCSessionId),{watchrtcConfig:D})):(0,i.sdkLog)("error","persistentStart error. SDK is not initialized. Use 'init' function first.")};var J=function(t){return new Promise(function(i,n){var r=document.createElement("script");r.src=t,r.onload=i,r.onerror=n,document.head.appendChild(r)})},q=!1;i.qrtcRun=function(t){var n=t.options,a=t.progressCallback;return o(void 0,void 0,void 0,function(){var t,d,c,l,u,h,p,m,y,E,S,b,C;return s(this,function(T){var x;switch(T.label){case 0:if(!_)return(0,i.sdkLogWithoutTrace)("info","Cannot run qualityRTC test in non-browser environment"),[2];q=!1,(0,i.disableDataCollection)(),T.label=1;case 1:return T.trys.push([1,,4,5]),d=(null==n?void 0:n.codeUrl)||"https://qualityrtc-sdk.s3.amazonaws.com/".concat(f.default,"/main.bundle.js"),c={},n&&Object.keys(n||{}
86).forEach(function(t){"string"==typeof n[t]&&(c[t]=n[t])}),l=(0,g.getConnectionData)("http",null==D?void 0:D.rtcApiKey,D.proxyUrl),console.log("runNetworkTest: request to run, loading lib and config",{codeUrl:d,configUrl:h=(u=!!(null==n?void 0:n.configUrl))?"".concat(n.configUrl,"/.netlify/functions/get-config"):l.url+"/get-qualityrtc-config?apiKey=".concat(l.key,"&").concat(new URLSearchParams(c))}),[4,Promise.all([(x=h,o(void 0,void 0,void 0,function(){return s(this,function(t){switch(t.label){case 0:return[4,fetch(x)];case 1:return[4,t.sent().json()];case 2:return[2,t.sent()]}})})),J(d)])];case 2:if(m=(p=T.sent())[0],console.log("runNetworkTest:JS code & config loaded",{codeLoad:p[1],configAnswer:m}),!(y=v.__qualityRTC))throw Error("runNetworkTest:Failed to load qualityRTC, __qualityRTC is undefined");return E=function(t){return!q&&(a&&a(t),!0)},S=u?m.config:m.jsonConfig.config,b=u?null==n?void 0:n.configUrl:new URL(m.url).origin,console.log("runNetworkTest: code & config loaded, running test",{config:C=r(r({},S),{isProbe:!0,options:r(r(r({},S.options),n),{wakeLock:!0,netlifyBaseUrl:b})}),configData:S,qualityRTC:y,netlifyBaseUrl:b}),[4,y.run({config:C,progressCallback:E})];case 3:return console.log("runNetworkTest:JS Test completed",{answer:t=T.sent()}),[3,5];case 4:return(0,i.enableDataCollection)(),[7];case 5:return[2,t]}})})},i.qrtcStop=function(){_?q=!0:(0,i.sdkLogWithoutTrace)("info","Cannot run qualityRTC test in non-browser environment")}},527:(t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),i.getStreamsFromStats=i.getTransportFromStats=void 0,i.getTransportFromStats=function(t,i){if(!i)return null;var n=Object.keys(i),r=n.filter(function(t){return"candidate-pair"===i[t].type&&i[t].nominated});if(r.length>0){var o=i[r[0]],s=o.localCandidateId,a=o.remoteCandidateId,d=n.find(function(t){return"local-candidate"===i[t].type&&i[t].id===s}),c=n.find(function(t){return"remote-candidate"===i[t].type&&i[t].id===a});if(d&&c){var l=i[d],u=i[c],h={};return h[t]={connection:"relay"===l.candidateType?"relay":"direct",transport:"relay"===l.candidateType?l.relayProtocol:"udp",address:"".concat(u.address,":").concat(u.port)},h}}return null},i.getStreamsFromStats=function(t,i,n,r){var o={},s=Object.keys(n);return s.filter(function(t){return"inbound-rtp"===n[t].type||"outbound-rtp"===n[t].type}).forEach(function(a){var d=n[a],c=i&&a in i?i[a]:null,l="inbound-rtp"===d.type?"inbound":"outbound",u=d.kind,h=d.remoteId in n?n[d.remoteId]:null,p=c&&c.remoteId in i?i[c.remoteId]:null,m=c?(d.timestamp-c.timestamp)/1e3:null,g={direction:l,kind:u,peerId:t};if("video"===u&&(g.frameWidth=d.frameWidth,g.frameHeight=d.frameHeight,g.framerate=d.framesPerSecond),"inbound-rtp"===d.type)g.jitter=d.jitter,g.mappedName=d.trackIdentifier in r?r[d.trackIdentifier]:null,g.bytesReceived=c?d.bytesReceived-c.bytesReceived:null,g.packetsReceived=c?d.packetsReceived-c.packetsReceived:null,g.packetsLost=c?d.packetsLost-c.packetsLost:null,g.packetsLoss=g.packetsLost+g.packetsReceived>0?100*g.packetsLost/(g.packetsLost+g.packetsReceived):null,g.bitrate=m?8*g.bytesReceived/m:null,g.roundTripTime=h&&"roundTripTime"in h?h.roundTripTime:null;else{g.bytesSent=c?d.bytesSent-c.bytesSent:null,g.packetsSent=c?d.packetsSent-c.packetsSent:null,g.bitrate=m?8*g.bytesSent/m:null,g.roundTripTime=h&&"roundTripTime"in h?h.roundTripTime:null,g.jitter=h&&"jitter"in h?h.jitter:null,g.packetsLost=h&&p?h.packetsLost-p.packetsLost:null,g.packetsLoss=h&&"fractionLost"in h?h.fractionLost:null;var f=s.find(function(t){return n[t].id===d.mediaSourceId});if(f){var _=n[f].trackIdentifier;g.mappedName=_ in r?r[_]:null}}var v=s.find(function(t){return n[t].id===d.codecId});if(v){var y=n[v].mimeType||"";g.codec=y.includes("/")?y.split("/")[1]:y}o[n[a].id]=g}),o}},699:(t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0})},593:function(t,i,n){"use strict";var r,o=this&&this.__assign||function(){return(o=Object.assign||function(t){for(var i,n=1,r=arguments.length;n<r;n++)for(var o in i=arguments[n])Object.prototype.hasOwnProperty.call(i,o)&&(t[o]=i[o]);return t}).apply(this,arguments)},s=this&&this.__awaiter||function(t,i,n,r){return new(n||(n=Prom
86ise))(function(o,s){function a(t){try{c(r.next(t))}catch(t){s(t)}}function d(t){try{c(r.throw(t))}catch(t){s(t)}}function c(t){var i;t.done?o(t.value):((i=t.value)instanceof n?i:new n(function(t){t(i)})).then(a,d)}c((r=r.apply(t,i||[])).next())})},a=this&&this.__generator||function(t,i){var n,r,o,s,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:d(0),throw:d(1),return:d(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function d(d){return function(c){return function(d){if(n)throw TypeError("Generator is already executing.");for(;s&&(s=0,d[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&d[0]?r.return:d[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,d[1])).done)return o;switch(r=0,o&&(d=[2&d[0],o.value]),d[0]){case 0:case 1:o=d;break;case 4:return a.label++,{value:d[1],done:!1};case 5:a.label++,r=d[1],d=[0];continue;case 7:d=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==d[0]&&2!==d[0])){a=0;continue}if(3===d[0]&&(!o||d[1]>o[0]&&d[1]<o[3])){a.label=d[1];break}if(6===d[0]&&a.label<o[1]){a.label=o[1],o=d;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(d);break}o[2]&&a.ops.pop(),a.trys.pop();continue}d=i.call(t,a)}catch(t){d=[6,t],r=0}finally{n=o=0}if(5&d[0])throw d[1];return{value:d[0]?d[1]:void 0,done:!0}}([d,c])}}},d=this&&this.__spreadArray||function(t,i,n){if(n||2==arguments.length)for(var r,o=0,s=i.length;o<s;o++)!r&&o in i||(r||(r=Array.prototype.slice.call(i,0,o)),r[o]=i[o]);return t.concat(r||Array.prototype.slice.call(i))};Object.defineProperty(i,"__esModule",{value:!0}),i.generateID=i.subtractNailUpReferenceStats=i.applyPatchForRTT=i.exposeApplicationStatsForPC=i.restoreOriginalConsoleMethods=i.setConsoleLevel=i.getHardwareInfo=i.validateEvent=i.validateRating=i.isRoomIdOrPeerIdChanged=i.countOfValidConnections=i.validateConfig=i.getConnectionData=i.dumpStream=i.map2obj=i.mangleChromeStats=i.deltaCompression=i.getSdkLogWithoutTrace=i.getSdkLogger=i.logPrefix=void 0;var c=n(240),l=n(527),u=n(231),h=function(){var t=new Date;return("00"+(t.getMonth()+1)).slice(-2)+"/"+("00"+t.getDate()).slice(-2)+"/"+t.getFullYear()+" "+("00"+t.getHours()).slice(-2)+":"+("00"+t.getMinutes()).slice(-2)+":"+("00"+t.getSeconds()).slice(-2)+":"+("000"+t.getMilliseconds()).slice(-3)};i.logPrefix=function(t){return void 0===t&&(t="info"),"error"===t?["".concat(h()," %cwatchRTC %cERROR"),"background: ".concat("gold","; color: black; padding: 2px 0.5em; border-radius: 0.5em;"),"background: ".concat("red","; color: white; padding: 2px 0.5em; border-radius: 0.5em;")]:["".concat(h()," %cwatchRTC"),"background: ".concat("gold","; color: black; padding: 2px 0.5em; border-radius: 0.5em;")]};var p=["debug","info","error"],m=function(t,n){return void 0===t&&(t=console.log),function(r,o,s){var a=n(),c=p.indexOf(a),l=p.indexOf(r);if(!("silent"===a||l<c)){var u=d(d([],(0,i.logPrefix)(r),!0),[o],!1);s&&u.push(s),t.apply(void 0,u)}}};i.getSdkLogger=m.bind(null,console.log),i.getSdkLogWithoutTrace=m.bind(null,null!=(r=console._original_log)?r:console.log),i.deltaCompression=function(t,i){t=t||{},Object.keys(i=JSON.parse(JSON.stringify(i=i||{}))).forEach(function(n){var r=i[n];delete r.id,t[n]&&Object.keys(r).forEach(function(o){r.timestamp&&"string"==typeof r.timestamp&&(r.timestamp=new Date(r.timestamp).getTime()),(r[o]===t[n][o]||Array.isArray(r[o])&&JSON.stringify(r[o])===JSON.stringify(t[n][o]))&&delete i[n][o],(0===Object.keys(r).length||1===Object.keys(r).length&&r.timestamp)&&delete i[n]})});var n=-1/0;
86return Object.keys(i).forEach(function(t){var r=i[t];r.timestamp>n&&(n=r.timestamp)}),Object.keys(i).forEach(function(t){var r=i[t];r.timestamp===n&&(r.timestamp=0)}),i.timestamp=n,i},i.mangleChromeStats=function(t,i){var n={};return i.result().forEach(function(t){var i={id:t.id,timestamp:t.timestamp.getTime(),type:t.type};t.names().forEach(function(n){i[n]=t.stat(n)}),n[i.id]=i}),n},i.map2obj=function(t){if(!t.entries)return t;var i={};return t.forEach(function(t,n){i[n]=t}),i},i.dumpStream=function(t){return{id:t.id,tracks:t.getTracks().map(function(t){return{id:t.id,kind:t.kind,label:t.label,enabled:t.enabled,muted:t.muted,readyState:t.readyState}})}},i.getConnectionData=function(t,i,n){var r="".concat("ws"==t?"ws":"http","://localhost:9101"),o="".concat("ws"==t?"wss":"https","://watchrtc-staging1.testrtc.com"),s="".concat("ws"==t?"wss":"https","://watchrtc-staging2.testrtc.com"),a="".concat("ws"==t?"wss":"https","://watchrtc.testrtc.com"),d="".concat("ws"==t?"wss":"https","://watchrtc-app1.testrtc.com");n&&"http"===t&&(n=n.includes("wss://")?n.replace("wss://","https://"):n.replace("ws://","http://"));var c=i.split(":");return -1!==i.indexOf("local")?{url:n||r,key:c[1]}:-1!==i.indexOf("staging1")?{url:n||o,key:c[1]}:-1!==i.indexOf("staging")?{url:n||s,key:c[1]}:-1!==i.indexOf("production1")?{url:n||d,key:c[1]}:-1!==i.indexOf("production")?{url:n||a,key:c[1]}:{url:n||a,key:c[0]}},i.validateConfig=function(t){return(null==t?void 0:t.rtcApiKey)?!(!(null==t?void 0:t.rtcRoomId)||!(null==t?void 0:t.rtcPeerId))||((0,u.sdkLog)("debug","config.rtcRoomId or config.rtcPeerId is empty."),!1):((0,u.sdkLog)("debug","config.rtcApiKey or config.rtcToken need to be provided."),!1)},i.countOfValidConnections=function(t){return Object.keys(t).filter(function(i){return t[i].validConnection}).length},i.isRoomIdOrPeerIdChanged=function(t,i){var n=!1;return i.rtcRoomId&&t.rtcRoomId&&t.rtcRoomId!==i.rtcRoomId&&(n=!0),i.rtcPeerId&&t.rtcPeerId&&t.rtcPeerId!==i.rtcPeerId&&(n=!0),n&&(0,u.sdkLog)("debug","maybeOpenWebsocketConnection. rtcRoomId or rtcPeerId has been changed",{old:{rtcRoomId:t.rtcRoomId,rtcPeerId:t.rtcPeerId},new:{rtcRoomId:i.rtcRoomId,rtcPeerId:i.rtcPeerId}}),n},i.validateRating=function(t){return t?!("number"!=typeof t||t<1||t>5)||((0,u.sdkLog)("error","rating parameter should be number from 1 to 5"),!1):((0,u.sdkLog)("error","rating parameter is required"),!1)},i.validateEvent=function(t,i){return t?["global","local","log"].includes(t.type)?t.parameters&&"object"!=typeof t.parameters?((0,u.sdkLog)("error",'event.parameters should be JSON object"'),!1):!t.pc||t.pc.__rtcStatsId in i||((0,u.sdkLog)("error",'event.pc should be a RTCPeerConnection used in the call"'),!1):((0,u.sdkLog)("error",'event.type should be either "global" or "local" or "log"'),!1):((0,u.sdkLog)("error","event parameter is required"),!1)},i.getHardwareInfo=function(){return s(void 0,void 0,void 0,function(){var t,i,r,d;function l(t){return(Math.round(100*t)/100).toFixed(2)}return a(this,function(h){switch(h.label){case 0:return"u"<typeof window?[2]:(t=function(t){return s(void 0,void 0,void 0,function(){return a(this,function(i){switch(i.label){case 0:return[4,new Promise(function(i){try{var r=n(804)("./".concat(t));return r.shift(),i(r)}catch(n){(0,u.sdkLog)("error","Error. getHardwareInfo. loadBenchmarks",{err:n.stack,fileName:t}),i([])}})];case 1:return[2,i.sent()]}})})},[4,c.getGPUTier({override:{loadBenchmarks:t}})]);case 1:return i=h.sent(),r=o(o({},i),{cores_count:window.navigator.hardwareConcurrency}),(d=window.performance.memory)&&(r.jsHeapSizeLimit=l(d.jsHeapSizeLimit/1048576),r.totalJSHeapSize=l(d.totalJSHeapSize/1048576),r.usedJSHeapSize=l(d.usedJSHeapSize/1048576)),[2,r]}})})};var g={originalMethodPrefix:"_original_",methodsToPatch:["log","debug","info","warn","error"],level:""},f=function(t,i){var n=console[t];n&&(console[g.originalMethodPrefix+t]=n,console[t]=function(){for(var r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];if(g.level&&r.length&&i){var s=g.methodsToPatch.indexOf(t),a=g.methodsToPatch.indexOf(g.level);s>=0&&s>=a&&i({data:["log",null,{type:t,text:_(r)}]})}n.apply(console,r)})};i.setConsoleLevel=function(t,i){if(t&&g.methodsToPatch.includes(t)&&t!==g.level){var n=g.methodsToPatch.indexOf(t),r=g.methodsToPatch.indexOf(g.level);if(r<0)for(var o=0,s=g.methodsToPatch.slice(n);o<s.length;o++){var a=s[o];f(a,i)}else if(n<r)for(var d=0,c=g.methodsToPatch.slice(n,r);d<c.length;d++)f(a=c[d],i);g.level=t}},i.restoreOriginalConsoleMethods=function(){if("console"in window)for(var t=0,i=g.methodsToPatch;t<i.length;t++){var n=i[t],r=console[g.originalMethodPrefix+n];r&&(console[n]=r.bind(console),delete console[g.originalMethodPrefix+n])}},i.exposeApplicationStatsForPC=function(t,i,n,r){return{peer:(0,l.getTransportFromStats)(t,n),streams:(0,l.getStreamsFromStats)(t,i,n,r)}};var _=function(t){try{return t.map(function(t){return"string"==typeof t?t:JSON.stringify(t,v())}).join(" ")}catch(t){return""}},v=function(){var t=new WeakSet;return function(i,n){if("object"==typeof n&&null!==n){if(t.has(n))return;t.add(n)}return n}};i.applyPatchForRTT=function(t,i){t=t||{},i=i||{};var n=!0;return 0===Object.keys(t).length&&(n=!1),Object.keys(i).filter(function(t){return"remote-outbound-rtp"===i[t].type||"remote-inbound-rtp"===i[t].type}
86).forEach(function(r){if("roundTripTime"in i[r]){var o="roundTripTimeMeasurements"in i[r]&&!!t[r]&&"roundTripTimeMeasurements"in t[r];n&&o&&i[r].roundTripTimeMeasurements===t[r].roundTripTimeMeasurements&&(i[r].roundTripTime=NaN)}else i[r].roundTripTime=NaN}),i},i.subtractNailUpReferenceStats=function(t,i){for(var n=function(i,n){if(i in t){var r=t[i];switch(n.type){case"inbound-rtp":["bytesReceived","packetsReceived","packetsLost","framesDecoded","keyFramesDecoded","framesRendered","framesDropped","qpSum","totalDecodeTime","totalInterFrameDelay","totalSquaredInterFrameDelay","pauseCount","totalPausesDuration","freezeCount","totalFreezesDuration","headerBytesReceived","packetsDiscarded","fecBytesReceived","fecPacketsReceived","fecPacketsDiscarded","firCount","pliCount","totalProcessingDelay","nackCount","jitterBufferEmittedCount","totalSamplesReceived","concealedSamples","silentConcealedSamples","concealmentEvents","totalAudioEnergy","totalSamplesDuration","framesReceived","framesAssembledFromMultiplePackets","totalAssemblyTime","retransmittedPacketsReceived","retransmittedBytesReceived"].forEach(function(t){t in n&&(n[t]=Math.max(n[t]-r[t],0))});break;case"outbound-rtp":["packetsSent","bytesSent","headerBytesSent","retransmittedPacketsSent","retransmittedBytesSent","totalEncodedBytesTarget","framesSent","hugeFramesSent","framesEncoded","keyFramesEncoded","qpSum","totalEncodeTime","totalPacketsSendDelay","qualityLimitationResolutionChanges","qualityLimitationDurations","nackCount","firCount","pliCount"].forEach(function(t){t in n&&("qualityLimitationDurations"===t?(n[t].bandwidth=Math.max(n[t].bandwidth-r[t].bandwidth,0),n[t].cpu=Math.max(n[t].cpu-r[t].cpu,0),n[t].other=Math.max(n[t].other-r[t].other,0),n[t].none=Math.max(n[t].none-r[t].none,0)):n[t]=Math.max(n[t]-r[t],0))});break;case"remote-inbound-rtp":["packetsReceived","packetsLost","totalRoundTripTime","roundTripTimeMeasurements"].forEach(function(t){t in n&&(n[t]=Math.max(n[t]-r[t],0))});break;case"remote-outbound-rtp":["packetsSent","bytesSent","totalRoundTripTime","roundTripTimeMeasurements"].forEach(function(t){t in n&&(n[t]=Math.max(n[t]-r[t],0))});break;case"media-source":["totalAudioEnergy","totalSamplesDuration","droppedSamplesDuration","droppedSamplesEvents","totalCaptureDelay","totalSamplesCaptured","frames"].forEach(function(t){t in n&&(n[t]=Math.max(n[t]-r[t],0))});break;case"media-playout":["synthesizedSamplesDuration","synthesizedSamplesEvents","totalSamplesDuration","totalPlayoutDelay","totalSamplesCount"].forEach(function(t){t in n&&(n[t]=Math.max(n[t]-r[t],0))});break;case"peer-connection":["dataChannelsOpened","dataChannelsClosed"].forEach(function(t){t in n&&(n[t]=Math.max(n[t]-r[t],0))});break;case"data-channel":["messagesSent","bytesSent","messagesReceived","bytesReceived"].forEach(function(t){t in n&&(n[t]=Math.max(n[t]-r[t],0))});break;case"transport":["packetsSent","packetsReceived","bytesSent","bytesReceived","selectedCandidatePairChanges"].forEach(function(t){t in n&&(n[t]=Math.max(n[t]-r[t],0))});break;case"candidate-pair":["packetsSent","packetsReceived","bytesSent","bytesReceived","totalRoundTripTime","requestsReceived","requestsSent","responsesReceived","responsesSent","consentRequestsSent","packetsDiscardedOnSend","bytesDiscardedOnSend"].forEach(function(t){t in n&&(n[t]=Math.max(n[t]-r[t],0))})}}},r=0,o=Object.entries(i);r<o.length;r++){var s=o[r];n(s[0],s[1])}return i},i.generateID=function(){return Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15)}},412:(t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),i.default="1.38.2"},911:(t,i,n)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var r=n(231);i.default=function(){function t(){t._instance?(0,r.sdkLog)("info","WatchRTCSocket instance already created"):t._instance=this}return t.prototype.trace=function(t,i,n,o){for(var s=[],a=4;a<arguments.length;a++)s[a-4]=arguments[a];var d=Array.prototype.slice.call(s);return d.push(Date.now()),d[1]instanceof RTCPeerConnection&&(d[1]=d[1].__rtcStatsId),fetch(t,{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:s,projectId:i,rtcRoomId:n,rtcPeerId:o})}).then(function(){return{}}
86).catch(function(t){return(0,r.sdkLog)("error",t.message,{err:t.stack}),{error:t}})},t}()},85:(t,i,n)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var r=n(231),o=n(354),s="u">typeof window?window:n.g;i.default=function(){function t(){var i=this;this.connection=null,this.wasConnected=!1,this.buffer=[],this.sendInterval=1,this.onClose=function(){},this.dataCollection=!0,this.sendPromises=[],this.prevMessageTs=Date.now(),this.trace=function(n){var a=n.data,d=n.options,c=Array.prototype.slice.call(a),l=i.prevMessageTs,u=Date.now(),h=u-l;if(Math.abs(h)>=432e5&&i.trace({data:["timeChange",null,{now:u,prevMessageTs:l,timeSinceLastMessage:h}]}),c.push(u),c[1]instanceof RTCPeerConnection&&(c[1]=c[1].__rtcStatsId),t._instance.dataCollection)if(t._instance.connection&&t._instance.connection.readyState===s.WebSocket.OPEN||!(t._instance.buffer.length>1e3)){if(t._instance.buffer.push(c),(null==d?void 0:d.promiseFuncs)&&t._instance.sendPromises.push(d.promiseFuncs),t._instance.connection&&t._instance.connection.readyState===s.WebSocket.OPEN&&t._instance.buffer.length>=t._instance.sendInterval){var p=JSON.stringify(t._instance.buffer),m=o.compressToEncodedURIComponent(p);(0,r.sdkLogWithoutTrace)("debug","lines: ".concat(p.length)),(0,r.sdkLogWithoutTrace)("debug","compressedMessage: ".concat(m.length)),t._instance.buffer=[],t._instance.connection.send(m),t._instance.sendPromises.forEach(function(t){return(0,t.resolve)({})}),t._instance.sendPromises=[]}}else(null==d?void 0:d.promiseFuncs)&&d.promiseFuncs.resolve({error:"Message buffer size exceeded"});else(null==d?void 0:d.promiseFuncs)&&d.promiseFuncs.resolve({error:"Data collection disabled"})},t._instance?(0,r.sdkLog)("info","WatchRTCSocket instance already created"):t._instance=this}return t.prototype.connect=function(i){var n=i.url,o=i.onData,a=i.onError,d=i.onOpen,c=i.onClose,l=i.options,u=(void 0===l?{}:l).cleanOldTraces;t._instance.connection&&(t._instance.connection.close(),t._instance.connection=null);var h=t._instance;if(u){var p=Date.now()-6e5,m=h.buffer.filter(function(t){return t[3]>p}),g=h.buffer.length-m.length;h.buffer=m;var f=["oldTracesCleanup",null,{filteredCount:g},Date.now()];(0,r.sdkLog)("info","watchRTC SDK flushed ".concat(g," messages")),h.buffer.push(f)}t._instance.connection=new s.WebSocket(n,"2.0"),t._instance.connection.onopen=d||null,t._instance.connection.onclose=c||null,t._instance.connection.onmessage=function(i){var n;try{var s=JSON.parse(i.data);s.error?(null==(n=null==h?void 0:h.connection)||n.close(),h.connection=null,(0,r.sdkLog)("error",` 87`+s.error),a(s.error,"auth")):(s.sendInterval&&(t._instance.sendInterval=s.sendInterval),o(s),t._instance.wasConnected=!0)}catch(t){(0,r.sdkLog)("error",` 88`,{err:t.stack}),a(t.message)}},t._instance.connection.onerror=function(t){(0,r.sdkLog)("error",` 89`,t),a(t,"connection")}},t.prototype.close=function(i){var n,r;if(i&&(null==(r=null==(n=t._instance)?void 0:n.connection)?void 0:r.readyState)===s.WebSocket.OPEN){var a=JSON.stringify(["nailUpCallEnd",null,null,Date.now()]),d=o.compressToEncodedURIComponent(a);t._instance.connection.send(d)}t._instance.buffer=[],t._instance.sendPromises.forEach(function(t){return(0,t.resolve)({error:"Connection was close"})}),t._instance.sendPromises=[],t._instance.connection&&(t._instance.connection.close(),t._instance.onClose(),t._instance.connection=null)},t.prototype.disableDataCollection=function(){(0,r.sdkLog)("debug","Data collection disabled."),t._instance.dataCollection=!1},t.prototype.enableDataCollection=function(){(0,r.sdkLog)("debug","Data collection enabled."),t._instance.dataCollection=!0},t.prototype.isDisabledDataCollection=function(){return!t._instance.dataCollection},t}()},240:function(t,i){!function(t){"use strict";var i=function(t,n){return(i=Object.setPrototypeOf||({__proto__:[]})instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])})(t,n)};function n(t,i,n,r){return new(n||(n=Promise))(function(o,s){function a(t){try{c(r.next(t))}catch(t){s(t)}}function d(t){try{c(r.throw(t))}catch(t){s(t)}}function c(t){var i;t.done?o(t.value):((i=t.value)instanceof n?i:new n(function(t){t(i)})).then(a,d)}c((r=r.apply(t,i||[])).next())})}function r(t,i){var n,r,o,s,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:d(0),throw:d(1),return:d(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function d(s){return function(d){return function(s){if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=i.call(t,a)}catch(t){s=[6,t],r=0}finally{n=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,d])}}}var o=["geforce 320m","geforce 8600","geforce 8600m gt","geforce 8800 gs","geforce 8800 gt","geforce 9400","geforce 9400m g","geforce 9400m","geforce 9600m gt","geforce 9600m","geforce fx go5200","geforce gt 120","geforce gt 130","geforce gt 330m","geforce gtx 285","google swiftshader","intel g41","intel g45","intel gma 4500mhd","intel gma x3100","intel hd 3000","intel q45","legacy","mali-2","mali-3","mali-4","quadro fx 1500","quadro fx 4","quadro fx 5","radeon hd 2400","radeon hd 2600","radeon hd 4670","radeon hd 4850","radeon hd 4870","radeon hd 5670","radeon hd 5750","radeon hd 6290","radeon hd 6300","radeon hd 6310","radeon hd 6320","radeon hd 6490m","radeon hd 6630m","radeon hd 6750m","radeon hd 6770m","radeon hd 6970m","sgx 543","sgx543"];function s(t){return t.toLowerCase().replace(/^angle ?\((.+)\)*$/,"$1").replace(/\s(\d{1,2}gb|direct3d.+$)|\(r\)| \([^)]+\)$/g,"")}var a="u"<typeof window,d=function(){if(!a){var t=window.navigator,i=t.userAgent,n=t.platform,r=t.maxTouchPoints,o=/(iphone|ipod|ipad)/i.test(i),s="iPad"===n||"MacIntel"===n&&r>0&&!window.MSStream;return{isIpad:s,isMobile:/android/i.test(i)||o||s,isSafari12:/Version\/12.+Safari/.test(i)}}}(),c=[],l=[];function u(t,i){if(t===i)return 0;var n=t;t.length>i.length&&(t=i,i=n);for(var r=t.length,o=i.length;r>0&&t.charCodeAt(~-r)===i.charCodeAt(~-o);)r--,o--;for(var s,a=0;a<r&&t.charCodeAt(a)===i.charCodeAt(a);)a++;if(o-=a,0==(r-=a))return o;for(var d,u,h=0,p=0,m=0;p<r;)l[p]=t.charCodeAt(a+p),c[p]=++p;for(;m<o;)for(s=i.charCodeAt(a+m),d=m++,h=m,p=0;p<r;p++)u=s===l[p]?d:d+1,d=c[p],h=c[p]=d>h?u>h?h+1:u:u>d?d+1:u;return h}function h(t){return null!=t}var p=function(t){function n(i){var n=this.constructor,r=t.call(this,i)||this;return Object.setPrototypeOf(r,n.prototype),r}return function(t,n){if("function"!=typeof n&&null!==n)throw TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}i(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}(n,t),n}(Error);t.getGPUTier=function(t){var i=void 0===t?{}:t,c=i.mobileTiers,l=void 0===c?[0,15,30,60]:c,m=i.desktopTiers,g=void 0===m?[0,15,30,60]:m,f=i.override,_=void 0===f?{}:f,v=i.glContext,y=i.failIfMajorPerformanceCaveat,E=void 0!==y&&y,S=i.benchmarksURL,b=void 0===S?"https://unpkg.com/detect-gpu@".concat("4.0.8","/dist/benchmarks"):S;return n(void 0,void 0,void 0,function(){var t,i,c,m,f,y,S,C,D,T,x,R,A,w,I,k,O,N,P,L,M,F,j,V,B,U;return r(this,function($){switch($.label){case 0:if(t={},a)return[2,{tier:0,type:"SSR"}];if(c=void 0===(i=_.isIpad)?!!(null==d?void 0:d.isIpad):i,f=void 0===(m=_.isMobile)?!!(null==d?void 0:d.isMobile):m,S=void 0===(y=_.screenSize)?window.screen:y,D=void 0===(C=_.loadBenchmarks)?function(t){return n(void 0,void 0,void 0,function(){var i;return r(this,function(n){switch(n.label){case 0:return[4,fetch("".concat(b,"/").concat(t)).then(function(t){return t.json()})];case 1:if(4>parseInt((i=n.sent()).shift().split(".")[0],10))throw new p("Detect GPU benchmark data is out of date. Please update to version 4x");return[2,i]}})})}:C,T=_.renderer,x=function(t){for(var i=0,n=f?["adreno","apple","mali-t","mali","nvidia","powervr"]:["intel","apple","amd","radeon","nvidia","geforce"];i<n.length;i++){var r=n[i];if(t.includes(r))return r}},R=function(i){return n(void 0,void 0,void 0,function(){var n,o,s,a,d,l,h,m,g,_,v,y,E,b,C,T,R,A,w,I,k,O,N;return r(this,function(r){switch(r.label){case 0:if(!(n=x(i)))return[2];s=t[o="".concat(f?"m":"d","-").concat(n).concat(c?"-ipad":"",".json")]=null!=(N=t[o])?N:D(o),r.label=1;case 1:return r.trys.push([1,3,,4]),[4,s];case 2:return a=r.sent(),[3,4];case 3:if((d=r.sent())instanceof p)throw d;return[2];case 4:if(l=function(t){var i,n=(t=t.replace(/\([^)]+\)/,"")).match(/\d+/)||t.match(/(\W|^)([A-Za-z]{1,3})(\W|$)/g);return null!=(i=null==n?void 0:n.join("").replace(/\W|amd/g,""))?i:""}(i),(h=a.filter(function(t){return t[1]===l})).length||(h=a.filter(function(t){return t[0].includes(i)})),0===(m=h.length))return[2];for(_=(g=m>1?h.map(function(t){return[t,u(i,t[0])]}).sort(function(t,i){return t[1]-i[1]})[0][0]:h[0])[0],v=g[3],y=Number.MAX_VALUE,b=window.devicePixelRatio,C=S.width*b*S.height*b,T=0,R=v;T<R.length;T++)(w=Math.abs(C-(A=R[T])[0]*A[1]))<y&&(y=w,E=A);return E?(k=(I=E)[2],O=I[3],[2,[y,k,_,O]]):[2]}})})},A=function(t,i,n,r,o){return{device:o,fps:r,gpu:n,isMobile:f,tier:t,type:i}},I="",T)w=[T=s(T)];else{if(!(k=v||function(t,i){void 0===i&&(i=!1);var n={alpha:!1,antialias:!1,depth:!1,failIfMajorPerformanceCaveat:i,powerPreference:"high-performance",stencil:!1};t&&delete n.powerPreference;var r=window.document.createElement("canvas"),o=r.getContext("webgl",n)||r.getContext("experimental-webgl",n);return null!=o?o:void 0}(null==d?void 0:d.isSafari12,E)))return[2,A(0,"WEBGL_UNSUPPORTED")];if((O=k.getExtension("WEBGL_debug_renderer_info"))&&(T=k.getParameter(O.UNMASKED_RENDERER_WEBGL)),!T)return[2,A(1,"FALLBACK")];I=T,w=function(t,i,n){return"apple gpu"===i?function(t,i,n){if(!n)return[i];var r,o=function(t){var i=t.createShader(35633),n=t.createShader(35632),r=t.createProgram();if(n&&i&&r){t.shaderSource(i,` 90 precision highp float; 91 attribute vec3 aPosition; 92 varying float vvv; 93 void main() { 94 vvv = 0.31622776601683794;
95 gl_Position = vec4(aPosition, 1.0); 96 } 97 `),t.shaderSource(n,` 98 precision highp float; 99 varying float vvv; 100 void main() { 101 vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * vvv; 102 enc = fract(enc); 103 enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0); 104 gl_FragColor = enc; 105 } 106 `),t.compileShader(i),t.compileShader(n),t.attachShader(r,i),t.attachShader(r,n),t.linkProgram(r),t.detachShader(r,i),t.detachShader(r,n),t.deleteShader(i),t.deleteShader(n),t.useProgram(r);var o=t.createBuffer();t.bindBuffer(34962,o),t.bufferData(34962,new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),35044);var s=t.getAttribLocation(r,"aPosition");t.vertexAttribPointer(s,3,5126,!1,0,0),t.enableVertexAttribArray(s),t.clearColor(1,1,1,1),t.clear(16384),t.viewport(0,0,1,1),t.drawArrays(4,0,3);var a=new Uint8Array(4);return t.readPixels(0,0,1,1,6408,5121,a),t.deleteProgram(r),t.deleteBuffer(o),a.join("")}}(t),s="801621810",a="8016218135",c="80162181161",l=(null==d?void 0:d.isIpad)?[["a7",c,12],["a8",a,15],["a8x",a,15],["a9",a,15],["a9x",a,15],["a10",a,15],["a10x",a,15],["a12",s,15],["a12x",s,15],["a12z",s,15],["a14",s,15],["m1",s,15]]:[["a7",c,12],["a8",a,12],["a9",a,15],["a10",a,15],["a11",s,15],["a12",s,15],["a13",s,15],["a14",s,15]];return"80162181255"===o?r=l.filter(function(t){return t[2]>=14}):(r=l.filter(function(t){return t[1]===o})).length||(r=l),r.map(function(t){var i=t[0];return"apple ".concat(i," gpu")})}(t,i,n):[i]}(k,T=s(T),f)}return[4,Promise.all(w.map(R))];case 1:if(!(N=$.sent().filter(h).sort(function(t,i){var n=t[0],r=void 0===n?Number.MAX_VALUE:n,o=t[1],s=i[0],a=void 0===s?Number.MAX_VALUE:s,d=i[1];return r===a?o-d:r-a})).length)return[2,(P=o.find(function(t){return T.includes(t)}))?A(0,"BLOCKLISTED",P):A(1,"FALLBACK","".concat(T," (").concat(I,")"))];if(M=(L=N[0])[1],F=L[2],j=L[3],-1===M)return[2,A(0,"BLOCKLISTED",F,M,j)];for(V=f?l:g,B=0,U=0;U<V.length;U++)M>=V[U]&&(B=U);return[2,A(B,"BENCHMARK",F,M,j)]}})})},Object.defineProperty(t,"__esModule",{value:!0})}(i)},622:t=>{"use strict";t.exports=JSON.parse('["4.0.8",["qualcomm adreno 540","540",0,[[1919,1279,19]]],["qualcomm adreno 540 gpu","540",0,[[1919,1279,24]]],["qualcomm adreno 618 gpu","618",0,[[1920,1080,20]]],["qualcomm adreno 630 gpu","630",0,[[1920,1080,21]]],["qualcomm adreno 680 gpu","680",0,[[2880,1920,25]]],["qualcomm adreno 685 gpu","685",0,[[1920,1080,28]]],["qualcomm adreno 690 gpu","690",0,[[1920,1280,28]]],["qualcomm adreno 8cx gen 3","8",0,[[1920,1080,22]]]]')},183:t=>{"use strict";t.exports=JSON.parse('["4.0.8",["amd ???","",0,[[1920,1080,144]]],["amd [amd/ati] fiji [radeon r9 fury / nano series]","9",0,[[1920,1200,162]]],["amd 15dd","15",0,[[3840,2160,14]]],["amd 66af:f1","66",0,[[3840,2160,181]]],["amd 67df:c4","67",0,[[2560,1600,59]]],["amd 67e8:00","67",0,[[1920,1080,59]]],["amd 67ef:c5","67",0,[[1920,1080,52]]],["amd 67ef:cf","67",0,[[1920,1080,74]]],["amd 67ef:e7","67",0,[[1920,1080,60]]],["amd 67ff:08","67",0,[[1920,1200,31]]],["amd 694c:c0","694",0,[[1919,1080,28],[3840,2160,12]]],["amd 694e:c0","694",0,[[3840,2160,27]]],["amd 6980:00","6980",0,[[1920,1200,59]]],["amd 699f:c1","699",0,[[1920,1080,48]]],["amd 7310:00","7310",0,[[3840,2160,55]]],["amd 731f:c1","731",0,[[1920,1080,60]]],["amd 7340:c5","7340",0,[[2560,1600,44]]],["amd advanced micro devices [amd] nee ati device","nee",0,[[1920,1200,157]]],["amd asus amd radeon r9-990x","9",0,[[1920,1080,60]]],["amd asus eah5450","5450",0,[[1600,900,12],[1680,1050,11],[1920,1200,12]]],["amd asus eah5670","5670",0,[[1920,1080,28]]],["amd asus eah6450","6450",0,[[1920,1080,12]]],["amd asus hd7750","7750",0,[[1920,1080,105]]],["amd asus hd7770","7770",0,[[1680,1050,60]]],["amd asus hd7850","7850",0,[[1920,1080,60]]],["amd asus hd7970","7970",0,[[3840,2160,50]]],["amd asus hd8760","8760",0,[[1680,1050,59]]],["amd asus r5 230","5",0,[[1920,1080,12]]],["amd asus r7 240","7",0,[[1600,900,28],[1920,1080,31]]],["amd asus r7 250","7",0,[[1920,1080,59]]],["amd asus r7 250x","7",0,[[1920,1080,60]]],["amd asus r7 265","7",0,[[1920,1080,60]]],["amd asus r7 360","7",0,[[1920,1080,78]]],["amd asus r7 370","7",0,[[1600,900,60],[1920,1080,143]]],["amd asus r9 270","9",0,[[1600,900,60]]],["amd asus r9 280x","9",0,[[1920,1080,146]]],["amd asus r9 295x2","9",0,[[2560,1440,93]]],["amd asus r9 380","9",0,[[1920,1080,60]]],["amd asus r9 390","9",0,[[1920,1080,235]]],["amd asus radeon r7 250","7",0,[[800,638,60]]],["amd asus radeon r7 260x","7",0,[[2560,1080,65]]],["amd asus radeon r9 270x","9",0,[[1024,768,85],[1920,1080,60]]],["amd asus radeon r9 280","9",0,[[1920,1080,60]]],["amd asus radeon rx 460","460",0,[[1360,768,104]]],["amd asus radeon rx 470","470",0,[[1920,1080,60]]],["amd asus radeon rx 480","480",0,[[1920,1080,124]]],["amd asus radeon rx 550","550",0,[[1440,900,60],[1920,1080,49]]],["amd asus radeon rx 5500 xt","5500",0,[[1920,1080,325]]],["amd asus radeon rx 560","560",0,[[1360,768,60],[1920,1080,85
106]]],["amd asus radeon rx 570","570",0,[[1600,900,202],[1920,1080,60]]],["amd asus radeon rx 5700","5700",0,[[1920,1080,327]]],["amd asus radeon rx 5700 xt","5700",0,[[1920,1080,224],[2560,1440,60]]],["amd asus radeon rx 580","580",0,[[1920,1080,177],[2560,1080,60]]],["amd asus radeon rx vega","rx",0,[[2560,1440,117]]],["amd asus rx 6600xt macos","6600",0,[[3840,2160,60]]],["amd ati mobility radeon hd 5870","5870",0,[[1920,1200,19]]],["amd baffin amd radeon rx 560","560",0,[[1920,1080,60]]],["amd barco mxrt 5600","5600",0,[[2800,2100,30]]],["amd carrizo 9874","9874",0,[[1920,1200,11]]],["amd cezanne","",0,[[1920,1080,162]]],["amd device","",0,[[1920,1080,188]]],["amd ellesmere radeon rx 570","570",0,[[1920,1080,60]]],["amd embedded radeon e9171","9171",0,[[3840,2160,26]]],["amd embedded radeon e9173","9173",0,[[3840,2160,16]]],["amd firepro 2270","2270",0,[[1245,768,19],[1920,1200,9]]],["amd firepro 3800 graphics adapter","3800",0,[[1920,1080,18]]],["amd firepro d300","300",0,[[1920,1080,60],[2560,1440,60],[3440,1440,60],[3840,2160,30]]],["amd firepro d500","500",0,[[1600,900,60],[2560,1440,59],[2560,1600,87],[3840,2160,57]]],["amd firepro d700","700",0,[[2048,1152,59],[2560,1440,59]]],["amd firepro m2000","2000",0,[[1600,900,28],[1920,1080,24]]],["amd firepro m4000","4000",0,[[1920,1080,57]]],["amd firepro m4000 mobility pro","4000",0,[[1920,1080,57]]],["amd firepro m4100","4100",0,[[1920,1080,58]]],["amd firepro m4100 firegl v","4100",0,[[1920,1080,24]]],["amd firepro m4150","4150",0,[[1600,900,51]]],["amd firepro m4170","4170",0,[[1920,1080,43]]],["amd firepro m5100","5100",0,[[1920,1080,60]]],["amd firepro m5100 firegl v","5100",0,[[1920,1080,29]]],["amd firepro m5950","5950",0,[[1920,1080,42]]],["amd firepro m6000 mobility pro","6000",0,[[1600,900,33],[1920,1080,60]]],["amd firepro m6100","6100",0,[[1920,1080,60]]],["amd firepro m6100 firegl v","6100",0,[[1920,1080,60]]],["amd firepro m7820","7820",0,[[1680,1050,44]]],["amd firepro r5000","5000",0,[[1920,1080,60]]],["amd firepro s10000","10000",0,[[2560,1440,58]]],["amd firepro s7150","7150",0,[[1440,900,70]]],["amd firepro s9000","9000",0,[[1920,1080,60]]],["amd firepro s9050","9050",0,[[1920,1080,101]]],["amd firepro v graphics adapter","v",0,[[1680,1050,53],[1920,1080,54]]],["amd firepro v3800","3800",0,[[1280,992,28],[1680,1050,25]]],["amd firepro v3900","3900",0,[[1920,1080,28],[2560,1440,26]]],["amd firepro v4800","4800",0,[[1440,900,37],[1920,1080,50]]],["amd firepro v4800 graphics adapter","4800",0,[[1920,1080,46]]],["amd firepro v4900","4900",0,[[1600,900,76],[1920,1080,53]]],["amd firepro v4900 graphics adapter","4900",0,[[1920,1200,40]]],["amd firepro v5800","5800",0,[[1366,768,60],[1920,1200,62]]],["amd firepro v5800 graphics adapter","5800",0,[[1360,768,83],[1280,1024,58]]],["amd firepro v5900","5900",0,[[1920,1080,53],[1920,1200,58],[3440,1440,34]]],["amd firepro v5900 graphics adapter","5900",0,[[1600,1200,54],[1920,1080,65]]],["amd firepro v7800 graphics adapter","7800",0,[[1680,1050,60],[1920,1080,60]]],["amd firepro v7900","7900",0,[[1920,1080,135],[1920,1200,60],[2560,1080,124]]],["amd firepro v7900 graphics adapter","7900",0,[[1920,1080,58]]],["amd firepro v8800","8800",0,[[2560,1440,58]]],["amd firepro w2100","2100",0,[[1920,1080,33]]],["amd firepro w4100","4100",0,[[1920,1080,55]]],["amd firepro w4100 graphics adapter","4100",0,[[1600,1200,70],[1920,1080,56]]],["amd firepro w4150m firegl v","4150",0,[[1920,1080,45]]],["amd firepro w4170m","4170",0,[[1366,768,11]]],["amd firepro w4190m","4190",0,[[1920,1080,42]]],["amd firepro w4300","4300",0,[[1280,1024,116]]],["amd firepro w5000","5000",0,[[1920,1080,60],[2560,1600,75]]],["amd firepro w5000 graphics adapter","5000",0,[[1280,1024,60],[1920,1080,117]]],["amd firepro w5100","5100",0,[[1920,1080,60],[1920,1200,59]]],["amd firepro w5100 graphics adapter","5100",0,[[1920,1080,89],[3840,2160,29]]],["amd firepro w5130m","5130",0,[[1920,1080,60]]],["amd firepro w5170m","5170",0,[[1920,1080,84],[2560,1440,51]]],["amd firepro w600","600",0,[[3840,2160,25]]],["amd firepro w6150m","6150",0,[[1920,1080,45]]],["amd firepro w7000","7000",0,[[1920,1080,60],[1920,1200,136]]],["amd firepro w7000 graphics adapter","7000",0,[[1920,1080,60]]],["amd firepro w7100","7100",0,[[1920,1080,60],[1920,1200,141]]],["amd firepro w7100 graphics adapter","7100",0,[[1200,900,60]]],["amd firepro w7170m","7170",0,[[1920,1080,60]]],["amd firepro w8000","8000",0,[[1920,1200,110],[2560,1440,60]]],["amd firepro w8100","8100",0,[[1920,1080,60],[1920,1200,60]]],["amd firepro w8100 graphic adapter","8100",0,[[1280,1024,113]]],["amd firepro w9100","9100",0,[[1920,1080,60],[1920,1200,188],[2560,1600,59]]],["amd gigabyte radeon rx 580","580",0,[[1920,1080,60]]],["amd gigabyte vega 64 macos","64",0,[[1920,1080,60]]],["amd hd7950 martin rev.","7950",0,[[2560,1440,101]]],["amd hd7950 martin ver.","7950",0,[[2560,1440,104]]],["amd kamen rider black rx","rx",0,[[1920,1080,60]]],["amd kaveri","",0,[[1920,1080,9]]],["amd madison [mobility radeon hd 5650 / 6530m/6550m]","5650",0,[[1366,768,43]]],["amd matrox c680 pcie x16","680",0,[[2560,1440,49]]],["amd matrox c900 pcie x16","900",0,[[5760,3240,9]]],["amd metal","",0,[[1920,1080,120]]],["amd mobility radeon hd 4250","4250",0,[[963,722,26]]],["amd mobility radeon hd 5000","5000",0,[[1366,768,47]]],["amd mobility radeon hd 5400","5400",0,[[1366,768,24]]],["amd mobility radeon hd 5430","5430",0,[[1600,900,15],[1920,1080,60]]],["amd mobility radeon hd 5470","5470",0,[[1366,768,24]]],["amd mobility radeon hd 5570","5570",0,[[1920,1080,27]]],["amd mobility radeon hd 5730 / 6570m","5730",0,[[1366,768,58]]],["amd mobility radeon hd 5850","5850",0,[[1600,900,55]]],["amd mobility radeon hd 5870","5870",0,[[1600,900,64],[1920,1200,53]]],["amd msi / amd rx 560","560",0,[[1920,1080,60]]],["amd msi / amd rx 560 4g","560",0,[[1920,1080,60]]],["amd msi baffin rx650","650",0,[[1920,1080,399]]],["amd msi rx560","560",0,[[1920,1080,343]]],["amd msi rx6
10650","650",0,[[1920,1080,60]]],["amd mxgpu","",0,[[1920,1012,67],[1920,1080,106]]],["amd navi 10 5700 xt","10",0,[[3840,2160,60]]],["amd opal xt/gl","xt",0,[[1366,768,60]]],["amd park [mobility radeon hd 5430","5430",0,[[1280,720,11]]],["amd picasso","",0,[[1920,1080,48]]],["amd pitcairn pro radeon hd 7850","7850",0,[[1920,1080,60]]],["amd powercolor radeon r9 280","9",0,[[1920,1080,60]]],["amd r9 270x devil","9",0,[[1920,1080,60]]],["amd r9 280x dual-x","9",0,[[1920,1080,60]]],["amd r9 380","9",0,[[2560,1440,119]]],["amd r9 xxx","9",0,[[1920,1080,60]]],["amd radeon","",0,[[1920,1080,299],[3440,1440,60]]],["amd radeon 500","500",0,[[1920,1080,73]]],["amd radeon 520","520",0,[[1920,1080,35],[2560,1440,29]]],["amd radeon 530","530",0,[[1366,768,60],[1920,1080,30]]],["amd radeon 535","535",0,[[1920,1080,35]]],["amd radeon 535dx","535",0,[[1366,768,31],[1920,1080,37]]],["amd radeon 540","540",0,[[1920,1080,38]]],["amd radeon 540 / rx 540x/550/550x","540",0,[[2560,1440,88]]],["amd radeon 540x","540",0,[[1920,1080,59]]],["amd radeon 550","550",0,[[1920,1080,115]]],["amd radeon 550x","550",0,[[1920,1080,28]]],["amd radeon 610","610",0,[[1920,1080,29]]],["amd radeon 620","620",0,[[1920,1080,18]]],["amd radeon 625","625",0,[[1366,768,55],[1920,1080,47]]],["amd radeon 630","630",0,[[1920,1080,29]]],["amd radeon 6600m and 6700m","6600",0,[[1366,768,36],[1440,900,60]]],["amd radeon 6800","6800",0,[[3440,1440,100]]],["amd radeon 7500m/7600m","7500",0,[[1366,768,37]]],["amd radeon 7950 x2","7950",0,[[2560,1440,174]]],["amd radeon d700","700",0,[[2560,1440,120]]],["amd radeon e6460","6460",0,[[1600,1200,13]]],["amd radeon e6760","6760",0,[[1200,900,54],[1920,1080,42]]],["amd radeon e8860","8860",0,[[1920,1200,27],[2560,1374,88]]],["amd radeon e8870","8870",0,[[1920,1080,81]]],["amd radeon e8870mxm","8870",0,[[1920,1080,60]]],["amd radeon e9260","9260",0,[[1680,1050,60],[3840,2160,38]]],["amd radeon e9550","9550",0,[[1680,1050,60],[3840,2160,58]]],["amd radeon embedded e9560","9560",0,[[1920,1200,60]]],["amd radeon fury","",0,[[1920,1080,60]]],["amd radeon fury x","x",0,[[1920,1080,60],[2560,1440,144]]],["amd radeon hd - firepro d300","300",0,[[1920,1080,60]]],["amd radeon hd - firepro d300 opengl engine","300",0,[[1920,1080,60],[2560,1440,59]]],["amd radeon hd - firepro d500 opengl engine","500",0,[[1920,1080,60],[2560,1440,59]]],["amd radeon hd - firepro d700 opengl engine","700",0,[[3840,2160,52]]],["amd radeon hd 2600 xt","2600",1,[[2560,1600,-1]]],["amd radeon hd 5000","5000",0,[[1920,1080,8]]],["amd radeon hd 5400","5400",0,[[1920,1080,12]]],["amd radeon hd 5450","5450",0,[[1920,1080,13]]],["amd radeon hd 5470","5470",0,[[1280,1024,16]]],["amd radeon hd 5500","5500",0,[[1920,1080,27]]],["amd radeon hd 5570","5570",0,[[1920,1080,60],[2048,1152,31]]],["amd radeon hd 5600","5600",0,[[1920,1080,56]]],["amd radeon hd 5650","5650",0,[[1366,768,53]]],["amd radeon hd 5670","5670",1,[[1920,1080,-1],[2560,1440,-1]]],["amd radeon hd 5670 opengl engine","5670",1,[[2560,1440,-1]]],["amd radeon hd 5700","5700",0,[[1920,1080,59]]],["amd radeon hd 5730","5730",0,[[1366,768,46],[1680,1050,40]]],["amd radeon hd 5750","5750",1,[[1920,1080,-1],[1920,1200,-1],[2560,1440,-1]]],["amd radeon hd 5750 opengl engine","5750",1,[[2560,1440,-1]]],["amd radeon hd 5770","5770",0,[[1776,1000,43],[1920,1080,59]]],["amd radeon hd 5800","5800",0,[[1366,768,60],[1920,1200,102]]],["amd radeon hd 5850","5850",0,[[1920,1080,60]]],["amd radeon hd 5870","5870",0,[[1280,960,75],[1920,1080,60],[2048,1280,60]]],["amd radeon hd 5870m","5870",0,[[2560,1080,31]]],["amd radeon hd 5970","5970",0,[[1360,768,60],[1920,1080,60]]],["amd radeon hd 6230","6230",0,[[1366,768,13]]],["amd radeon hd 6250","6250",0,[[1280,800,8],[1366,768,8]]],["amd radeon hd 6290","6290",1,[[1366,768,-1]]],["amd radeon hd 6300m","6300",1,[[1366,768,-1]]],["amd radeon hd 6310","6310",1,[[1366,768,-1]]],["amd radeon hd 6320","6320",1,[[1366,768,-1]]],["amd radeon hd 6350","6350",0,[[1280,1024,18],[1920,1080,14]]],["amd radeon hd 6370d","6370",0,[[1920,1080,14]]],["amd radeon hd 6370m","6370",0,[[1366,768,25]]],["amd radeon hd 6380g","6380",0,[[1366,768,19]]],["amd radeon hd 6400","6400",0,[[1920,1080,13]]],["amd radeon hd 6400m","6400",0,[[1366,768,28]]],["amd radeon hd 6400m/7400m","6400",0,[[1366,768,28]]],["amd radeon hd 6410d","6410",0,[[1920,1080,11]]],["amd radeon hd 6450","6450",0,[[1920,1080,14]]],["amd radeon hd 6450 / r5 230","6450",0,[[1440,900,12]]],["amd radeon hd 6450 230","6450",0,[[1920,1080,15]]],["amd radeon hd 6470m","6470",0,[[1366,768,27],[1600,900,21]]],["amd radeon hd 6470m/7400m","6470",0,[[1366,768,44]]],["amd radeon hd 6480g","6480",0,[[1280,768,19],[1366,768,27],[1600,900,18]]],["amd radeon hd 6490m","6490",1,[[1366,768,-1],[1440,900,-1],[1680,1050,-1]]],["amd radeon hd 6500","6500",0,[[1920,1080,25]]],["amd radeon hd 6500m/5600","6500",0,[[1920,1080,27]]],["amd radeon hd 6510","6510",0,[[1600,900,32]]],["amd radeon hd 6520g","6520",0,[[1366,768,21],[1600,900,20]]],["amd radeon hd 6530d","6530",0,[[1366,768,31],[1440,900,36],[1920,1080,24]]],["amd radeon hd 6540","6540",0,[[1600,1200,13]]],["amd radeon hd 6550d","6550",0,[[1920,1080,28]]],["amd radeon hd 6570","6570",0,[[1920,1080,52],[2560,1440,17]]],["amd radeon hd 6620g","6620",0,[[1360,768,43],[1366,768,28]]],["amd radeon hd 6630m","6630",1,[[1366,768,-1],[1600,900,-1],[1920,1080,-1]]],["amd radeon hd 6630m/6650m/6750m/7670m/7690m","6630",1,[[1366,768,-1],[1920,1080,-1]]],["amd radeon hd 6650m","6650",0,[[1366,768,51],[1600,900,31]]],["amd radeon hd 6670","6670",0,[[1920,1080,55]]],["amd radeon hd 6700","6700",0,[[1920,1080,56]]],["amd radeon hd 6700 green","6700",0,[[1360,768,89]]],["amd radeon hd 6700m/7700m/7900m","6700",0,[[1366,768,59]]],["amd radeon hd 6730m/6770m","6730",0,[[1366,768,58],[1920,1080,46]]],["amd radeon hd 6730m/6770m/7690m xt","6730",0,[[1920,1080,48]]],["amd radeon hd 6750","6750",0,[[1440,900,72],[1920,1080,60]]],["amd radeon hd 6750m","6750",1,[[1440,900,-1],[1920,1080,-1],[1920,1200,-1]]],["amd radeon hd 6770","6770",0,[[1920,1080,60]]],["amd radeon hd 6770m","6770",1,[[1440,900,-1],[2560,1440,-1]]],["amd radeon hd 6770m opengl engine","6770",1,[[2560,1440,-1]]],["amd radeon hd 6790","6790",0,[[1920,1080,59]]],["amd radeon hd 6800","6800",0,[[1280,1024,89],[1920,1080,60]]],["amd radeon hd 6800m","6800",0,[[1600,900,18],[1920,1080,40]]],["amd radeon hd 6850","6850",0,[[1920,1080,59],[2560,1600,54]]],["amd radeon hd 6870","6870",0,[[1920,1080,60],[2560,1440,59]]],["amd radeon hd 6900","6900",0,[[1920,1080,60]]],["amd radeon hd 6900m","6900",0,[[1920,1080,60]]],["amd radeon hd 6950","6950",0,[[1680,1050,60],[1920,1080,41]]],["amd radeon hd 6970","6970",0,[[1920,1080,60]]],["amd radeon hd 6970m","6970",1,[[2560,1440,-1]]],["amd radeon hd 6970m opengl engine","6970",1,[[2560,1440,-1]]],["amd radeon hd 6990","6990",0,[[1920,1080,60]]],["amd radeon hd 7000","7000",0,[[1920,1080,24]]],["amd radeon hd 7290","7290",0,[[1366,768,9]]],["amd radeon hd 7310","7310",0,[[1366,768,14]]],["amd radeon hd 7340","7340",0,[[1366,768,17],[1920,1080,10]]],["amd radeon hd 7340g","7340",0,[[1366,768,15]]],["amd radeon hd 7340m","7340",0,[[1366,768,15]]],["amd radeon hd 7350","7350",0,[[1920,1080,13]]],["amd radeon hd 7400","7400",0,[[1920,1080,18]]],["amd radeon hd 7400g","7400",0,[[963,768,31]]],["amd radeon hd 7400m","7400",0,[[1366,768,44]]],["amd radeon hd 7420g","7420",0,[[1366,768,28],[1600,900,26]]],["amd radeon hd 7450","7450",0,[[1920,1080,15]]],["amd radeon hd 7450a","7450",0,[[1920,1080,15]]],["amd radeon hd 7450m","7450",0,[[1366,768,30]]],["amd radeon hd 7470","7470",0,[[1680,1050,22],[1920,1080,144]]],["amd radeon hd 7470m","7470",0,[[1366,768,31],[1600,900,23]]],["amd radeon hd 7480d","7480",0,[[1280,1024,25],[1920,1080,24],[1920,1200,18]]],["amd radeon hd 7500","7500",0,[[1366,696,49],[1366,768,49]]],["amd radeon hd 7500g","7500",0,[[1366,768,26]]],["amd radeon hd 7500m/7600m","7500",0,[[1366,768,46]]],["amd radeon hd 7520g","7520",0,[[1366,768,33]]],["amd radeon hd 7520g + hd 7400m dual","7520",0,[[1366,768,34]]],["amd radeon hd 7520g + hd 7600m dual","7520",0,[[1366,768,31],[1600,900,41]]],["amd radeon hd 7540d","7540",0,[[1024,768,55],[1280,1024,44],[1920,1080,22]]],["amd radeon hd 7540d + hd 6670 dual","7540",0,[[1280,1024,36]]],["amd radeon hd 7550m/7650m","7550",0,[[1366,768,57]]],["amd radeon hd 7560d","7560",0,[[1920,1080,34]]],["amd radeon hd 7560d + hd 6570 dual","7560",0,[[1680,1050,44]]],["amd radeon hd 7560d + hd 6670 dual","7560",0,[[800,638,60]]],["amd radeon hd 7570","7570",0,[[1024,768,72],[1920,1080,52]]],["amd radeon hd 7570m","7570",0,[[1366,768,35]]],["amd radeon hd 7570m/hd 7670m","7570",0,[[1366,768,50],[1600,900,29]]],["amd radeon hd 7600","7600",0,[[1920,1080,60]]],["amd radeon hd 7600a","7600",0,[[1920,1080,28]]],["amd radeon hd 7600g","7600",0,[[1366,768,29]]],["amd radeon hd 7600g + 7500m/7600m dual","7600",0,[[1366,768,19]]],["amd radeon hd 7600g + hd 8670m dual","7600",0,[[1366,768,29]]],["amd radeon hd 7600g + hd dual","7600",0,[[1366,768,20]]],["amd radeon hd 7600m","7600",0,[[1366,768,56]]],["amd radeon hd 7600m/7700m","7600",0,[[1366,768,31]]],["amd radeon hd 7610m","7610",0,[[1366,768,43]]],["amd radeon hd 7620g","7620",0,[[1366,768,22],[1920,1080,19]]],["amd radeon hd 7640g","7640",0,[[1366,768,38]]],["amd radeon hd 7640g + 7470m dual","7640",0,[[1366,768,32]]],["amd radeon hd 7640g + 7600m dual","7640",0,[[1366,768,23]]],["amd radeon hd 7640g + 7670m dual","7640",0,[[1600,900,15]]],["amd radeon hd 7640g + 8500m dual","7640",0,[[1366,768,35]]],["amd radeon hd 7640g + hd 7400m dual","7640",0,[[1366,768,37]]],["amd radeon hd 7640g + hd 7500 dual","7640",0,[[1366,768,35]]],["amd radeon hd 7640g + hd 7670m dual","7640",0,[[1366,768,34]]],["amd radeon hd 7640g + hd 8500m dual","7640",0,[[1366,768,40]]],["amd radeon hd 7640g + hd 8570m dual","7640",0,[[1366,768,31]]],["amd radeon hd 7650a","7650",0,[[1680,1050,43],[1920,1080,15]]],["amd radeon hd 7650m","7650",0,[[1366,768,41],[1600,900,45]]],["amd radeon hd 7660d","7660",0,[[1680,1050,40],[1920,1008,60],[1920,1080,38]]],["amd radeon hd 7660d + hd 6570 dual","7660",0,[[1200,900,32]]],["amd radeon hd 7660d + hd 6670 dual","7660",0,[[1360,768,57],[1920,1080,53]]],["amd radeon hd 7660g","7660",0,[[1366,768,44],[1600,900,41],[1920,1080,34],[1920,1200,27]]],["amd radeon hd 7660g + 7600m dual","7660",0,[[1366,768,53],[1600,900,45]]],["amd radeon hd 7660g + 7670m dual","7660",0,[[1366,768,52]]],["amd radeon hd 7660g + 8670m dual","7660",0,[[1600,900,46]]],["amd radeon hd 7660g + hd 7600m dual","7660",0,[[1366,768,50]]],["amd radeon hd 7660g + hd 7670m dual","7660",0,[[1366,768,35]]],["amd radeon hd 7660g + hd 8600m dual","7660",0,[[1600,900,29]]],["amd radeon hd 7670","7670",0,[[1920,1080,39]]],["amd radeon hd 7670m","7670",0,[[1366,768,49],[1920,1080,36]]],["amd radeon hd 7700","7700",0,[[1400,1050,45],[1920,1080,60]]],["amd radeon hd 7700m","7700",0,[[1920,1080,54]]],["amd radeon hd 7730m","7730",0,[[1920,1080,57]]],["amd radeon hd 7750","7750",0,[[1280,1024,60],[1600,900,60],[1400,1050,98],[1920,1080,60],[3840,2160,23]]],["amd radeon hd 7750 / r7 250e","7750",0,[[2560,1080,69]]],["amd radeon hd 7750m","7750",0,[[1680,1050,57]]],["amd radeon hd 7770","7770",0,[[1920,1080,60]]],["amd radeon hd 7770 / r7 250x","7770",0,[[1680,1050,78]]],["amd radeon hd 7770 ghz","7770",0,[[1920,1080,78]]],["amd radeon hd 7790","7790",0,[[1920,1080,16]]],["amd radeon hd 7790 / r7 360 / r9 260/360","7790",0,[[1280,1024,131]]],["amd radeon hd 7800","7800",0,[[1920,1080,60]]],["amd radeon hd 7800m","7800",0,[[1920,1080,57]]],["amd radeon hd 7850","7850",0,[[1920,1080,60]]],["amd radeon hd 7850 / r7 265 / r9 270 1024sp","7850",0,[[1280,1024,87]]],["amd radeon hd 7870","7870",0,[[1920,1080,120],[2560,1440,60],[2560,1600,114],[3840,2160,30]]],["amd radeon hd 7870 ghz","7870",0,[[1920,1080,75]]],["amd radeon hd 7870 xt","7870",0,[[1920,1080,57],[3840,2160,53]]],["amd radeon hd 7870m","7870",0,[[1920,1080,22],[2732,1536,40]]],["amd radeon hd 7900","7900",0,[[2560,1600,59]]],["amd radeon hd 7950","7950",0,[[1920,1080,50]]],["amd radeon hd 7950 / r9 280","7950",0,[[1920,1080,59]]],["amd radeon hd 7950 oem / r9 280","7950",0,[[1920,1080,60]]],["amd radeon hd 7970","7970",0,[[1920,1080,60]]],["amd radeon hd 7970 / r9 280x","7970",0,[[1920,1080,193]]],["amd radeon hd 7970m","7970",0,[[1366,768,60],[1920,1080,60]]],["amd radeon hd 7970x/8970 280x","7970",0,[[1920,1080,60]]],["amd radeon hd 7990","7990",0,[[1920,1080,60],[5120,2880,63]]],["amd radeon hd 7xxx","7",0,[[1920,1080,60]]],["amd radeon hd 8180","8180",0,[[1366,768,10]]],["amd radeon hd 8200 / r3","8200",0,[[1366,768,21],[1600,900,13],[1680,1050,13]]],["amd radeon hd 8210","8210",0,[[1366,768,18]]],["amd radeon hd 8240","8240",0,[[1600,900,17]]],["amd radeon hd 8240 / r3","8240",0,[[1366,768,14]]],["amd radeon hd 8250","8250",0,[[1366,768,14],[1920,1200,10]]],["amd radeon hd 8280","8280",0,[[1600,900,60]]],["amd radeon hd 8280 / r3","8280",0,[[1366,768,22]]],["amd radeon hd 8280e","8280",0,[[2880,1620,6]]],["amd radeon hd 8330","8330",0,[[1366,768,24]]],["amd radeon hd 8350","8350",0,[[1920,1080,57]]],["amd radeon hd 8350g","8350",0,[[1366,768,18]]],["amd radeon hd 8370d","8370",0,[[1366,768,60],[1280,1024,26],[1920,1080,22]]],["amd radeon hd 8400","8400",0,[[1366,768,30],[1920,1080,16]]],["amd radeon hd 8400 / r3","8400",0,[[1360,768,19],[1366,768,22],[1920,1080,12]]],["amd radeon hd 8400e","8400",0,[[1680,1050,17],[1920,1080,16],[1920,1200,14]]],["amd radeon hd 8410g","8410",0,[[1366,768,32]]],["amd radeon hd 8450g","8450",0,[[1366,768,23]]],["amd radeon hd 8450g + hd 8750m dual","8450",0,[[1366,768,21]]],["amd radeon hd 8470","8470",0,[[1920,1080,17]]],["amd radeon hd 8470 + 7660d dual","8470",0,[[1920,1080,60]]],["amd radeon hd 8470d","8470",0,[[1280,1024,44],[1920,1080,21]]],["amd radeon hd 8470d + hd 6450 dual","8470",0,[[1600,900,37]]],["amd radeon hd 8490","8490",0,[[1920,1080,18],[1920,1200,20]]],["amd radeon hd 8500m","8500",0,[[1366,768,41],[1920,1080,19]]],["amd radeon hd 8500m/8700m","8500",0,[[1920,1080,30]]],["amd radeon hd 8510g","8510",0,[[1366,768,29],[1920,1080,17]]],["amd radeon hd 8550","8550",0,[[1920,1080,25]]],["amd radeon hd 8550g","8550",0,[[1366,768,34],[1600,900,41],[1920,1080,34]]],["amd radeon hd 8550g + 8500m dual","8550",0,[[1366,768,42]]],["amd radeon hd 8550g + 8600 dual","8550",0,[[1920,1080,27]]],["amd radeon hd 8550g + hd 8570m dual","8550",0,[[1366,768,32]]],["amd radeon hd 8550g + hd 8600 dual","8550",0,[[1366,768,60]]],["amd radeon hd 8550g + hd 8750m dual","8550",0,[[1366,768,37]]],["amd radeon hd 8550g + r5 m23
1060 dual","8550",0,[[1366,768,29]]],["amd radeon hd 8570","8570",0,[[1280,1024,60],[1680,1050,54],[1920,1080,50]]],["amd radeon hd 8570 / r5 430 / r7 240 / radeon 520","8570",0,[[1920,1080,25]]],["amd radeon hd 8570d","8570",0,[[1920,1080,16]]],["amd radeon hd 8570d + r7 240 dual","8570",0,[[1920,1080,45]]],["amd radeon hd 8570m","8570",0,[[1366,768,40]]],["amd radeon hd 8600","8600",0,[[1366,768,41]]],["amd radeon hd 8600m","8600",0,[[1366,768,42],[1920,1080,14]]],["amd radeon hd 8610g","8610",0,[[1366,768,31],[1920,1080,16]]],["amd radeon hd 8610g + 8600m dual","8610",0,[[1366,768,22]]],["amd radeon hd 8610g + hd 8600m dual","8610",0,[[1366,768,41]]],["amd radeon hd 8610g + hd 8670m dual","8610",0,[[1366,768,33]]],["amd radeon hd 8650g","8650",0,[[1360,768,44],[1366,768,44]]],["amd radeon hd 8650g + 8500m dual","8650",0,[[1366,768,35]]],["amd radeon hd 8650g + 8600 dual","8650",0,[[1920,1080,38]]],["amd radeon hd 8650g + 8600m dual","8650",0,[[1366,768,21]]],["amd radeon hd 8650g + 8670m dual","8650",0,[[1366,768,66]]],["amd radeon hd 8650g + 8750m dual","8650",0,[[1920,1080,28]]],["amd radeon hd 8650g + hd 7600m dual","8650",0,[[1366,768,36]]],["amd radeon hd 8650g + hd 8500m dual","8650",0,[[1366,768,23]]],["amd radeon hd 8650g + hd 8570m dual","8650",0,[[1366,768,36]]],["amd radeon hd 8650g + hd 8600m dual","8650",0,[[1366,768,46],[1600,900,29]]],["amd radeon hd 8650g + hd 8750m dual","8650",0,[[1366,768,36]]],["amd radeon hd 8650g + r5 m200 dual","8650",0,[[1366,768,35]]],["amd radeon hd 8670 / r7 250","8670",0,[[1024,768,1]]],["amd radeon hd 8670a/8670m/8690m","8670",0,[[1366,768,47]]],["amd radeon hd 8670a/8670m/8750m","8670",0,[[1366,768,60]]],["amd radeon hd 8670d","8670",0,[[1024,768,45],[1280,1024,69],[1920,1080,38]]],["amd radeon hd 8670d + 7700 dual","8670",0,[[1680,1050,58]]],["amd radeon hd 8670d + hd 6670 dual","8670",0,[[1680,1050,33]]],["amd radeon hd 8670d + r5 200 dual","8670",0,[[2560,1080,14]]],["amd radeon hd 8670d + r7 200 dual","8670",0,[[1920,1080,37]]],["amd radeon hd 8670m","8670",0,[[1366,768,41]]],["amd radeon hd 8690a","8690",0,[[1920,1080,31]]],["amd radeon hd 8690m","8690",0,[[1600,900,35]]],["amd radeon hd 8700m","8700",0,[[1366,768,60]]],["amd radeon hd 8730m","8730",0,[[1366,768,59]]],["amd radeon hd 8750m","8750",0,[[1366,768,60]]],["amd radeon hd 8770","8770",0,[[1920,1080,111]]],["amd radeon hd 8790m","8790",0,[[1600,900,78],[1920,1080,60]]],["amd radeon hd 8800m","8800",0,[[1920,1080,60],[2880,1800,45]]],["amd radeon hd 8830m","8830",0,[[1920,1080,82]]],["amd radeon hd 8850m","8850",0,[[1366,768,45]]],["amd radeon hd 8870m","8870",0,[[1280,1024,60],[1600,900,60]]],["amd radeon hd 8950","8950",0,[[1920,1080,60],[1920,1200,59]]],["amd radeon hd 8970","8970",0,[[2560,1600,60]]],["amd radeon hd 8970m","8970",0,[[1920,1080,146],[1920,1200,60]]],["amd radeon hd 8xxx","8",0,[[1920,1080,120],[2560,1440,58]]],["amd radeon hd5450","5450",0,[[1280,720,24]]],["amd radeon hd6870","6870",0,[[1920,1080,60]]],["amd radeon hd7970m","7970",0,[[2560,1440,116]]],["amd radeon hd8530m","8530",0,[[1366,768,40]]],["amd radeon hd8730","8730",0,[[1680,1050,42]]],["amd radeon hd8970m","8970",0,[[1920,1080,74]]],["amd radeon hybrid","",0,[[1366,768,27]]],["amd radeon infoshock rx 460","460",0,[[1360,768,102]]],["amd radeon instinct mi25","25",0,[[1920,1200,26]]],["amd radeon instinct mi25 mxgpu","25",0,[[1920,1080,20],[1920,1200,32]]],["amd radeon m535dx","535",0,[[1366,768,58]]],["amd radeon navi14","14",0,[[3840,2160,60]]],["amd radeon polaris","",0,[[3840,2160,60],[5120,2880,44]]],["amd radeon polaris 10","10",0,[[1920,1200,60]]],["amd radeon pro","pro",0,[[1920,1080,114]]],["amd radeon pro 270x","270",0,[[2560,1440,74]]],["amd radeon pro 450","450",0,[[1920,1080,30],[2880,1800,43],[3360,2100,36],[5120,2880,30]]],["amd radeon pro 450 opengl engine","450",0,[[1920,1200,60]]],["amd radeon pro 455","455",0,[[2879,1800,54],[2880,1800,48],[3360,2100,37]]],["amd radeon pro 455 opengl engine","455",0,[[3360,2100,36]]],["amd radeon pro 460","460",0,[[2880,1800,50],[3360,2100,42]]],["amd radeon pro 460 opengl engine","460",0,[[5760,3240,15]]],["amd radeon pro 470","470",0,[[6016,3384,49]]],["amd radeon pro 480","480",0,[[1920,1080,60]]],["amd radeon pro 5300","5300",0,[[5120,2880,60]]],["amd radeon pro 5300m","5300",0,[[1920,1080,214],[3584,2240,130]]],["amd radeon pro 5500 xt","5500",0,[[5120,2880,51]]],["amd radeon pro 5500m","5500",0,[[3072,1920,60],[3584,2240,139]]],["amd radeon pro 555","555",0,[[2879,1800,54],[2880,1800,36],[3360,2100,40]]],["amd radeon pro 555x","555",0,[[2880,1800,42],[3360,2100,39]]],["amd radeon pro 560","560",0,[[2879,1800,56],[2880,1800,56],[3360,2100,42]]],["amd radeon pro 5600m","5600",0,[[3072,1920,60],[3584,2240,60]]],["amd radeon pro 560x","560",0,[[2879,1800,59],[2880,1800,71],[3360,2100,43]]],["amd radeon pro 570","570",0,[[5120,2880,48]]],["amd radeon pro 570 opengl engine","570",0,[[5120,2880,46]]],["amd radeon pro 5700","5700",0,[[5120,2880,60]]],["amd radeon pro 5700 xt","5700",0,[[5120,2880,60]]],["amd radeon pro 570x","570",0,[[5120,2880,50]]],["amd radeon pro 575","575",0,[[4096,2304,60],[5120,2880,50]]],["amd radeon pro 575 opengl engine","575",0,[[5120,2880,48]]],["amd radeon pro 575
106x","575",0,[[5120,2880,56]]],["amd radeon pro 580","580",0,[[5120,2880,54]]],["amd radeon pro 580 opengl engine","580",0,[[5120,2880,50]]],["amd radeon pro 580x","580",0,[[5120,2880,52]]],["amd radeon pro duo","pro",0,[[1920,1080,234],[1800,1350,59],[3840,2160,82],[4096,2160,60]]],["amd radeon pro rx 560","560",0,[[2560,1080,60]]],["amd radeon pro ssg","pro",0,[[3440,1440,125]]],["amd radeon pro v340","340",0,[[1920,1080,112]]],["amd radeon pro v520 mxgpu","520",0,[[1920,1080,271]]],["amd radeon pro v7350x2","7350",0,[[1920,1080,60]]],["amd radeon pro vega 16","16",0,[[2879,1800,60],[3360,2100,60]]],["amd radeon pro vega 20","20",0,[[2880,1800,120],[3360,2100,121],[3840,2160,30]]],["amd radeon pro vega 48","48",0,[[5120,2880,86]]],["amd radeon pro vega 56","56",0,[[1920,1080,60],[5120,2880,60]]],["amd radeon pro vega 56 opengl engine","56",0,[[5120,2880,60]]],["amd radeon pro vega 64","64",0,[[5120,2880,60]]],["amd radeon pro vega 64 opengl engine","64",0,[[5120,2880,60]]],["amd radeon pro vega 64x","64",0,[[2560,1440,206],[4096,2304,60],[5120,2880,60]]],["amd radeon pro vega ii","proii",0,[[3840,1600,60],[5120,2880,60]]],["amd radeon pro vega ii duo","proii",0,[[2560,1440,239],[5120,2880,60]]],["amd radeon pro w5500","5500",0,[[1920,1080,195],[3840,2160,59],[7680,3240,56]]],["amd radeon pro w5500m","5500",0,[[1920,1080,60]]],["amd radeon pro w5500x","5500",0,[[1920,1200,60]]],["amd radeon pro w5700","5700",0,[[1680,1050,253],[5120,1440,120],[3840,2160,60]]],["amd radeon pro w5700x","5700",0,[[3840,2160,60]]],["amd radeon pro w6600","6600",0,[[1920,1200,60],[3840,2160,166]]],["amd radeon pro w6600m","6600",0,[[1920,1080,60]]],["amd radeon pro w6800","6800",0,[[1920,1080,60],[3840,2160,237]]],["amd radeon pro w6800x","6800",0,[[6016,3384,60]]],["amd radeon pro w6800x duo","6800",0,[[3840,1600,60],[5120,2880,45]]],["amd radeon pro w6900x","6900",0,[[3840,2160,60]]],["amd radeon pro wx","pro",0,[[2560,1080,69]]],["amd radeon pro wx 2100","2100",0,[[1280,1024,145],[1920,1080,60]]],["amd radeon pro wx 3100","3100",0,[[1919,1080,58],[1920,1080,123],[2560,1440,82]]],["amd radeon pro wx 3200","3200",0,[[2560,1440,92]]],["amd radeon pro wx 4100","4100",0,[[1920,1080,60],[1920,1200,60],[3840,2160,30],[5120,2880,18]]],["amd radeon pro wx 4130","4130",0,[[1920,1080,60],[3840,2160,30]]],["amd radeon pro wx 4150","4150",0,[[1920,1080,56],[3840,2160,37],[4096,2160,34]]],["amd radeon pro wx 5100","5100",0,[[1920,1080,60],[2560,1440,91],[3840,2160,55]]],["amd radeon pro wx 5100 opengl engine","5100",0,[[2560,1440,60]]],["amd radeon pro wx 7100","7100",0,[[1920,1080,122],[2560,1080,58],[3840,2160,60],[5120,2880,60]]],["amd radeon pro wx 7100 mobile","7100",0,[[2560,1440,60]]],["amd radeon pro wx 7100 opengl engine","7100",0,[[3840,2160,60]]],["amd radeon pro wx 8200","8200",0,[[3440,1440,124]]],["amd radeon pro wx 9100","9100",0,[[1920,1080,60],[4096,2160,101]]],["amd radeon pro wx 9100 opengl engine","9100",0,[[1920,1080,60]]],["amd radeon pro wx vega m gl","prom",0,[[3840,2160,14]]],["amd radeon pro wx3200","3200",0,[[1920,1080,55]]],["amd radeon pro wx9100","9100",0,[[2560,1440,60]]],["amd radeon r2","2",0,[[1366,768,13],[1600,900,14]]],["amd radeon r2e","2",0,[[1366,768,16],[1920,1080,45],[3840,2160,4]]],["amd radeon r3","3",0,[[1366,768,17],[1920,1080,15]]],["amd radeon r4","4",0,[[1366,768,19],[1920,1080,13]]],["amd radeon r4e","4",0,[[3840,2160,6]]],["amd radeon r5","5",0,[[1024,768,38],[1360,768,25],[1366,768,21],[1280,1024,33],[1920,1080,14],[3200,1800,7]]],["amd radeon r5 220","5",0,[[1366,768,19],[1920,1080,12]]],["amd radeon r5 230","5",0,[[1920,1080,21]]],["amd radeon r5 235","5",0,[[1920,1080,17]]],["amd radeon r5 240","5",0,[[1280,1024,34],[1920,1080,24]]],["amd radeon r5 340","5",0,[[1920,1080,27]]],["amd radeon r5 340x","5",0,[[1920,1080,31]]],["amd radeon r5 430","5",0,[[1280,1024,31],[1680,1050,54],[1920,1080,54]]],["amd radeon r5 435","5",0,[[1920,1080,30]]],["amd radeon r5 m200","5",0,[[1600,900,45],[1920,1080,20]]],["amd radeon r5 m200 / hd 8500m","5",0,[[1366,768,31],[1920,1080,24]]],["amd radeon r5 m230","5",0,[[1366,768,37]]],["amd radeon r5 m240","5",0,[[1366,768,42],[1920,1080,23]]],["amd radeon r5 m255","5",0,[[1366,768,59],[1600,900,33]]],["amd radeon r5 m315","5",0,[[1366,768,45]]],["amd radeon r5 m320","5",0,[[1920,1080,19]]],["amd radeon r5 m330","5",0,[[1366,768,27],[1920,1080,26]]],["amd radeon r5 m335","5",0,[[1366,768,55],[1920,1080,19]]],["amd radeon r5 m420","5",0,[[1366,768,49]]],["amd radeon r5 m430","5",0,[[1366,768,36],[1920,1080,20]]],["amd radeon r5 m435","5",0,[[1920,1080,41],[2560,1440,67]]],["amd radeon r5 m445","5",0,[[1920,1080,32]]],["amd radeon r5e","5",0,[[1600,768,14],[1920,1080,16]]],["amd radeon r6","6",0,[[1366,768,30],[1280,1024,23],[1920,1080,12]]],["amd radeon r6 m255dx","6",0,[[1366,768,25]]],["amd radeon r6 m340dx","6",0,[[1366,768,31],[1920,1080,15]]],["amd radeon r6e","6",0,[[3840,2160,5]]],["amd radeon r7","7",0,[[1366,768,35],[1280,1024,31],[1680,1050,39],[1920,1080,12],[1920,1200,16],[2560,1080,15],[2560,1440,21],[3840,2160,8]]],["amd radeon r7 200","7",0,[[1280,1024,45],[1920,1080,120]]],["amd radeon r7 200 series","7",0,[[1920,1080,43]
106]],["amd radeon r7 240","7",0,[[1920,1080,29]]],["amd radeon r7 240 + hd 8570d dual","7",0,[[1920,1080,43]]],["amd radeon r7 250","7",0,[[1920,1080,49]]],["amd radeon r7 250e","7",0,[[1920,1080,60]]],["amd radeon r7 250x","7",0,[[1920,1080,60]]],["amd radeon r7 260x","7",0,[[1920,1080,56]]],["amd radeon r7 260x/360","7",0,[[1920,1200,102]]],["amd radeon r7 350","7",0,[[1024,768,60],[1280,1024,79],[1920,1080,59]]],["amd radeon r7 350x","7",0,[[1920,1080,50]]],["amd radeon r7 360","7",0,[[1920,1048,60],[1920,1080,102]]],["amd radeon r7 360 / r9 360","7",0,[[1920,1080,60]]],["amd radeon r7 370","7",0,[[1600,900,60],[1920,1080,75]]],["amd radeon r7 370 / r9 270","7",0,[[1920,1080,74]]],["amd radeon r7 370 / r9 270x/370","7",0,[[1600,900,115],[1920,1080,60]]],["amd radeon r7 370 / r9 270x/370x","7",0,[[1920,1080,115]]],["amd radeon r7 370 series","7",0,[[1920,1080,212],[3840,2160,60]]],["amd radeon r7 430","7",0,[[1920,1080,55],[3840,2160,10]]],["amd radeon r7 450","7",0,[[1920,1080,60]]],["amd radeon r7 a360","7",0,[[1920,1080,28]]],["amd radeon r7 graphics + hd 7700 dual","7",0,[[1600,1200,72]]],["amd radeon r7 graphics + r5 340 dual","7",0,[[1920,1080,47]]],["amd radeon r7 graphics + r7 200 dual","7",0,[[1920,1080,45],[1920,1200,47]]],["amd radeon r7 graphics + r7 350 dual","7",0,[[1919,1080,60]]],["amd radeon r7 m260","7",0,[[1600,900,44],[1920,1080,13]]],["amd radeon r7 m260dx","7",0,[[1366,768,46],[1920,1080,18]]],["amd radeon r7 m260x","7",0,[[1920,1080,29]]],["amd radeon r7 m265","7",0,[[1366,768,48],[1920,1080,27]]],["amd radeon r7 m270","7",0,[[1920,1080,31],[3840,2160,10]]],["amd radeon r7 m340","7",0,[[1366,768,60],[1920,1080,32]]],["amd radeon r7 m350","7",0,[[3840,2160,12]]],["amd radeon r7 m360","7",0,[[1366,768,40],[1920,1080,22]]],["amd radeon r7 m370","7",0,[[1920,1080,24]]],["amd radeon r7 m440","7",0,[[1920,1080,39]]],["amd radeon r7 m445","7",0,[[1920,1080,36]]],["amd radeon r7 m460","7",0,[[1919,1080,24],[1920,1080,29]]],["amd radeon r7 m520","7",0,[[1919,1080,17]]],["amd radeon r7 series / hd 9000","7",0,[[1920,1080,71],[2560,1080,59]]],["amd radeon r7e","7",0,[[1024,768,41]]],["amd radeon r8 m350dx","8",0,[[1366,768,30]]],["amd radeon r8 m365dx","8",0,[[1920,1080,28]]],["amd radeon r8 m435dx","8",0,[[1920,1080,22]]],["amd radeon r8 m445dx","8",0,[[1366,768,38],[1920,1080,27]]],["amd radeon r8 m535dx","8",0,[[1366,768,55]]],["amd radeon r9","9",0,[[1920,1080,60]]],["amd radeon r9 200","9",0,[[1920,1080,60]]],["amd radeon r9 200 / hd 7900","9",0,[[1920,1080,250]]],["amd radeon r9 255","9",0,[[1600,900,52],[1920,1080,51]]],["amd radeon r9 260","9",0,[[1920,1080,16]]],["amd radeon r9 270","9",0,[[1280,1024,60],[1920,1080,60]]],["amd radeon r9 270 1024sp","9",0,[[1920,1080,135]]],["amd radeon r9 270x","9",0,[[1920,1080,30]]],["amd radeon r9 280","9",0,[[1920,1080,75],[1920,1200,428],[2560,1440,60]]],["amd radeon r9 280,","9",0,[[5120,2880,39]]],["amd radeon r9 280x","9",0,[[1920,1080,137]]],["amd radeon r9 285","9",0,[[1920,1080,60],[1920,1200,129]]],["amd radeon r9 290","9",0,[[1920,1080,60]]],["amd radeon r9 290x","9",0,[[1920,1080,60],[2560,1440,60],[3840,2160,118]]],["amd radeon r9 300","9",0,[[1920,1080,59]]],["amd radeon r9 350","9",0,[[1920,1200,63]]],["amd radeon r9 360","9",0,[[1600,900,83],[1920,1080,60],[2560,1440,59]]],["amd radeon r9 370","9",0,[[1680,1050,205],[1920,1080,60],[3840,2160,49]]],["amd radeon r9 370x","9",0,[[1920,1080,60]]],["amd radeon r9 380","9",0,[[1920,1080,41],[2560,1440,75]]],["amd radeon r9 380x","9",0,[[2560,1600,60]]],["amd radeon r9 390","9",0,[[1920,1080,60],[2560,1440,60]]],["amd radeon r9 390x","9",0,[[2560,1440,60],[3840,2160,60]]],["amd radeon r9 a375","9",0,[[1920,1080,28]]],["amd radeon r9 fury","9",0,[[1920,1080,75],[3840,2160,133]]],["amd radeon r9 fury / nano","9",0,[[1920,1200,155]]],["amd radeon r9 m200x","9",0,[[1366,768,104],[1920,1080,60]]],["amd radeon r9 m265x","9",0,[[1920,1080,33]]],["amd radeon r9 m270x","9",0,[[1600,900,60],[1920,1080,68]]],["amd radeon r9 m275","9",0,[[1920,1080,29]]],["amd radeon r9 m275x","9",0,[[1920,1080,20]]],["amd radeon r9 m280x","9",0,[[1920,1080,60],[2560,1440,25]]],["amd radeon r9 m290","9",0,[[5120,2880,33]]],["amd radeon r9 m290x","9",0,[[1920,1080,60],[3840,2160,61],[5120,2880,33]]],["amd radeon r9 m295x","9",0,[[3840,2160,33],[5120,2880,36]]],["amd radeon r9 m295x mac","9",0,[[5120,2880,42]]],["amd radeon r9 m295x mac edition / r9 380x","9",0,[[1920,1080,128]]],["amd radeon r9 m360","9",0,[[1920,1080,60],[3840,2160,26]]],["amd radeon r9 m370x","9",0,[[2560,1440,30],[2880,1800,27]]],["amd radeon r9 m370x opengl engine","9",0,[[5120,2880,14]]],["amd radeon r9 m375","9",0,[[1920,1080,29]]],["amd radeon r9 m375x","9",0,[[1920,1080,60],[3840,2160,22]]],["amd radeon r9 m380","9",0,[[1920,1080,50],[3840,2160,8],[5120,2880,9]]],["amd radeon r9 m380 opengl engine","9",0,[[5120,2880,15]]],["amd radeon r9 m385","9",0,[[1920,1080,58]]],["amd radeon r9 m385x","9",0,[[1920,1080,60]]],["amd radeon r9 m390","9",0,[[5119,2879,29],[5120,2880,21],[5760,3240,32]]],["amd radeon r9 m390 opengl engine","9",0,[[5120,2880,27]]],["amd radeon r9 m390x","9",0,[[1920,1080,140]]],["amd radeon r9 m395","9",0,[[2560,1440,59],[5120,2880,19]]],["amd radeon r9 m395 opengl engine","9",0,[[5120,2880,38]]],["amd radeon r9 m395x","9",0,[[3840,2160,58],[5120,2880,36]]],["amd radeon r9 m395x opengl engine","9",0,[[5120,2880,35]]],["amd radeon r9 m470","9",0,[[3840,2160,29]]],["amd radeon r9 m470x","9",0,[[1920,1080,60]]],["amd radeon r9-290x","9",0,[[1920,1080,60]]],["amd radeon renoir graphics d1","1",0,[[1366,768,60]]],["amd radeon rro 580x","580",0,[[5120,2880,59]]],["amd radeon rx 460","460",0,[[1920,1080,55],[2560,1080,60],[3840,2160,31]]],["amd radeon rx 460 / pro 450/455/460/555/555x/560/560x","460",0,[[3440,1440,93]]],["amd radeon rx 460 / pro 450/455/460/560","460",0,[[1920,1080,72]]],["amd radeon rx 470","470",0,[[1280,1024,73],[1920,1080,58],[1920,1200,147],[3840,2160,51]]],["amd radeon rx 470 opengl engine","470",0,[[2560,1440,60]]],["amd radeon rx 475m","475",0,[[1920,1080,60]]],["amd radeon rx 480","480",0,[[1400,1050,267],[1920,1080,60],[2560,1080,71]]],["amd radeon rx 480 opengl engine","480",0,[[1920,1080,60]]],["amd radeon rx 5300m","5300",0,[[1920,1080,60],[3840,2160,60]]],["amd radeon rx 540","540",0,[[1919,1080,52],[1920,1080,36]]],["amd radeon rx 550","550",0,[[1280,1024,135],[1920,1080,60],[1920,1200,60],[6016,3384,15]]],["amd radeon rx 550 640sp / rx 560","550",0,[[1920,1080,60]]],["amd radeon rx 5500","5500",0,[[1920,1080,139]]],["amd radeon rx 5500 / pro 5500m","5500",0,[[1920,1080,60],[2560,1440,227]]],["amd radeon rx 5500 xt","5500",0,[[1920,1080,239]]],["amd radeon rx 5500m","5500",0,[[1920,1048,144],[1920,1080,144],[3840,2160,60]]],["amd radeon rx 550x","550",0,[[1920,1080,52]]],["amd radeon rx 560","560",0,[[1920,1080,60],[1920,1200,42],[2560,1440,60]]],["amd radeon rx 560 [baffin]","560",0,[[1920,1080,60]]],["amd radeon rx 5600 oem/5600 xt / 5700 xt","5600",0,[[1920,1080,360],[2560,1440,164]]],["amd radeon rx 5600 xt","5600",0,[[1920,1080,75]]],["amd radeon rx 5600m","5600",0,[[1920,1080,144]]],["amd radeon rx 560d","560",0,[[2560,1080,60]]],["amd radeon rx 560x","560",0,[[1920,1080,115],[3840,2160,35
106]]],["amd radeon rx 570","570",0,[[1920,1080,60],[3072,1728,60]]],["amd radeon rx 570 opengl engine","570",0,[[1920,1080,226]]],["amd radeon rx 5700","5700",0,[[1920,1080,144]]],["amd radeon rx 5700 / 5700 xt","5700",0,[[3840,2160,201]]],["amd radeon rx 5700 xt","5700",0,[[1920,1080,464],[3840,2160,60],[6016,3384,34]]],["amd radeon rx 5700 xt 50th anniversary","5700",0,[[2560,1440,144],[3840,1600,60],[3840,2160,222],[5120,2880,60]]],["amd radeon rx 5700xt","5700",0,[[1920,1080,369]]],["amd radeon rx 580","580",0,[[1920,1080,60],[1920,1200,97],[2560,1440,60],[3840,2160,60]]],["amd radeon rx 580 2048sp","580",0,[[1920,1080,60]]],["amd radeon rx 580 opengl engine","580",0,[[1920,1080,145]]],["amd radeon rx 580 special","580",0,[[2560,1440,60]]],["amd radeon rx 580x","580",0,[[1920,1200,60],[3840,2160,79]]],["amd radeon rx 590","590",0,[[1920,1080,75],[2560,1440,164],[3584,2240,60]]],["amd radeon rx 640","640",0,[[1920,1080,39]]],["amd radeon rx 6500 xt","6500",0,[[1920,1080,60]]],["amd radeon rx 6600","6600",0,[[1920,1080,433],[3840,2160,57]]],["amd radeon rx 6600 xt","6600",0,[[1920,1080,60]]],["amd radeon rx 6600 xt/6600m","6600",0,[[2560,1440,60]]],["amd radeon rx 6600m","6600",0,[[1920,1080,139]]],["amd radeon rx 6700 xt","6700",0,[[1920,1080,451]]],["amd radeon rx 6700 xt / 6800m","6700",0,[[2560,1440,144]]],["amd radeon rx 6700m","6700",0,[[1920,1080,240]]],["amd radeon rx 6800","6800",0,[[2560,1440,564],[3840,2160,60]]],["amd radeon rx 6800 xt","6800",0,[[2560,1440,446],[3440,1440,144],[3840,2160,60]]],["amd radeon rx 6800 xt / 6900 xt","6800",0,[[2560,1440,239]]],["amd radeon rx 6800 xt 16gb","6800",0,[[6400,2666,60]]],["amd radeon rx 6800m","6800",0,[[1920,1080,300]]],["amd radeon rx 6900 xt","6900",0,[[3840,2160,60]]],["amd radeon rx rx 560","560",0,[[1920,1080,60]]],["amd radeon rx vega","rx",0,[[1920,1080,39]]],["amd radeon rx vega 10","10",0,[[1920,1080,38]]],["amd radeon rx vega 11","11",0,[[1920,1080,35]]],["amd radeon rx vega 56","56",0,[[1920,1080,144],[3440,1440,60],[3840,2160,60]]],["amd radeon rx vega 56 8gb","56",0,[[2560,1600,60]]],["amd radeon rx vega 56 opengl engine","56",0,[[2560,1440,60]]],["amd radeon rx vega 64","64",0,[[2560,1440,518]]],["amd radeon rx vega 64 8gb","64",0,[[2560,1440,60]]],["amd radeon rx vega 64 opengl engine","64",0,[[3840,2160,119]]],["amd radeon rx vega 64.1","64",0,[[6016,3384,60]]],["amd radeon rx vega 8","8",0,[[1920,1080,53]]],["amd radeon rx vega m gh","rxm",0,[[1920,1080,60],[2560,1440,60],[3840,2160,51]]],["amd radeon rx vega m gl","rxm",0,[[2560,1440,567],[3840,2160,59]]],["amd radeon rx vega11","11",0,[[2496,1664,30]]],["amd radeon rx460","460",0,[[1920,1080,60]]],["amd radeon rx480","480",0,[[1920,1080,102],[2560,1080,71]]],["amd radeon rx540","540",0,[[2400,1800,37]]],["amd radeon rx550","550",0,[[1920,1080,60]]],["amd radeon rx560","560",0,[[1920,1080,93]]],["amd radeon rx5600","5600",0,[[3840,2160,129]]],["amd radeon rx570","570",0,[[5120,2880,59]]],["amd radeon rx5700","5700",0,[[1920,1080,60]]],["amd radeon rx580","580",0,[[1920,1080,60]]],["amd radeon rx590 gme","590",0,[[1920,1080,112]]],["amd radeon rx6600xt","6600",0,[[3840,2160,60]]],["amd radeon sky 500","500",0,[[4096,2160,34]]],["amd radeon vega","",0,[[5120,2880,32]]],["amd radeon vega 10","10",0,[[1920,1080,44]]],["amd radeon vega 10 mobile","10",0,[[1920,1080,30]]],["amd radeon vega 11","11",0,[[1280,1024,60],[1920,1080,60],[3840,2160,17]]],["amd radeon vega 2","2",0,[[1366,768,30]]],["amd radeon vega 3","3",0,[[1440,900,44],[1920,1080,29],[3840,2160,8]]],["amd radeon vega 3 mobile","3",0,[[1920,1080,30]]],["amd radeon vega 56","56",0,[[2560,1440,144]]],["amd radeon vega 6","6",0,[[1366,768,61],[1920,1080,23]]],["amd radeon vega 64","64",0,[[6016,3384,35]]],["amd radeon vega 64 lc","64",0,[[2560,1080,60]]],["amd radeon vega 8","8",0,[[1920,1080,35],[2560,1440,24],[4096,2160,15]]],["amd radeon vega 8 mobile","8",0,[[1920,1080,36]]],["amd radeon vega 9","9",0,[[2496,1663,32],[2496,1664,39]]],["amd radeon vega fe","fe",0,[[1920,1080,120],[2560,1440,60]]],["amd radeon vega frontier","",0,[[1920,1080,120],[3840,2160,60]]],["amd radeon vega frontier edition opengl engine","",0,[[3440,1440,60]]],["amd radeon vega series / radeon vega mobile","",0,[[1920,1080,67]]],["amd radeon vii","vii",0,[[1920,1080,468],[2560,1440,60],[3840,2160,60]]],["amd radeont 540x","540",0,[[1920,1080,74],[3840,2160,22]]],["amd radeont rx 5300","5300",0,[[1920,1080,60]]],["amd radeont rx 5500m","5500",0,[[1920,1080,303]]],["amd radeont rx 560x","560",0,[[1920,1080,60]]],["amd renoir","",0,[[1920,1080,60]]],["amd rx 480","480",0,[[1680,1050,119]]],["amd rx 560","560",0,[[5120,2880,37]]],["amd rx 5700xt","5700",0,[[3840,2160,60]]],["amd rx 580","580",0,[[1920,1200,60],[5120,2880,60]]],["amd rx 590","590",0,[[5120,2880,60]]],["amd rx vega 64","64",0,[[1920,1080,60]]],["amd rx xxx","xxx",0,[[1920,1080,60],[2560,1440,144]]],["amd saphire radeon rx 580","580",0,[[1920,1080,57]]],["amd sapphire hd 5770","5770",0,[[1440,900,60]]],["amd sapphire nitro+ rx 6800","6800",0,[[1920,1080,75]]],["amd sapphire radeon hd6870","6870",0,[[1680,1050,60]]],["amd sapphire radeon rx 560","560",0,[[1280,1024,60]]],["amd sapphire radeon rx vega 64 8gb","64",0,[[2560,1440,144]]],["amd tonga pro gl [firepro w7100]","7100",0,[[1920,1200,127]]],["amd video controller","",0,[[1919,1079,60],[1920,1080,291]]],["intel radeong 0.4 on amd bonaire","0",0,[[1920,1200,92]]],["intel radeong 0.4 on amd cape verde","0",0,[[1920,1200,73]]],["intel radeong 0.4 on amd polaris10","0",0,[[3840,2160,108]]],["intel radeong 0.4 on amd tonga","0",0,[[1920,1080,124]]],["radeong 0.4 on amd polaris10","0",0,[[3840,2160,109]]],["radeong 0.4 on amd tahiti","0",0,[[1920,1080,223]]]]')},732:t=>{"use strict";
106t.exports=JSON.parse('["4.0.8",["apple a14","14",0,[[2704,1756,120]]],["apple m1","1",0,[[2880,1800,60]]],["apple m1 max","1",0,[[3456,2234,120]]],["apple m1 pro","1",0,[[3024,1964,120]]],["apple paravirtual device","",0,[[1024,768,30]]]]')},405:t=>{"use strict";t.exports=JSON.parse('["4.0.8",["intel geforce gtx 960","960",0,[[1920,1080,26]]],["nvidia asus geforce gt 430","430",0,[[1366,768,35]]],["nvidia asus geforce gt 440","440",0,[[1920,1080,28]]],["nvidia asus geforce gt 520","520",0,[[1680,1050,12]]],["nvidia asus geforce gt 610","610",0,[[1920,1200,15]]],["nvidia asus geforce gt 630","630",0,[[1680,1050,41]]],["nvidia asus geforce gt 640","640",0,[[2560,1440,34]]],["nvidia asus geforce gt 710","710",0,[[1920,1080,31]]],["nvidia asus geforce gt 730","730",0,[[2560,1080,28],[3840,2160,12]]],["nvidia asus geforce gts 450","450",0,[[1920,1080,54]]],["nvidia asus geforce gtx 1060","1060",0,[[3840,2160,38]]],["nvidia asus geforce gtx 1080","1080",0,[[2560,1440,120]]],["nvidia asus geforce gtx 460","460",0,[[1920,1080,60]]],["nvidia asus geforce gtx 480","480",0,[[1920,1080,59]]],["nvidia asus geforce gtx 550 ti","550",0,[[1920,1080,57]]],["nvidia asus geforce gtx 560","560",0,[[1920,1080,60]]],["nvidia asus geforce gtx 560 se","560",0,[[1920,1080,59]]],["nvidia asus geforce gtx 560 ti","560",0,[[1680,1050,58]]],["nvidia asus geforce gtx 570","570",0,[[1280,1024,74]]],["nvidia asus geforce gtx 570 hd","570",0,[[1920,1080,60]]],["nvidia asus geforce gtx 580","580",0,[[1920,1200,59]]],["nvidia asus geforce gtx 660","660",0,[[1920,1080,60]]],["nvidia asus geforce gtx 670","670",0,[[1920,1080,60]]],["nvidia asus geforce gtx 750 ti","750",0,[[1360,768,59],[1920,1080,118]]],["nvidia asus geforce gtx 760","760",0,[[1920,1080,60],[1920,1200,60]]],["nvidia asus geforce gtx 770","770",0,[[1920,1080,60]]],["nvidia asus geforce gtx 780","780",0,[[1920,1080,60]]],["nvidia asus geforce gtx 950","950",0,[[1920,1080,60]]],["nvidia asus geforce gtx 960","960",0,[[1920,1080,60],[2560,1600,117]]],["nvidia asus geforce gtx 970","970",0,[[2560,1600,60]]],["nvidia asus geforce gtx 980 ti","980",0,[[2560,1440,131]]],["nvidia colorful geforce gtx 960","960",0,[[2560,1440,60]]],["nvidia elitegroup geforce gtx 460","460",0,[[1920,1080,60]]],["nvidia evga geforce gt 545","545",0,[[1920,1080,37]]],["nvidia evga geforce gt 640","640",0,[[1366,768,60]]],["nvidia evga geforce gt 710","710",0,[[1680,1050,36],[1920,1080,29]]],["nvidia evga geforce gt 730","730",0,[[1600,900,59]]],["nvidia evga geforce gt 740","740",0,[[1280,1024,45]]],["nvidia evga geforce gtx 1050 ti","1050",0,[[2560,1440,60],[4096,2304,58]]],["nvidia evga geforce gtx 1070","1070",0,[[5120,2880,60]]],["nvidia evga geforce gtx 1080 ti","1080",0,[[1920,1200,60]]],["nvidia evga geforce gtx 560 ti","560",0,[[1680,1050,59]]],["nvidia evga geforce gtx 570","570",0,[[1920,1080,60]]],["nvidia evga geforce gtx 580","580",0,[[2560,1440,60]]],["nvidia evga geforce gtx 650","650",0,[[1920,1200,87],[2560,1600,43]]],["nvidia evga geforce gtx 650 ti","650",0,[[1680,1050,116],[2560,1440,55]]],["nvidia evga geforce gtx 650 ti boost","650",0,[[1920,1080,56]]],["nvidia evga geforce gtx 660 ti","660",0,[[1920,1200,60]]],["nvidia evga geforce gtx 680","680",0,[[1600,1200,60]]],["nvidia evga geforce gtx 750 ti","750",0,[[1920,1080,60]]],["nvidia evga geforce gtx 760","760",0,[[1920,1080,119],[1920,1200,60]]],["nvidia evga geforce gtx 780","780",0,[[1920,1080,60]]],["nvidia evga geforce gtx 960","960",0,[[1920,1080,60],[2560,1440,115]]],["nvidia evga geforce gtx 970","970",0,[[1920,1080,120]]],["nvidia evga geforce gtx 980","980",0,[[3440,1440,60]]],["nvidia evga geforce gtx 980 ti","980",0,[[1920,1080,60]]],["nvidia gainward geforce gt 630","630",0,[[1920,1080,28]]],["nvidia gainward geforce gts 450","450",0,[[1920,1080,55]]],["nvidia gainward geforce gtx 460","460",0,[[1920,1080,58]]],["nvidia gainward geforce gtx 550 ti","550",0,[[1280,1024,67]]],["nvidia gainward geforce gtx 560 ti","560",0,[[1920,1080,60]]],["nvidia gainward geforce gtx 570","570",0,[[1920,1080,60]]],["nvidia gainward geforce gtx 750 ti","750",0,[[1920,1080,60]]],["nvidia geforce 210","210",0,[[1920,1080,8]]],["nvidia geforce 410m","410",0,[[1366,768,25],[1600,900,19]]],["nvidia geforce 510","510",0,[[1280,960,20]]],["nvidia geforce 605","605",0,[[1768,992,17],[1920,1080,15]]],["nvidia geforce 610m","610",0,[[1366,768,26]]],["nvidia geforce 610m/710m/810m/820m / gt 620m/625m/630m/720m","610",0,[[1366,768,51]]],["nvidia geforce 615","615",0,[[1920,1080,21]]],["nvidia geforce 705m","705",0,[[1920,1080,18]]],["nvidia geforce 710a","710",0,[[1920,1080,32]]],["nvidia geforce 710m","710",0,[[1366,768,55]]],["nvidia geforce 730a","730",0,[[1920,1080,37]]],["nvidia geforce 800m","800",0,[[1920,1080,18]]],["nvidia geforce 810m","810",0,[[1366,768,44],[1920,1080,31]]],["nvidia geforce 820a","820",0,[[1920,1080,28]]],["nvidia geforce 820m","820",0,[[1366,768,57],[1920,1080,23]]],["nvidia geforce 830a","830",0,[[1920,1080,53]]],["nvidia geforce 830m","830",0,[[1366,768,60]]],["nvidia geforce 8400 gs","8400",0,[[1680,1050,4]]],["nvidia geforce 8400 gs rev. 3","8400",0,[[1920,1080,4]]],["nvidia geforce 840a","840",0,[[1920,1080,56]]],["nvidia geforce 840m","840",0,[[1920,1080,56]]],["nvidia geforce 845m","845",0,[[1920,1080,59]]],["nvidia geforce 8600 gt","8600",1,[[1920,1200,-1]]],["nvidia geforce 8600 gts","8600",1,[[1920,1080,-1]]],["nvidia geforce 910m","910",0,[[1366,768,58],[1600,900,45]]],["nvidia geforce 920m","920",0,[[1366,768,60]]],["nvidia geforce 920mx","920",0,[[1366,768,60],[1920,1080,60]]],["nvidia geforce 9300 / nforce 730i","9300",0,[[1920,1080,6]]],["nvidia geforce 930a","930",0,[[1920,1080,55]]],["nvidia geforce 930m","930",0,[[1366,768,60]]],["nvidia geforce 930mx","930",0,[[1366,768,89],[1920,1080,59]]],["nvidia geforce 9400 gt","9400",1,[[1366,768,-1]]],["nvidia geforce 940a","940",0,[[1920,1080,58]]],["nvidia geforce 940m","940",0,[[1920,1080,54]]],["nvidia geforce 940mx","940",0,[[1920,1080,60]]],["nvidia geforce 945m","945",0,[[1920,1080,59]]],["nvidia geforce 9600 gt","9600",0,[[1920,1200,2]]],["nvidia geforce 9600m gt","9600",1,[[1440,900,-1]]],["nvidia geforce 9800 gt","9800",0,[[1920,1200,52]]],["nvidia geforce 9800 gtx / 9800 gtx+","9800",0,[[1280,1024,59]]],["nvidia geforce gpu","gpu",0,[[3000,2000,36]]],["nvidia geforce gt 1010","1010",0,[[1920,1080,135]]],["nvidia geforce gt 1030","1030",0,[[1920,1080,60]]],["nvidia geforce gt 1030 opengl engine","1030",0,[[6720,3780,15]]],["nvidia geforce gt 120","120",1,[[1920,1080,-1]]],["nvidia geforce gt 240","240",0,[[1366,768,32]]],["nvidia geforce gt 320m","320",0,[[1366,768,26]]],["nvidia geforce gt 415m","415",0,[[1366,768,19]]],["nvidia geforce gt 420","420",0,[[1024,768,33],[1920,1080,20]]],["nvidia geforce gt 420m","420",0,[[1366,768,28]]],["nvidia geforce gt 425m","425",0,[[1366,768,55],[1600,900,28]]],["nvidia geforce gt 430","430",0,[[1600,1200,16],[1920,1080,28]]],["nvidia geforce gt 435m","435",0,[[1366,768,53],[1920,1080,22]]],["nvidia geforce gt 440","440",0,[[1280,1024,51],[1680,1050,38],[1920,1080,45]]],["nvidia geforce gt 445m","445",0,[[1600,900,53]]],["nvidia geforce gt 520","520",0,[[1440,900,19],[1920,1080,17]]],["nvidia geforce gt 520m","520",0,[[1366,768,29]]],["nvidia geforce gt 520mx","520",0,[[1366,768,35]]],["nvidia geforce gt 525m","525",0,[[1366,768,28],[1600,900,22]]],["nvidia geforce gt 530","530",0,[[1920,1080,26]]],["nvidia geforce gt 540m","540",0,[[1366,768,38]]],["nvidia geforce gt 545","545",0,[[1920,1080,54]]],["nvidia geforce gt 550m","550",0,[[1600,900,44],[1920,1080,29]]],["nvidia geforce gt 555m","555",0,[[1920,1080,42]]],["nvidia geforce gt 555m/635m","555",0,[[1920,1080,36]]],["nvidia geforce gt 610","610",0,[[1280,1024,22],[1920,1080,15]]],["nvidia geforce gt 620","620",0,[[1920,1080,19]]],["nvidia geforce gt 620 oem","620",0,[[1920,1080,20],[1920,1200,20]]],["nvidia geforce gt 620m","620",0,[[1366,768,55],[1920,1080,30]]],["nvidia geforce gt 620m/630m/635m/640m le","620",0,[[1368,768,38]]],["nvidia geforce gt 625","625",0,[[1920,1080,18]]],["nvidia geforce gt 625m","625",0,[[1366,768,38]]],["nvidia geforce gt 630","630",0,[[1680,1050,36],[1920,1080,36],[1920,1200,30]]],["nvidia geforce gt 630 oem","630",0,[[1600,900,33]]],["nvidia geforce gt 630 opengl engine","630",0,[[1920,1080,33]]],["nvidia geforce gt 630 rev. 2","630",0,[[1920,1080,26]]],["nvidia geforce gt 630m","630",0,[[1366,768,57]]],["nvidia geforce gt 635","635",0,[[1920,1080,27]]],["nvidia geforce gt 635m","635",0,[[1366,768,47]]],["nvidia geforce gt 640","640",0,[[1920,1080,47]]],["nvidia geforce gt 640 oem","640",0,[[1920,1080,46],[2560,1440,35]]],["nvidia geforce gt 640 opengl engine","640",0,[[1280,1024,43]]],["nvidia geforce gt 640 rev. 2","640",0,[[1280,1024,60],[1920,1080,55]]],["nvidia geforce gt 640m","640",0,[[1366,768,82],[1600,900,59],[1920,1080,34]]],["nvidia geforce gt 640m le","640",0,[[1920,1080,49]]],["nvidia geforce gt 640m mac","640",0,[[1366,768,56],[1920,1080,20]]],["nvidia geforce gt 640m opengl engine","640",0,[[1920,1080,45]]],["nvidia geforce gt 645m","645",0,[[1366,768,60]]],["nvidia geforce gt 650m","650",0,[[1360,768,59],[1920,1080,58],[2560,1440,59]]],["nvidia geforce gt 650m mac","650",0,[[1440,900,56],[1920,1080,15],[2560,1440,19],[2880,1800,31]]],["nvidia geforce gt 650m opengl engine","650",0,[[1920,1080,56],[3840,2160,27]]],["nvidia geforce gt 705","705",0,[[1920,1080,11]]],["nvidia geforce gt 710","710",0,[[1920,1080,28]]],["nvidia geforce gt 710b","710",0,[[1920,1080,26]]],["nvidia geforce gt 710m","710",0,[[1366,768,46]]],["nvidia geforce gt 720","720",0,[[1920,1080,19],[2560,1440,16],[5120,2880,5]]],["nvidia geforce gt 720 opengl engine","720",0,[[2560,1600,20]]],["nvidia geforce gt 720m","720",0,[[1366,768,42]]],["nvidia geforce gt 730","730",0,[[1920,1080,54]]],["nvidia geforce gt 730a","730",0,[[1920,1080,23]]],["nvidia geforce gt 730m","730",0,[[1920,1080,43]
106]],["nvidia geforce gt 735m","735",0,[[1920,1080,39]]],["nvidia geforce gt 740","740",0,[[1920,1080,55],[3440,1440,23]]],["nvidia geforce gt 740 opengl engine","740",0,[[1920,1200,51]]],["nvidia geforce gt 740m","740",0,[[1366,768,60]]],["nvidia geforce gt 745m","745",0,[[1920,1080,55]]],["nvidia geforce gt 750m","750",0,[[1920,1080,57]]],["nvidia geforce gt 750m mac","750",0,[[1920,1080,58],[2880,1800,28]]],["nvidia geforce gt 755m","755",0,[[1920,1080,57]]],["nvidia geforce gt 755m mac","755",0,[[2560,1440,41]]],["nvidia geforce gt 755m opengl engine","755",0,[[2560,1440,51]]],["nvidia geforce gt 820m","820",0,[[1600,900,47]]],["nvidia geforce gts 250","250",0,[[1680,1050,53]]],["nvidia geforce gts 450","450",0,[[1360,768,60],[1680,1050,57],[1920,1080,55]]],["nvidia geforce gts 450 rev. 2","450",0,[[1920,1080,56]]],["nvidia geforce gtx 1050","1050",0,[[1920,1080,60]]],["nvidia geforce gtx 1050 3gb","1050",0,[[1280,1024,60]]],["nvidia geforce gtx 1050 mobile","1050",0,[[1920,1080,60]]],["nvidia geforce gtx 1050 opengl engine","1050",0,[[1920,1080,116]]],["nvidia geforce gtx 1050 ti","1050",0,[[1920,1080,60]]],["nvidia geforce gtx 1050 ti mobile","1050",0,[[1920,1080,298]]],["nvidia geforce gtx 1050 ti opengl engine","1050",0,[[1920,1080,60]]],["nvidia geforce gtx 1050 ti with max-q design","1050",0,[[1920,1080,268],[2560,1440,102],[3840,2160,60]]],["nvidia geforce gtx 1050 with max-q design","1050",0,[[1920,1080,60],[3840,2160,24]]],["nvidia geforce gtx 1060","1060",0,[[1920,1080,60],[3840,2160,59]]],["nvidia geforce gtx 1060 3gb","1060",0,[[1920,1080,60]]],["nvidia geforce gtx 1060 3gb opengl engine","1060",0,[[1920,1080,60]]],["nvidia geforce gtx 1060 5gb","1060",0,[[1920,1080,55]]],["nvidia geforce gtx 1060 6gb","1060",0,[[1920,1080,60]]],["nvidia geforce gtx 1060 6gb opengl engine","1060",0,[[1920,1080,75]]],["nvidia geforce gtx 1060 mobile","1060",0,[[1920,1080,422]]],["nvidia geforce gtx 1060 mobile 6gb","1060",0,[[1920,1080,120]]],["nvidia geforce gtx 1060 with max-q design","1060",0,[[1920,1080,60]]],["nvidia geforce gtx 1060se 3gb","1060",0,[[1920,1080,60]]],["nvidia geforce gtx 1070","1070",0,[[1920,1080,134]]],["nvidia geforce gtx 1070 a17","1070",0,[[1920,1080,60]]],["nvidia geforce gtx 1070 mobile","1070",0,[[1920,1080,467]]],["nvidia geforce gtx 1070 opengl engine","1070",0,[[1920,1080,143]]],["nvidia geforce gtx 1070 ti","1070",0,[[1920,1080,60],[6016,3384,59]]],["nvidia geforce gtx 1070 ti opengl engine","1070",0,[[1920,1080,75]]],["nvidia geforce gtx 1070 with max-q design","1070",0,[[1920,1080,448]]],["nvidia geforce gtx 1070 with maxq design","1070",0,[[1920,1080,60],[3840,2160,59]]],["nvidia geforce gtx 1080","1080",0,[[1920,1080,119],[2560,1440,326],[3840,2160,286]]],["nvidia geforce gtx 1080 mobile","1080",0,[[1920,1080,120]]],["nvidia geforce gtx 1080 opengl engine","1080",0,[[1920,1080,79]]],["nvidia geforce gtx 1080 ti","1080",0,[[1920,1080,120]]],["nvidia geforce gtx 1080 ti opengl engine","1080",0,[[1920,1080,127]]],["nvidia geforce gtx 1080 with max-q design","1080",0,[[1920,1080,144]]],["nvidia geforce gtx 1180","1180",0,[[3440,1440,60]]],["nvidia geforce gtx 1650","1650",0,[[1920,1080,380]]],["nvidia geforce gtx 1650 mobile / max-q","1650",0,[[1920,1080,292]]],["nvidia geforce gtx 1650 super","1650",0,[[1920,1080,433]]],["nvidia geforce gtx 1650 ti","1650",0,[[1920,1080,144],[3840,2400,59]]],["nvidia geforce gtx 1650 ti mobile","1650",0,[[1920,1080,144]]],["nvidia geforce gtx 1650 ti with max-q design","1650",0,[[1920,1080,60],[3839,2160,60]]],["nvidia geforce gtx 1650 with max-q design","1650",0,[[1920,1080,142],[3000,2000,60]]],["nvidia geforce gtx 1660","1660",0,[[1920,1080,144]]],["nvidia geforce gtx 1660 super","1660",0,[[1920,1080,60]]],["nvidia geforce gtx 1660 ti","1660",0,[[1920,1080,546],[3840,2160,60]]],["nvidia geforce gtx 1660 ti mobile","1660",0,[[1920,1080,451]]],["nvidia geforce gtx 1660 ti with max-q design","1660",0,[[1920,1080,144]]],["nvidia geforce gtx 280","280",0,[[1680,1050,56]]],["nvidia geforce gtx 295","295",0,[[1920,1080,56]]],["nvidia geforce gtx 460","460",0,[[1920,1080,60]]],["nvidia geforce gtx 460 oem","460",0,[[1360,768,60],[1920,1080,60]]],["nvidia geforce gtx 460 opengl engine","460",0,[[1920,1080,59]]],["nvidia geforce gtx 460 se","460",0,[[1920,1080,56],[1920,1200,57]]],["nvidia geforce gtx 460 v2","460",0,[[1920,1080,60],[1920,1200,60],[2560,1600,55]]],["nvidia geforce gtx 460m","460",0,[[1920,1080,46]]],["nvidia geforce gtx 465","465",0,[[1920,1080,134],[1920,1200,59]]],["nvidia geforce gtx 470","470",0,[[1680,1050,60],[1920,1080,59]]],["nvidia geforce gtx 470m","470",0,[[1920,1200,55]]],["nvidia geforce gtx 480","480",0,[[1440,900,191],[1920,1080,115],[1920,1200,60]]],["nvidia geforce gtx 480 opengl engine","480",0,[[1600,1200,60]]],["nvidia geforce gtx 550 ti","550",0,[[1280,1024,58],[1920,1080,58]]],["nvidia geforce gtx 550 ti opengl engine","550",0,[[1920,1080,55]]],["nvidia geforce gtx 555","555",0,[[1920,1080,54]]],["nvidia geforce gtx 560","560",0,[[1920,1080,60]]],["nvidia geforce gtx 560 se","560",0,[[1680,1050,52],[1920,1080,111]]],["nvidia geforce gtx 560 ti","560",0,[[1920,1080,60]]],["nvidia geforce gtx 560 ti 448 cores","560",0,[[1920,1080,60],[2560,1440,60]]],["nvidia geforce gtx 560 ti oem","560",0,[[1920,1080,176]]],["nvidia geforce gtx 560 ti opengl engine","560",0,[[1920,1080,48]]],["nvidia geforce gtx 560m","560",0,[[1920,1080,55]]],["nvidia geforce gtx 570","570",0,[[1920,1080,60]]],["nvidia geforce gtx 570 opengl engine","570",0,[[1920,1080,60]]],["nvidia geforce gtx 570 rev. 2","570",0,[[1920,1080,60],[1920,1200,60]]],["nvidia geforce gtx 570m","570",0,[[1920,1080,125],[2560,1440,8]]],["nvidia geforce gtx 580","580",0,[[1920,1080,60]]],["nvidia geforce gtx 580 opengl engine","580",0,[[1680,1050,59]]],["nvidia geforce gtx 580m","580",0,[[1920,1080,60]]],["nvidia geforce gtx 590","590",0,[[1920,1080,59]]],["nvidia geforce gtx 645","645",0,[[1920,1080,57],[1920,1200,58]]],["nvidia geforce gtx 645 opengl engine","645",0,[[1920,1200,58]]],["nvidia geforce gtx 650","650",0,[[1920,1080,72]]],["nvidia geforce gtx 650 oem","650",0,[[1366,768,59]]],["nvidia geforce gtx 650 opengl engine","650",0,[[1920,1080,59]]],["nvidia geforce gtx 650 ti","650",0,[[1920,1080,60]]],["nvidia geforce gtx 650 ti boost","650",0,[[1280,1024,60],[1600,1200,187],[1920,1080,60]]],["nvidia geforce gtx 650 ti opengl engine","650",0,[[1920,1080,60]]],["nvidia geforce gtx 660","660",0,[[1920,1080,111]]],["nvidia geforce gtx 660 oem","660",0,[[1920,1080,59]]],["nvidia geforce gtx 660 ti","660",0,[[1920,1080,60]]],["nvidia geforce gtx 660 ti opengl engine","660",0,[[1280,1024,60]]],["nvidia geforce gtx 660m","660",0,[[1680,1050,36],[1920,1080,59]]],["nvidia geforce gtx 660m mac","660",0,[[2560,1440,2]]],["nvidia geforce gtx 660m opengl engine","660",0,[[2560,1440,36]]],["nvidia geforce gtx 670","670",0,[[1920,1080,100]]],["nvidia geforce gtx 670 opengl engine","670",0,[[1920,1080,60]]],["nvidia geforce gtx 670m","670",0,[[1920,1080,66]]],["nvidia geforce gtx 670mx","670",0,[[1920,1080,60]]],["nvidia geforce gtx 675m","675",0,[[1920,1080,60]]],["nvidia geforce gtx 675mx","675",0,[[1680,1050,60],[1920,1080,60],[2560,1440,55]]],["nvidia geforce gtx 675mx mac","675",0,[[2560,1440,36]]],["nvidia geforce gtx 675mx opengl engine","675",0,[[2560,1440,60]]],["nvidia geforce gtx 680","680",0,[[1920,1080,60]]],["nvidia geforce gtx 680 opengl engine","680",0,[[1920,1080,60]]],["nvidia geforce gtx 680m","680",0,[[1920,1080,39],[1920,1200,60]]],["nvidia geforce gtx 680m opengl engine","680",0,[[1920,1080,36]]],["nvidia geforce gtx 680mx","680",0,[[2560,1440,59]]],["nvidia geforce gtx 680mx opengl engine","680",0,[[2560,1440,59]]],["nvidia geforce gtx 690","690",0,[[1920,1080,60],[3840,2160,30]]],["nvidia geforce gtx 745","745",0,[[1920,1080,60],[2560,1600,29]]],["nvidia geforce gtx 750","750",0,[[1920,1080,60]]],["nvidia geforce gtx 750 opengl engine","750",0,[[1920,1200,58]]],["nvidia geforce gtx 750 ti","750",0,[[1920,1080,97]]],["nvidia geforce gtx 760","760",0,[[1920,1080,60],[1920,1200,116]]],["nvidia geforce gtx 760 oem","760",0,[[1920,1080,60]]],["nvidia geforce gtx 760 opengl engine","760",0,[[1920,1080,52]]],["nvidia geforce gtx 760 ti","760",0,[[1920,1080,60],[1920,1200,60]]],["nvidia geforce gtx 760 ti oem","760",0,[[1920,1200,60]]],["nvidia geforce gtx 760 ti opengl engine","760",0,[[1920,1080,60]]],["nvidia geforce gtx 760a","760",0,[[2560,1080,15]]],["nvidia geforce gtx 760m","760",0,[[1920,1080,60]]],["nvidia geforce gtx 765m","765",0,[[1920,1080,53],[2560,1440,57]]],["nvidia geforce gtx 765m by nick[d]vb","765",0,[[2560,1440,58]]],["nvidia geforce gtx 765m opengl engine","765",0,[[2560,1440,57]]],["nvidia geforce gtx 770","770",0,[[1920,1080,143],[2560,1440,203]]],["nvidia geforce gtx 770 opengl engine","770",0,[[1920,1080,60]]],["nvidia geforce gtx 770m","770",0,[[1920,1080,60],[2560,1440,59]]],["nvidia geforce gtx 770m by nick[d]vb","770",0,[[2560,1440,34]]],["nvidia geforce gtx 770m opengl engine","770",0,[[2560,1440,59]]],["nvidia geforce gtx 775m by idopt mac","775",0,[[2560,1440,56]]],["nvidia geforce gtx 775m mac","775",0,[[2560,1440,59]]],["nvidia geforce gtx 775m opengl engine","775",0,[[2560,1440,60]]],["nvidia geforce gtx 780","780",0,[[1920,1080,159]]],["nvidia geforce gtx 780 by st3phl3","780",0,[[3840,2160,30]]],["nvidia geforce gtx 780 mac","780",0,[[1680,1050,60],[1920,1080,60]]],["nvidia geforce gtx 780 rev. 2","780",0,[[1920,1080,144],[2560,1440,119],[3840,2160,58],[5120,2880,58]]],["nvidia geforce gtx 780 ti","780",0,[[1280,1024,120],[1920,1080,119]]],["nvidia geforce gtx 780 ti opengl engine","780",0,[[2560,1440,60]]],["nvidia geforce gtx 780m","780",0,[[1920,1080,60],[2560,1440,59]]],["nvidia geforce gtx 780m by nick[d]vb","780",0,[[1920,1080,59],[2560,1440,60]]],["nvidia geforce gtx 780m mac","780",0,[[2560,1440,60]]],["nvidia geforce gtx 780m opengl engine","780",0,[[2560,1440,60]]],["nvidia geforce gtx 850a","850",0,[[2560,1440,48]]],["nvidia geforce gtx 850m","850",0,[[1920,1080,60]]],["nvidia geforce gtx 860m","860",0,[[1920,1080,59]]],["nvidia geforce gtx 860m opengl engine","860",0,[[2560,1440,58]]],["nvidia geforce gtx 870m","870",0,[[1920,1080,60],[2560,1440,102]]],["nvidia geforce gtx 880m","880",0,[[1920,1080,60],[2560,1440,74]]],["nvidia geforce gtx 880m opengl engine","880",0,[[2560,1440,60]]],["nvidia geforce gtx 950","950",0,[[1920,1080,98]]],["nvidia geforce gtx 950 o
106pengl engine","950",0,[[1920,1200,60]]],["nvidia geforce gtx 950a","950",0,[[1920,1080,60],[3840,2160,38]]],["nvidia geforce gtx 950m","950",0,[[1920,1080,114]]],["nvidia geforce gtx 960","960",0,[[1920,1080,60]]],["nvidia geforce gtx 960a","960",0,[[1920,1440,128]]],["nvidia geforce gtx 960m","960",0,[[1920,1080,119],[3840,2160,37]]],["nvidia geforce gtx 965m","965",0,[[1920,1080,195],[3000,2000,59],[3840,2160,41]]],["nvidia geforce gtx 965m opengl engine","965",0,[[2880,1620,55]]],["nvidia geforce gtx 970","970",0,[[1920,1080,143]]],["nvidia geforce gtx 970 opengl engine","970",0,[[2560,1600,60]]],["nvidia geforce gtx 970m","970",0,[[1920,1080,60]]],["nvidia geforce gtx 980","980",0,[[1920,1080,60],[3440,1440,294]]],["nvidia geforce gtx 980 ti","980",0,[[1920,1080,119],[2560,1440,456]]],["nvidia geforce gtx 980 ti opengl engine","980",0,[[1920,1080,60]]],["nvidia geforce gtx 980m","980",0,[[1920,1080,60],[3840,2160,104]]],["nvidia geforce gtx titan","gtx",0,[[1920,1080,119],[1920,1200,119],[2560,1440,60]]],["nvidia geforce gtx titan black","gtx",0,[[1680,1050,60],[1920,1080,60],[1920,1200,60],[2560,1440,60]]],["nvidia geforce gtx titan black opengl engine","gtx",0,[[3840,2160,60]]],["nvidia geforce gtx titan opengl engine","gtx",0,[[2560,1440,60]]],["nvidia geforce gtx titan x","gtxx",0,[[1920,1080,144],[2560,1440,120],[2560,1600,60]]],["nvidia geforce gtx titan xp","gtxxp",0,[[2560,1440,60],[3440,1440,60]]],["nvidia geforce gtx titan z","gtxz",0,[[1440,900,59],[1920,1080,39],[3840,2160,60]]],["nvidia geforce gtx780m by nikey22","780",0,[[2560,1440,60]]],["nvidia geforce gtx870m by nikey22","870",0,[[2560,1440,60]]],["nvidia geforce gtx880m","880",0,[[1920,1080,60]]],["nvidia geforce gtx880m by nikey22","880",0,[[2560,1440,59]]],["nvidia geforce gtx880m opengl engine","880",0,[[2560,1440,59]]],["nvidia geforce mx110","110",0,[[1366,768,61],[1920,1080,57]]],["nvidia geforce mx130","130",0,[[1920,1080,60]]],["nvidia geforce mx150","150",0,[[1920,1080,113]]],["nvidia geforce mx230","230",0,[[1920,1080,60]]],["nvidia geforce mx250","250",0,[[1920,1080,60]]],["nvidia geforce mx330","330",0,[[1920,1080,60],[3840,2160,51]]],["nvidia geforce mx350","350",0,[[1920,1080,60]]],["nvidia geforce mx450","450",0,[[1920,1080,60]]],["nvidia geforce pre-release graphics device","pre",0,[[2560,1440,60]]],["nvidia geforce pre-release tesla c2075 opengl engine","2075",0,[[1600,900,59]]],["nvidia geforce pre-release titan x opengl engine","prex",0,[[1920,1080,60]]],["nvidia geforce pre-release titan xp collectors edition opengl e","prexpe",0,[[1920,1080,59]]],["nvidia geforce pre-release titan xp opengl engine","prexp",0,[[2560,1440,60]]],["nvidia geforce rtx 2060","2060",0,[[1920,1080,512]]],["nvidia geforce rtx 2060 max-q","2060",0,[[2560,1440,301]]],["nvidia geforce rtx 2060 mobile","2060",0,[[1920,1080,518]]],["nvidia geforce rtx 2060 rev. a","2060",0,[[3840,2160,257]]],["nvidia geforce rtx 2060 super","2060",0,[[1920,1080,645],[2560,1440,143]]],["nvidia geforce rtx 2060 with max-q design","2060",0,[[1920,1080,292],[1920,1200,60]]],["nvidia geforce rtx 2070","2070",0,[[1920,1080,60],[3840,2160,60]]],["nvidia geforce rtx 2070 mobile","2070",0,[[1920,1080,477]]],["nvidia geforce rtx 2070 mobile / max-q","2070",0,[[1920,1080,526]]],["nvidia geforce rtx 2070 mobile / max-q refresh","2070",0,[[1920,1080,143]]],["nvidia geforce rtx 2070 rev. a","2070",0,[[2560,1440,144]]],["nvidia geforce rtx 2070 super","2070",0,[[1920,1080,510]]],["nvidia geforce rtx 2070 super with max-q design","2070",0,[[1920,1080,300]]],["nvidia geforce rtx 2070 with max-q design","2070",0,[[1920,1080,240]]],["nvidia geforce rtx 2080","2080",0,[[1920,1080,632],[2560,1440,165]]],["nvidia geforce rtx 2080 mobile","2080",0,[[1920,1080,144]]],["nvidia geforce rtx 2080 rev. a","2080",0,[[2560,1440,143]]],["nvidia geforce rtx 2080 super","2080",0,[[1920,1080,601]]],["nvidia geforce rtx 2080 super mobile / max-q","2080",0,[[3840,2160,59]]],["nvidia geforce rtx 2080 super with max-q design","2080",0,[[1920,1080,300]]],["nvidia geforce rtx 2080 ti","2080",0,[[1920,1080,83]]],["nvidia geforce rtx 2080 ti rev. a","2080",0,[[1920,1080,403]]],["nvidia geforce rtx 2080 with max-q design","2080",0,[[1920,1080,476]]],["nvidia geforce rtx 3050","3050",0,[[1920,1080,60]]],["nvidia geforce rtx 3050 laptop gpu","3050",0,[[1920,1080,144]]],["nvidia geforce rtx 3050 ti laptop gpu","3050",0,[[1920,1080,144]]],["nvidia geforce rtx 3060","3060",0,[[1920,1080,674]]],["nvidia geforce rtx 3060 laptop gpu","3060",0,[[1920,1080,300]]],["nvidia geforce rtx 3060 lite hash rate","3060",0,[[1920,1080,60]]],["nvidia geforce rtx 3060 mobile / max-q","3060",0,[[1920,1080,435]]],["nvidia geforce rtx 3060 ti","3060",0,[[1920,1080,779]]],["nvidia geforce rtx 3070","3070",0,[[1920,1080,723],[2560,1440,294]]],["nvidia geforce rtx 3070 laptop gpu","3070",0,[[1920,1080,357]]],["nvidia geforce rtx 3070 mobile / max-q","3070",0,[[2560,1440,386]]],["nvidia geforce rtx 3070 ti","3070",0,[[1920,1080,60]]],["nvidia geforce rtx 3080","3080",0,[[1920,1080,726],[2560,1440,60],[3840,2160,60]]],["nvidia geforce rtx 3080 laptop gpu","3080",0,[[1920,1080,294],[2560,1440,244]]],["nvidia geforce rtx 3080 mobile / max-q 8gb/16gb","3080",0,[[1920,1080,293]]],["nvidia geforce rtx 3080 ti","3080",0,[[1920,1080,239],[2560,1440,60]]],["nvidia geforce rtx 3090","3090",0,[[2560,1440,60],[3840,2160,474]]],["nvidia geforce rtx t10-16","10",0,[[2560,1600,3]]],["nvidia geforce rtx t10-8","10",0,[[2560,1600,3]]],["nvidia gigabyte geforce gt 440","440",0,[[1280,1024,34]]],["nvidia gigabyte geforce gt 610","610",0,[[1920,1080,17]]],["nvidia gigabyte geforce gt 630","630",0,[[1920,1080,34]]],["nvidia gigabyte geforce gt 730","730",0,[[1280,1024,38]]],["nvidia gigabyte geforce gts 450","450",0,[[1280,1024,37]]],["nvidia gigabyte geforce gtx 1050 ti","1050",0,[[1920,1080,30]]],["nvidia gigabyte geforce gtx 460","460",0,[[1680,1050,60]]],["nvidia gigabyte geforce gtx 550 ti","550",0,[[1920,1080,57]]],["nvidia gigabyte geforce gtx 560 ti","560",0,[[1920,1080,60]]],["nvidia gigabyte geforce gtx 570 hd","570",0,[[1920,1080,60]]],["nvidia gigabyte geforce gtx 580","580",0,[[1920,1200,60]]],["nvidia gigabyte geforce gtx 650","650",0,[[1680,1050,55]]],["nvidia gigabyte geforce gtx 650 ti","650",0,[[2560,1440,40]]],["nvidia gigabyte geforce gtx 660","660",0,[[1920,1080,31]]],["nvidia gigabyte geforce gtx 660 ti","660",0,[[5120,2880,29]]],["nvidia gigabyte geforce gtx 670","670",0,[[1920,1080,60]]],["nvidia gigabyte geforce gtx 750","750",0,[[1920,1080,59]]],["nvidia gigabyte geforce gtx 750 ti","750",0,[[1920,1080,60]]],["nvidia gigabyte geforce gtx 760","760",0,[[3440,1440,17]]],["nvidia gigabyte geforce gtx 770","770",0,[[2560,1440,59]]],["nvidia gigabyte geforce gtx 780 ti","780",0,[[1920,1080,240]]],["nvidia gigabyte geforce gtx 960","960",0,[[1920,1080,142],[1920,1200,120]]],["nvidia gigabyte geforce gtx 970","970",0,[[1920,1080,60]]],["nvidia gigabyte geforce gtx 980","980",0,[[2560,1440,60]]],["nvidia gigabyte geforce gtx 980 ti","980",0,[[1920,1080,60]]],["nvidia hp geforce gt 730","730",0,[[1920,1080,55]]],["nvidia inno3d geforce gtx660","3",0,[[2560,1440,107]]],["nvidia msi geforce gt 610","610",0,[[1920,1080,16]]],["nvidia msi geforce gt 630","630",0,[[1440,900,12]]],["nvidia msi geforce gt 635","635",0,[[1920,1080,30]]],["nvidia msi geforce gt 710","710",0,[[1920,1080,27]]],["nvidia msi geforce gt 730","730",0,[[1920,1080,53]]],["nvidia msi geforce gtx 1050 ti","1050",0,[[1920,1080,59]]],["nvidia msi geforce gtx 1060","1060",0,[[1920,1080,120]]],["nvidia msi geforce gtx 1070","1070",0,[[1920,1200,45]]],["nvidia msi geforce gtx 460","460",0,[[1920,1080,60]]],["nvidia msi geforce gtx 560 ti","560",0,[[1920,1080,60]]],["nvidia msi geforce gtx 570 hd","570",0,[[1920,1200,60]]],["nvidia msi geforce gtx 580","580",0,[[2560,1440,60]]],["nvidia msi geforce gtx 650","650",0,[[2560,1080,52]]],["nvidia msi geforce gtx 650 ti","650",0,[[1920,1080,60]]],["nvidia msi geforce gtx 660","660",0,[[1920,1080,60]]],["nvidia msi geforce gtx 660 ti","660",0,[[1680,1050,49]]],["nvidia msi geforce gtx 670","670",0,[[1920,1080,60]]],["nvidia msi geforce gtx 745","745",0,[[1920,1080,55]]],["nvidia msi geforce gtx 760","760",0,[[1280,1024,30],[1920,1080,58]]],["nvidia msi geforce gtx 780","780",0,[[1920,1080,60]]],["nvidia msi geforce gtx 950","950",0,[[1920,1080,59]]],["nvidia msi geforce gtx 960","960",0,[[1680,1050,120],[2560,1440,59]]],["nvidia msi geforce gtx 970","970",0,[[1680,1050,60]]],["nvidia msi geforce gtx 980","980",0,[[1920,1080,120],[3840,2160,60]]],["nvidia msi geforce gtx 980 ti","980",0,[[5120,2880,56]]],["nvidia null geforce 920a","920",0,[[1920,1080,25]]],["nvidia palit geforce gtx 650","650",0,[[1920,1080,49]]],["nvidia palit geforce gtx 650 ti","650",0,[[1920,1080,59]]],["nvidia palit geforce gtx 660","660",0,[[1920,1080,26]]],["nvidia pegatron geforce gt 420","420",0,[[1400,1050,25]]],["nvidia pny geforce gt 610","610",0,[[1280,1024,19]]],["nvidia pny geforce gtx 1060","1060",0,[[1920,1080,60]]],["nvidia pny geforce gtx 460","460",0,[[1360,768,59]]],["nvidia pny geforce gtx 550 ti","550",0,[[1920,1080,55]]],["nvidia pny geforce gtx 570 hd","570",0,[[1280,1024,72]]],["nvidia pny geforce gtx 580","580",0,[[1920,1200,59]]],["nvidia pny geforce gtx 680","680",0,[[2560,1080,120]]],["nvidia pny geforce gtx 750","750",0,[[1280,1024,60]]],["nvidia pny geforce gtx 970","970",0,[[2560,1440,60]]],["nvidia pny geforce gtx 980","980",0,[[1920,1080,120]]],["nvidia point of view geforce gtx 470","470",0,[[1920,1080,59]]],["nvidia point of view geforce gtx 660 ti","660",0,[[1680,1050,59]]],["nvidia sony geforce 410m","410",0,[[1366,768,24]]],["nvidia toshiba geforce gt 525m","525",0,[[1366,768,33]]],["nvidia zotac geforce gt 430","430",0,[[1600,900,32]]],["nvidia zotac geforce gt 610","610",0,[[1920,1080,15]]],["nvidia zotac geforce gt 630","630",0,[[1360,768,46]]],["nvidia zotac geforce gt 740","740",0,[[1280,1024,118]]],["nvidia zotac geforce gtx 460","460",0,[[1920,1080,59]]],["nvidia zotac geforce gtx 550 ti","550",0,[[1920,1080,42]]],["nvidia zotac geforce gtx 560","560",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 560 ti","560",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 580","580",0,[[1920,1080,48]]],["nvidia zotac geforce gtx 650","650",0,[[1920,1080,44]]],["nvidia zotac geforce gtx 650 ti","650",0,[[1920,1080,58]]],["nvidia zotac geforce gtx 660","660",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 680","680",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 750","750",0,[[1680,1050,114],[1920,1080,60]]],["nvidia zotac geforce gtx 760","760",0,[[1920,1080,101]]],["nvidia zotac geforce gtx 770","770",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 780","780",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 960","960",0,[[2048,1152,60]]]]')},178:t=>{"use strict";
106t.exports=JSON.parse('["4.0.8",["intel","",0,[[4096,2304,12]]],["intel 0x496e74656c2048442047726170686963000732034343","0",0,[[1920,1080,22]]],["intel broxton-p hd","p",0,[[1920,1080,73]]],["intel cherryview hd","hd",0,[[1920,1080,16]]],["intel coffee lake uhd","uhd",0,[[1920,1080,49]]],["intel cometlake uhd graphics 630","630",0,[[2560,1440,40]]],["intel corporation 2nd gen core processor family integrated graphics controller","2",0,[[1366,768,25]]],["intel corporation 2nd generation core processor family integrated graphics controller","2",0,[[1600,900,28]]],["intel corporation 3rd gen core processor graphics controller","3",0,[[1366,768,20]]],["intel corporation 8th gen core processor gaussian mixture model","8",0,[[1366,768,17]]],["intel corporation atom processor z36xxx/z37xxx series graphics & display","36",0,[[1280,799,18],[1366,768,18]]],["intel corporation atom/celeron/pentium processor n4200 series integrated graphics controller","4200",0,[[1280,1024,28]]],["intel corporation atom/celeron/pentium processor x5-e8000 integrated graphics controller","5",0,[[1366,768,34]]],["intel corporation atom/celeron/pentium processor x5-e8000 series pci configuration registers","5",0,[[1920,1080,14]]],["intel corporation broadwell-u integrated","u",0,[[1920,1080,38]]],["intel corporation celeron n3350 n4200/atom e3900 series integrated graphics controller","3350",0,[[1680,1050,33]]],["intel corporation coffeelake-h gt2 [uhd graphics 630]","2",0,[[1920,1080,76]]],["intel corporation cometlake-h gt2 [uhd graphics]","2",0,[[3072,1728,29]]],["intel corporation cometlake-s gt2 [uhd graphics 630]","2",0,[[1920,1080,52]]],["intel corporation cometlake-u gt2 [uhd graphics]","2",0,[[1920,1080,39]]],["intel corporation device","",0,[[1920,1080,31]]],["intel corporation geminilake [uhd graphics 600]","600",0,[[1920,1080,15]]],["intel corporation haswell-ult integrated graphics controller","ult",0,[[1366,768,35]]],["intel corporation hd","hd",0,[[1920,1080,24]]],["intel corporation hd graphics 500","500",0,[[1366,768,19]]],["intel corporation hd graphics 510","510",0,[[1368,768,48]]],["intel corporation hd graphics 515","515",0,[[1920,1080,29]]],["intel corporation hd graphics 520","520",0,[[1366,768,59]]],["intel corporation hd graphics 530","530",0,[[1920,1080,58]]],["intel corporation hd graphics 5300","5300",0,[[1920,1080,35]]],["intel corporation hd graphics 5500","5500",0,[[1920,1080,36]]],["intel corporation hd graphics 610","610",0,[[1920,1080,28]]],["intel corporation hd graphics 620","620",0,[[1920,1080,56],[3200,1800,17]]],["intel corporation hd graphics 630","630",0,[[1920,1080,58]]],["intel corporation iris graphics 540","540",0,[[1920,1080,54]]],["intel corporation iris graphics 6100","6100",0,[[2560,1600,20]]],["intel corporation iris plus graphics 650","650",0,[[1440,900,60]]],["intel corporation iris plus graphics 655","655",0,[[1920,1080,119]]],["intel corporation iris plus graphics g1","1",0,[[1920,1080,57]]],["intel corporation iris plus graphics g7","7",0,[[1920,1080,112]]],["intel corporation iris pro graphics 580","580",0,[[1920,1080,60]]],["intel corporation iris pro graphics 6200","6200",0,[[2560,1080,41]]],["intel corporation iris xe","xe",0,[[1920,1200,60]]],["intel corporation sky lake integrated","sky",0,[[2560,1440,52]]],["intel corporation skylake gt2 [hd graphics 520]","2",0,[[1920,1080,52],[2560,1440,31]]],["intel corporation skylake integrated","",0,[[1920,1080,51]]],["intel corporation tigerlake gt2 [iris xe graphics]","2",0,[[1920,1080,60]]],["intel corporation tigerlake-lp gt2 [iris xe graphics]","2",0,[[1920,1080,60]]],["intel corporation uhd","uhd",0,[[1920,1080,65]]],["intel corporation uhd graphics 605","605",0,[[1920,1080,21]]],["intel corporation uhd graphics 615","615",0,[[1920,1080,30]]],["intel corporation uhd graphics 620","620",0,[[1920,1080,55]]],["intel corporation uhd graphics 630","630",0,[[1920,1080,57]]],["intel corporation whiskeylake-u gt2 [uhd graphics 620]","2",0,[[1920,1080,57]]],["intel corporation xeon e3-1200 v2 gen core processor graphics controller","3",0,[[1920,1080,15]]],["intel corporation xeon e3-1200 v3 gen core processor integrated graphics controller","3",0,[[1360,768,42],[1440,900,34],[1280,1024,23],[1920,1080,22]]],["intel corporation, series chipset iris plus graphics 655","655",0,[[1920,1080,42]]],["intel geforce gtx 960","960",0,[[1920,1080,26]]],["intel gen12 desktop graphics controller","12",0,[[3840,2160,20]]],["intel graphics gfx-driver-user-feature_dg1_poweron-27723 dch releaseinternal","1",0,[[3840,2160,11]]],["intel hd","hd",0,[[1280,800,18],[1366,768,26],[1600,900,12],[1920,1080,13],[1920,1200,16],[1920,1280,18],[3000,2002,6],[4096,2160,4]]],["intel hd 4000","4000",0,[[1366,768,37]]],["intel hd 530","530",0,[[1920,1200,54]]],["intel hd graphics 3000","3000",0,[[1920,1080,21]]],["intel hd graphics 4000","4000",0,[[1280,800,41],[1366,768,33],[1440,900,31],[1680,1050,50],[1920,1080,27],[2560,1600,13],[2880,1800,12]]],["intel hd graphics 4000,,,,,,,","4000",0,[[1920,1080,19]]],["intel hd graphics 4400","4400",0,[[1366,768,28],[1280,1024,48],[1920,1080,18],[2160,1440,20]]],["intel hd graphics 4600","4600",0,[[1366,768,14],[1280,960,65],[1280,1024,60],[1600,900,33],[1680,1050,31],[1600,1200,47],[1920,1080,19],[1920,1200,22],[2880,1620,14]]],["intel hd graphics 500","500",0,[[1920,1080,15]]],["intel hd graphics 5000","5000",0,[[1366,768,45],[1440,900,42],[1920,1032,25],[1920,1080,27],[2160,1439,19],[2160,1440,23],[2560,1440,15]]],["intel hd graphics 505","505",0,[[1366,768,28],[1920,1080,16]]],["intel hd graphics 510","510",0,[[1366,768,29],[1440,900,46],[1680,1050,12],[1920,1080,27]]],["intel hd graphics 515","515",0,[[1920,1080,45],[2720,768,22],[1920,1280,41],[2160,1440,28],[2560,1600,16],[2736,1824,19],[3200,1800,12],[3840,2160,10]]],["intel hd graphics 520","520",0,[[1366,768,90],[1920,1080,30],[2736,1824,26],[3000,2000,21]]],["intel hd graphics 530","530",0,[[1366,768,21],[1280,1024,65],[1920,1080,47],[1920,1200,39],[3840,2160,6]]],["intel hd graphics 5300","5300",0,[[1920,1080,21],[2304,1440,19],[2560,1600,13]]],["intel hd graphics 5500","5500",0,[[1366,768,37],[1920,1080,21]]],["intel hd graphics 5600","5600",0,[[1920,1080,26],[1920,1200,40],[2880,1620,21]]],["intel hd graphics 6000","6000",0,[[1366,768,43],[1440,900,40],[1920,1080,21]]],["intel hd graphics 610","610",0,[[1366,768,33],[1600,900,42],[1920,1080,27],[3840,2160,8]]],["intel hd graphics 615","615",0,[[1600,900,13],[1920,1080,18],[1800,1200,29],[1920,1200,34],[2560,1440,25],[2560,1600,21],[2736,1824,21]]],["intel hd graphics 620","620",0,[[1920,1080,37],[2736,1824,27],[3200,1800,25],[3840,2160,13]]],["intel hd graphics 630","630",0,[[1366,768,69],[1920,1080,40],[2560,1440,27],[2560,1600,23],[3360,2100,56],[3840,2160,12]]],["intel hd graphics 630 gt2","630",0,[[1920,1080,39],[1720,1440,120]]],["intel hd graphics cfl crb","hdcfl",0,[[2560,1440,38]]],["intel hd graphics family","hd",0,[[1366,768,44]]],["intel hd graphics icl rvp","hdicl",0,[[1920,1080,58]]],["intel hd graphics icl rvp bigsur","hdicl",0,[[1920,1080,57]]],["intel hd graphics kbl crb","hdkbl",0,[[1920,1080,57],[3840,2160,13]]],["intel hd graphics p4600","4600",0,[[1280,1024,57],[1920,1080,18],[2560,1600,60]]],["intel hd graphics p530","530",0,[[2560,1440,36],[3840,2160,12]]],["intel hd graphics p630","630",0,[[1440,900,35],[1920,1200,50]]],["intel hd graphics, gen10","10",0,[[3840,2160,4]]],["intel hd5500 broadwell pg7","5500",0,[[1366,768,31]]],["intel hd5500 graphics pg7","5500",0,[[1366,768,56]]],["intel iris","",0,[[1366,768,57],[1600,900,34],[1920,1080,34],[2560,1600,17],[2880,1800,14]]],["intel iris graphics 5100","5100",0,[[1920,1080,35],[2560,1600,18]]],["intel iris graphics 540","540",0,[[1920,1080,20],[2736,1824,28],[2880,1800,23],[3200,1800,17],[3840,2160,17]]],["intel iris graphics 550","550",0,[[1920,1080,81],[2160,1440,45],[2560,1600,28],[2880,1800,26],[3840,2160,24]]],["intel iris graphics 6100","6100",0,[[1920,1080,26],[2560,1600,19],[3840,2160,10]]],["intel iris graphics 6200","6200",0,[[4096,2304,13]]],["intel iris graphics 640","640",0,[[2256,1504,24],[3840,2160,9]]],["intel iris graphics 650","650",0,[[2560,1440,24]]],["intel iris graphics p580","580",0,[[3840,2160,12]]],["intel iris plus","",0,[[1920,1080,60],[2256,1504,95],[2496,1664,93],[2736,1824,60],[2880,1800,60],[3000,2000,56]]],["intel iris plus graphics 640","640",0,[[1920,1080,87],[2256,1504,46],[2560,1600,44],[2735,1823,28],[2736,1824,28],[2880,1800,26],[3072,1728,25],[3200,1800,37],[3840,2160,16]]],["intel iris plus graphics 645","645",0,[[2560,1599,32],[2560,1600,56],[2880,1800,47]]],["intel iris plus graphics 650","650",0,[[1920,1080,60],[2560,1600,49],[2880,1800,27],[3840,2160,16]]],["intel iris plus graphics 655","655",0,[[1920,1080,58],[2560,1440,85],[2880,1800,32],[3840,2160,24]]],["intel iris pro","pro",0,[[1920,1080,56]]],["intel iris pro graphics 5200","5200",0,[[1920,1080,53],[2879,1800,24],[2880,1800,21]]],["intel iris pro graphics 580","580",0,[[1920,1080,58],[2560,1080,91],[2560,1440,58],[3840,1600,27]]],["intel iris pro graphics 6200","6200",0,[[1366,696,38],[1920,1080,58],[1920,1200,60],[3840,2160,19],[4096,2304,14]]],["intel iris pro graphics p580","580",0,[[1024,768,42],[1920,1080,103],[3840,2160,27]]],["intel iris pro graphics p6300","6300",0,[[1366,768,102],[1440,900,128],[1920,1080,30]]],["intel iris xe","xe",0,[[1920,1080,88]]],["intel iris xe graphics releaseinternal","xe",0,[[3840,2160,38]]],["intel iris xe max","xe",0,[[1920,1080,60],[3840,2160,56]]],["intel kabylake hd graphics ult gt2","2",0,[[3840,2160,11]]],["intel kabylake hd graphics ulx gt2","2",0,[[1920,1080,28],[3840,2160,6]]],["intel kbl unknown","kbl",0,[[1920,1080,54]]],["intel mesa dri intel bay trail","dribay",0,[[1366,768,14]]],["intel mesa dri intel haswell mobile","dri",0,[[1920,1080,27]]],["intel mesa dri intel hd","drihd",0,[[1920,1080,10]]],["intel mesa dri intel hd graphics 400","400",0,[[1366,768,30]]],["intel mesa dri intel hd graphics 505","505",0,[[1920,1080,27]]],["intel mesa dri intel hd graphics 520","520",0,[[1920,1080,45],[2560,1440,24]]],["intel mesa dri intel hd graphics 530","530",0,[[3840,2160,12]]],["intel mesa dri intel hd graphics 5500","5500",0,[[1366,768,40]]],["intel mesa dri intel hd graphics 620","620",0,[[1920,1080,53]]],["intel mesa dri intel hd graphics 630","630",0,[[1477,831,58]]],["intel mesa dri intel hd graphics p4000","4000",0,[[1920,1080,36]]],["intel mesa dri intel iris graphics 540","540",0,[[1280,720,40]]],["intel mesa dri intel iv
106ybridge desktop","dri",0,[[2560,1080,16]]],["intel mesa dri intel ivybridge mobile","dri",0,[[1920,1080,25]]],["intel mesa dri intel kabylake gt2","2",0,[[1920,1080,36]]],["intel mesa dri intel sandybridge desktop","dri",0,[[1280,1024,12]]],["intel mesa dri intel sandybridge mobile","dri",0,[[1366,768,33]]],["intel mesa dri intel uhd graphics 620","620",0,[[2736,1824,22]]],["intel mesa dri intel uhd graphics 630","630",0,[[1920,1080,42]]],["intel mesa intel hd graphics 520","520",0,[[1920,1080,47]]],["intel mesa intel hd graphics 530","530",0,[[1920,1080,55]]],["intel phdgd ivy 4","4",0,[[1366,768,45]]],["intel radeon pro vega 16","16",0,[[3360,1890,20]]],["intel radeong 0.4 on amd bonaire","0",0,[[1920,1200,92]]],["intel radeong 0.4 on amd cape verde","0",0,[[1920,1200,73]]],["intel radeong 0.4 on amd polaris10","0",0,[[3840,2160,108]]],["intel radeong 0.4 on amd tonga","0",0,[[1920,1080,124]]],["intel skl unknown","skl",0,[[1920,1080,43]]],["intel skylake gt2 [hd graphics 520]","2",0,[[1920,1080,39]]],["intel uhd","uhd",0,[[1920,1080,58],[2560,1600,22],[3440,1440,14],[2736,1824,32],[3840,2160,31]]],["intel uhd 630","630",0,[[2560,1440,38]]],["intel uhd graphics 600","600",0,[[1366,768,27],[1920,1080,13],[1920,1200,13],[2560,1440,11],[3840,2160,5]]],["intel uhd graphics 600 universal","600",0,[[1919,1031,15]]],["intel uhd graphics 605","605",0,[[1366,768,29],[1920,1080,37]]],["intel uhd graphics 610","610",0,[[1366,768,58],[1920,1080,32],[1920,1200,37],[2560,1440,17],[3840,2160,11]]],["intel uhd graphics 615","615",0,[[1920,1080,34],[1920,1280,29],[3840,2160,9]]],["intel uhd graphics 617","617",0,[[1920,1080,43],[2560,1599,24],[2560,1600,26],[2880,1800,24]]],["intel uhd graphics 620","620",0,[[1920,1080,50],[2736,1824,33],[3200,1800,16]]],["intel uhd graphics 630","630",0,[[1440,900,112],[1920,1080,44],[1920,1200,65],[2560,1080,68],[2560,1440,26],[3440,1440,25],[3584,2240,137],[3840,2160,12],[6016,3384,8]]],["intel uhd graphics 730","730",0,[[1920,1080,53]]],["intel uhd graphics 750","750",0,[[1920,1080,56],[3840,2160,36]]],["intel uhd graphics 770","770",0,[[3440,1440,78],[5120,1440,31]]],["intel uhd graphics gfx-driver-user-comp_core-23599","23599",0,[[3840,2160,18]]],["intel uhd graphics p630","630",0,[[1920,1080,54],[3840,2160,21]]],["intel uhd graphics releaseinternal","uhd",0,[[3199,1800,22],[3000,2000,47]]],["intel uhd graphics, gen11 lp","11",0,[[3840,2160,10]]],["intel uhd graphics, gen12 lp releaseinternal","12",0,[[3839,2159,4]]],["intel uhd graphics, lkf","uhdlkf",0,[[1927,1439,14]]],["intel unknown","",0,[[1920,1080,37]]],["intel xe","xe",0,[[1920,1080,268],[2560,1440,137]]],["intel xeon e3-1200 v3 gen core processor integrated graphics controller","3",0,[[1600,900,49]]]]')},217:t=>{"use strict";t.exports=JSON.parse('["4.0.8",["nvidia %nvidia_dev.13d7.0580.1028%","13",0,[[1920,1018,60]]],["nvidia a100-pcie-40gb","100",0,[[1920,1080,449]]],["nvidia a40","40",0,[[1920,1080,504]]],["nvidia a40-8q","40",0,[[2560,1440,58]]],["nvidia ashley","",0,[[1920,1080,60]]],["nvidia asus geforce gt 430","430",0,[[1366,768,35]]],["nvidia asus geforce gt 440","440",0,[[1920,1080,28]]],["nvidia asus geforce gt 520","520",0,[[1680,1050,12]]],["nvidia asus geforce gt 610","610",0,[[1920,1200,15]]],["nvidia asus geforce gt 630","630",0,[[1680,1050,41]]],["nvidia asus geforce gt 640","640",0,[[2560,1440,34]]],["nvidia asus geforce gt 710","710",0,[[1920,1080,31]]],["nvidia asus geforce gt 730","730",0,[[2560,1080,28],[3840,2160,12]]],["nvidia asus geforce gts 450","450",0,[[1920,1080,54]]],["nvidia asus geforce gtx 1060","1060",0,[[3840,2160,38]]],["nvidia asus geforce gtx 1080","1080",0,[[2560,1440,120]]],["nvidia asus geforce gtx 460","460",0,[[1920,1080,60]]],["nvidia asus geforce gtx 480","480",0,[[1920,1080,59]]],["nvidia asus geforce gtx 550 ti","550",0,[[1920,1080,57]]],["nvidia asus geforce gtx 560","560",0,[[1920,1080,60]]],["nvidia asus geforce gtx 560 se","560",0,[[1920,1080,59]]],["nvidia asus geforce gtx 560 ti","560",0,[[1680,1050,58]]],["nvidia asus geforce gtx 570","570",0,[[1280,1024,74]]],["nvidia asus geforce gtx 570 hd","570",0,[[1920,1080,60]]],["nvidia asus geforce gtx 580","580",0,[[1920,1200,59]]],["nvidia asus geforce gtx 660","660",0,[[1920,1080,60]]],["nvidia asus geforce gtx 670","670",0,[[1920,1080,60]]],["nvidia asus geforce gtx 750 ti","750",0,[[1360,768,59],[1920,1080,118]]],["nvidia asus geforce gtx 760","760",0,[[1920,1080,60],[1920,1200,60]]],["nvidia asus geforce gtx 770","770",0,[[1920,1080,60]]],["nvidia asus geforce gtx 780","780",0,[[1920,1080,60]]],["nvidia asus geforce gtx 950","950",0,[[1920,1080,60]]],["nvidia asus geforce gtx 960","960",0,[[1920,1080,60],[2560,1600,117]]],["nvidia asus geforce gtx 970","970",0,[[2560,1600,60]]],["nvidia asus geforce gtx 980 ti","980",0,[[2560,1440,131]]],["nvidia chip model","",0,[[1920,1080,60]]],["nvidia colorful geforce gtx 960","960",0,[[2560,1440,60]]],["nvidia dell nvs 5200m","5200",0,[[1920,1080,27]]],["nvidia dell quadro 2000m","2000",0,[[1920,1080,29]]],["nvidia device","",0,[[1920,1080,746]]],["nvidia elitegroup geforce gtx 460","460",0,[[1920,1080,60]]],["nvidia evga geforce gt 545","545",0,[[1920,1080,37]]],["nvidia evga geforce gt 640","640",0,[[1366,768,60]]],["nvidia evga geforce gt 710","710",0,[[1680,1050,36],[1920,1080,29]]],["nvidia evga geforce gt 730","730",0,[[1600,900,59]]],["nvidia evga geforce gt 740","740",0,[[1280,1024,45]]],["nvidia evga geforce gtx 1050 ti","1050",0,[[2560,1440,60],[4096,2304,58]]],["nvidia evga geforce gtx 1070","1070",0,[[5120,2880,60]]],["nvidia evga geforce gtx 1080 ti","1080",0,[[1920,1200,60]]],["nvidia evga geforce gtx 560 ti","560",0,[[1680,1050,59]]],["nvidia evga geforce gtx 570","570",0,[[1920,1080,60]]],["nvidia evga geforce gtx 580","580",0,[[2560,1440,60]]],["nvidia evga geforce gtx 650","650",0,[[1920,1200,87],[2560,1600,43]]],["nvidia evga geforce gtx 650 ti","650",0,[[1680,1050,116],[2560,1440,55]]],["nvidia evga geforce gtx 650 ti boost","650",0,[[1920,1080,56]]],["nvidia evga geforce gtx 660 ti","660",0,[[1920,1200,60]]],["nvidia evga geforce gtx 680","680",0,[[1600,1200,60]]],["nvidia evga geforce gtx 750 ti","750",0,[[1920,1080,60]]],["nvidia evga geforce gtx 760","760",0,[[1920,1080,119],[1920,1200,60]]],["nvidia evga geforce gtx 780","780",0,[[1920,1080,60]]],["nvidia evga geforce gtx 960","960",0,[[1920,1080,60],[2560,1440,115]]],["nvidia evga geforce gtx 970","970",0,[[1920,1080,120]]],["nvidia evga geforce gtx 980","980",0,[[3440,1440,60]]],["nvidia evga geforce gtx 980 ti","980",0,[[1920,1080,60]]],["nvidia ga104gl [rtx a4000]","104",0,[[3840,2160,60]]],["nvidia gainward geforce gt 630","630",0,[[1920,1080,28]]],["nvidia gainward geforce gts 450","450",0,[[1920,1080,55]]],["nvidia gainward geforce gtx 460","460",0,[[1920,1080,58]]],["nvidia gainward geforce gtx 550 ti","550",0,[[1280,1024,67]]],["nvidia gainward geforce gtx 560 ti","560",0,[[1920,1080,60]]],["nvidia gainward geforce gtx 570","570",0,[[1920,1080,60]]],["nvidia gainward geforce gtx 750 ti","750",0,[[1920,1080,60]]],["nvidia geforce 210","210",0,[[1920,1080,8]]],["nvidia geforce 410m","410",0,[[1366,768,25],[1600,900,19]]],["nvidia geforce 510","510",0,[[1280,960,20]]],["nvidia geforce 605","605",0,[[1768,992,17],[1920,1080,15]]],["nvidia geforce 610m","610",0,[[1366,768,26]]],["nvidia geforce 610m/710m/810m/820m / gt 620m/625m/630m/720m","610",0,[[1366,768,51]]],["nvidia geforce 615","615",0,[[1920,1080,21]]],["nvidia geforce 705m","705",0,[[1920,1080,18]]],["nvidia geforce 710a","710",0,[[1920,1080,32]]],["nvidia geforce 710m","710",0,[[1366,768,55]]],["nvidia geforce 730a","730",0,[[1920,1080,37]]],["nvidia geforce 800m","800",0,[[1920,1080,18]]],["nvidia geforce 810m","810",0,[[1366,768,44],[1920,1080,31]]],["nvidia geforce 820a","820",0,[[1920,1080,28]]],["nvidia geforce 820m","820",0,[[1366,768,57],[1920,1080,23]]],["nvidia geforce 830a","830",0,[[1920,1080,53]]],["nvidia geforce 830m","830",0,[[1366,768,60]]],["nvidia geforce 8400 gs","8400",0,[[1680,1050,4]]],["nvidia geforce 8400 gs rev. 3","8400",0,[[1920,1080,4]]],["nvidia geforce 840a","840",0,[[1920,1080,56]]],["nvidia geforce 840m","840",0,[[1920,1080,56]]],["nvidia geforce 845m","845",0,[[1920,1080,59]]],["nvidia geforce 8600 gt","8600",1,[[1920,1200,-1]]],["nvidia geforce 8600 gts","8600",1,[[1920,1080,-1]]],["nvidia geforce 910m","910",0,[[1366,768,58],[1600,900,45]]],["nvidia geforce 920m","920",0,[[1366,768,60]]],["nvidia geforce 920mx","920",0,[[1366,768,60],[1920,1080,60]]],["nvidia geforce 9300 / nforce 730i","9300",0,[[1920,1080,6]]],["nvidia geforce 930a","930",0,[[1920,1080,55]]],["nvidia geforce 930m","930",0,[[1366,768,60]]],["nvidia geforce 930mx","930",0,[[1366,768,89],[1920,1080,59]]],["nvidia geforce 9400 gt","9400",1,[[1366,768,-1]]],["nvidia geforce 940a","940",0,[[1920,1080,58]]],["nvidia geforce 940m","940",0,[[1920,1080,54]]],["nvidia geforce 940mx","940",0,[[1920,1080,60]]],["nvidia geforce 945m","945",0,[[1920,1080,59]]],["nvidia geforce 9600 gt","9600",0,[[1920,1200,2]]],["nvidia geforce 9600m gt","9600",1,[[1440,900,-1]]],["nvidia geforce 9800 gt","9800",0,[[1920,1200,52]]],["nvidia geforce 9800 gtx / 9800 gtx+","9800",0,[[1280,1024,59]]],["nvidia geforce gpu","gpu",0,[[3000,2000,36]]],["nvidia geforce gt 1010","1010",0,[[1920,1080,135]]],["nvidia geforce gt 1030","1030",0,[[1920,1080,60]]],["nvidia geforce gt 1030 opengl engine","1030",0,[[6720,3780,15]]],["nvidia geforce gt 120","120",1,[[1920,1080,-1]]],["nvidia geforce gt 240","240",0,[[1366,768,32]]],["nvidia geforce gt 320m","320",0,[[1366,768,26]]],["nvidia geforce gt 415m","415",0,[[1366,768,19]]],["nvidia geforce gt 420","420",0,[[1024,768,33],[1920,1080,20]]],["nvidia geforce gt 420m","420",0,[[1366,768,28]]],["nvidia geforce gt 425m","425",0,[[1366,768,55],[1600,900,28]]],["nvidia geforce gt 430","430",0,[[1600,1200,16],[1920,1080,28]]],["nvidia geforce gt 435m","435",0,[[1366,768,53],[1920,1080,22]]],["nvidia geforce gt 440","440",0,[[1280,1024,51],[1680,1050,38],[1920,1080,45]]],["nvidia geforce gt 445m","445",0,[[1600,900,53]]],["nvidia geforce gt 520","520",0,[[1440,900,19],[1920,1080,17]]],["nvidia geforce gt 520m","520",0,[[1366,768,29]]],["nvidia geforce gt 520mx","520",0,[[1366,768,35]]],["nvidia geforce gt 525m","525",0,[[1366,768,28],[1600,900,22]]],["nvidia geforce gt 530","530",0,[[1920,1080,26]]],["nvidia geforce gt 540m","540",0,[[1366,768,38]]],["nvidia geforce gt 545","545",0,[[1920,1080,54]]],["nvidia geforce gt 550m","550",0,[[1600,900,44],[1920,1080,29]]],["nvidia geforce gt 555m","555",0,[[1920,1080,42]]],["nvidia geforce gt 555m/635m","555",0,[[1920,1080,36]]],["nvidia geforce gt 610","610",0,[[1280,1024,22],[1920,1080,15]]],["nvidia geforce gt 620","620",0,[[1920,1080,19]]],["nvidia geforce gt 620 oem","620",0,[[1920,1080,20],[1920,1200,20]]],["nvidia geforce gt 620m","620",0,[[1366,768,55],[1920,1080,30]]],["nvidia geforce gt 620m/630m/635m/640m le","620",0,[[1368,768,38]]],["nvidia geforce gt 625","625",0,[[1920,1080,18]]],["nvidia geforce gt 625m","625",0,[[1366,768,38]]],["nvidia geforce gt 630","630",0,[[1680,1050,36],[1920,1080,36],[1920,1200,30]]],["nvidia geforce gt 630 oem","630",0,[[1600,900,33]]],["nvidia geforce gt 630 opengl engine","630",0,[[1920,1080,33]]],["nvidia geforce gt 630 rev. 2","630",0,[[1920,1080,26]]],["nvidia geforce gt 630m","630",0,[[1366,768,57]]],["nvidia geforce gt 635","635",0,[[1920,1080,27]]],["nvidia geforce gt 635m","635",0,[[1366,768,47]]],["nvidia geforce gt 640","640",0,[[1920,1080,47]]],["nvidia geforce gt 640 oem","640",0,[[1920,1080,46],[2560,1440,35]]],["nvidia geforce gt 640 opengl engine","640",0,[[1280,1024,43]]],["nvidia geforce gt 640 rev. 2","640",0,[[1280,1024,60],[1920,1080,55]]],["nvidia geforce gt 640m","640",0,[[1366,768,82],[1600,900,59],[1920,1080,34]]],["nvidia geforce gt 640m le","640",0,[[1920,1080,49]]],["nvidia geforce gt 640m mac","640",0,[[1366,768,56],[1920,1080,20]]],["nvidia geforce gt 640m opengl engine","640",0,[[1920,1080,45]]],["nvidia geforce gt 645m","645",0,[[1366,768,60]]],["nvidia geforce gt 650m","650",0,[[1360,768,59],[1920,1080,58],[2560,1440,59]]],["nvidia geforce gt 650m mac","650",0,[[1440,900,56],[1920,1080,15],[2560,1440,19],[2880,1800,31]]],["nvidia geforce gt 650m opengl engine","650",0,[[1920,1080,56],[3840,2160,27]]],["nvidia geforce gt 705","705",0,[[1920,1080,11]]],["nvidia geforce gt 710","710",0,[[1920,1080,28]]],["nvidia geforce gt 710b","710",0,[[1920,1080,26]]],["nvidia geforce gt 710m","710",0,[[1366,768,46]]],["nvidia geforce gt 720","720",0,[[1920,1080,19],[2560,1440,16],[5120,2880,5]]],["nvidia geforce gt 720 opengl engine","720",0,[[2560,1600,20]]],["nvidia geforce gt 720m","720",0,[[1366,768,42]]],["nvidia geforce gt 730","730",0,[[1920,1080,54]]],["nvidia geforce gt 730a","730",0,[[1920,1080,23]]],["nvidia geforce gt 730m","730",0,[[1920,1080,43]
106]],["nvidia geforce gt 735m","735",0,[[1920,1080,39]]],["nvidia geforce gt 740","740",0,[[1920,1080,55],[3440,1440,23]]],["nvidia geforce gt 740 opengl engine","740",0,[[1920,1200,51]]],["nvidia geforce gt 740m","740",0,[[1366,768,60]]],["nvidia geforce gt 745m","745",0,[[1920,1080,55]]],["nvidia geforce gt 750m","750",0,[[1920,1080,57]]],["nvidia geforce gt 750m mac","750",0,[[1920,1080,58],[2880,1800,28]]],["nvidia geforce gt 755m","755",0,[[1920,1080,57]]],["nvidia geforce gt 755m mac","755",0,[[2560,1440,41]]],["nvidia geforce gt 755m opengl engine","755",0,[[2560,1440,51]]],["nvidia geforce gt 820m","820",0,[[1600,900,47]]],["nvidia geforce gts 250","250",0,[[1680,1050,53]]],["nvidia geforce gts 450","450",0,[[1360,768,60],[1680,1050,57],[1920,1080,55]]],["nvidia geforce gts 450 rev. 2","450",0,[[1920,1080,56]]],["nvidia geforce gtx 1050","1050",0,[[1920,1080,60]]],["nvidia geforce gtx 1050 3gb","1050",0,[[1280,1024,60]]],["nvidia geforce gtx 1050 mobile","1050",0,[[1920,1080,60]]],["nvidia geforce gtx 1050 opengl engine","1050",0,[[1920,1080,116]]],["nvidia geforce gtx 1050 ti","1050",0,[[1920,1080,60]]],["nvidia geforce gtx 1050 ti mobile","1050",0,[[1920,1080,298]]],["nvidia geforce gtx 1050 ti opengl engine","1050",0,[[1920,1080,60]]],["nvidia geforce gtx 1050 ti with max-q design","1050",0,[[1920,1080,268],[2560,1440,102],[3840,2160,60]]],["nvidia geforce gtx 1050 with max-q design","1050",0,[[1920,1080,60],[3840,2160,24]]],["nvidia geforce gtx 1060","1060",0,[[1920,1080,60],[3840,2160,59]]],["nvidia geforce gtx 1060 3gb","1060",0,[[1920,1080,60]]],["nvidia geforce gtx 1060 3gb opengl engine","1060",0,[[1920,1080,60]]],["nvidia geforce gtx 1060 5gb","1060",0,[[1920,1080,55]]],["nvidia geforce gtx 1060 6gb","1060",0,[[1920,1080,60]]],["nvidia geforce gtx 1060 6gb opengl engine","1060",0,[[1920,1080,75]]],["nvidia geforce gtx 1060 mobile","1060",0,[[1920,1080,422]]],["nvidia geforce gtx 1060 mobile 6gb","1060",0,[[1920,1080,120]]],["nvidia geforce gtx 1060 with max-q design","1060",0,[[1920,1080,60]]],["nvidia geforce gtx 1060se 3gb","1060",0,[[1920,1080,60]]],["nvidia geforce gtx 1070","1070",0,[[1920,1080,134]]],["nvidia geforce gtx 1070 a17","1070",0,[[1920,1080,60]]],["nvidia geforce gtx 1070 mobile","1070",0,[[1920,1080,467]]],["nvidia geforce gtx 1070 opengl engine","1070",0,[[1920,1080,143]]],["nvidia geforce gtx 1070 ti","1070",0,[[1920,1080,60],[6016,3384,59]]],["nvidia geforce gtx 1070 ti opengl engine","1070",0,[[1920,1080,75]]],["nvidia geforce gtx 1070 with max-q design","1070",0,[[1920,1080,448]]],["nvidia geforce gtx 1070 with maxq design","1070",0,[[1920,1080,60],[3840,2160,59]]],["nvidia geforce gtx 1080","1080",0,[[1920,1080,119],[2560,1440,326],[3840,2160,286]]],["nvidia geforce gtx 1080 mobile","1080",0,[[1920,1080,120]]],["nvidia geforce gtx 1080 opengl engine","1080",0,[[1920,1080,79]]],["nvidia geforce gtx 1080 ti","1080",0,[[1920,1080,120]]],["nvidia geforce gtx 1080 ti opengl engine","1080",0,[[1920,1080,127]]],["nvidia geforce gtx 1080 with max-q design","1080",0,[[1920,1080,144]]],["nvidia geforce gtx 1180","1180",0,[[3440,1440,60]]],["nvidia geforce gtx 1650","1650",0,[[1920,1080,380]]],["nvidia geforce gtx 1650 mobile / max-q","1650",0,[[1920,1080,292]]],["nvidia geforce gtx 1650 super","1650",0,[[1920,1080,433]]],["nvidia geforce gtx 1650 ti","1650",0,[[1920,1080,144],[3840,2400,59]]],["nvidia geforce gtx 1650 ti mobile","1650",0,[[1920,1080,144]]],["nvidia geforce gtx 1650 ti with max-q design","1650",0,[[1920,1080,60],[3839,2160,60]]],["nvidia geforce gtx 1650 with max-q design","1650",0,[[1920,1080,142],[3000,2000,60]]],["nvidia geforce gtx 1660","1660",0,[[1920,1080,144]]],["nvidia geforce gtx 1660 super","1660",0,[[1920,1080,60]]],["nvidia geforce gtx 1660 ti","1660",0,[[1920,1080,546],[3840,2160,60]]],["nvidia geforce gtx 1660 ti mobile","1660",0,[[1920,1080,451]]],["nvidia geforce gtx 1660 ti with max-q design","1660",0,[[1920,1080,144]]],["nvidia geforce gtx 280","280",0,[[1680,1050,56]]],["nvidia geforce gtx 295","295",0,[[1920,1080,56]]],["nvidia geforce gtx 460","460",0,[[1920,1080,60]]],["nvidia geforce gtx 460 oem","460",0,[[1360,768,60],[1920,1080,60]]],["nvidia geforce gtx 460 opengl engine","460",0,[[1920,1080,59]]],["nvidia geforce gtx 460 se","460",0,[[1920,1080,56],[1920,1200,57]]],["nvidia geforce gtx 460 v2","460",0,[[1920,1080,60],[1920,1200,60],[2560,1600,55]]],["nvidia geforce gtx 460m","460",0,[[1920,1080,46]]],["nvidia geforce gtx 465","465",0,[[1920,1080,134],[1920,1200,59]]],["nvidia geforce gtx 470","470",0,[[1680,1050,60],[1920,1080,59]]],["nvidia geforce gtx 470m","470",0,[[1920,1200,55]]],["nvidia geforce gtx 480","480",0,[[1440,900,191],[1920,1080,115],[1920,1200,60]]],["nvidia geforce gtx 480 opengl engine","480",0,[[1600,1200,60]]],["nvidia geforce gtx 550 ti","550",0,[[1280,1024,58],[1920,1080,58]]],["nvidia geforce gtx 550 ti opengl engine","550",0,[[1920,1080,55]]],["nvidia geforce gtx 555","555",0,[[1920,1080,54]]],["nvidia geforce gtx 560","560",0,[[1920,1080,60]]],["nvidia geforce gtx 560 se","560",0,[[1680,1050,52],[1920,1080,111]]],["nvidia geforce gtx 560 ti","560",0,[[1920,1080,60]]],["nvidia geforce gtx 560 ti 448 cores","560",0,[[1920,1080,60],[2560,1440,60]]],["nvidia geforce gtx 560 ti oem","560",0,[[1920,1080,176]]],["nvidia geforce gtx 560 ti opengl engine","560",0,[[1920,1080,48]]],["nvidia geforce gtx 560m","560",0,[[1920,1080,55]]],["nvidia geforce gtx 570","570",0,[[1920,1080,60]]],["nvidia geforce gtx 570 opengl engine","570",0,[[1920,1080,60]]],["nvidia geforce gtx 570 rev. 2","570",0,[[1920,1080,60],[1920,1200,60]]],["nvidia geforce gtx 570m","570",0,[[1920,1080,125],[2560,1440,8]]],["nvidia geforce gtx 580","580",0,[[1920,1080,60]]],["nvidia geforce gtx 580 opengl engine","580",0,[[1680,1050,59]]],["nvidia geforce gtx 580m","580",0,[[1920,1080,60]]],["nvidia geforce gtx 590","590",0,[[1920,1080,59]]],["nvidia geforce gtx 645","645",0,[[1920,1080,57],[1920,1200,58]]],["nvidia geforce gtx 645 opengl engine","645",0,[[1920,1200,58]]],["nvidia geforce gtx 650","650",0,[[1920,1080,72]]],["nvidia geforce gtx 650 oem","650",0,[[1366,768,59]]],["nvidia geforce gtx 650 opengl engine","650",0,[[1920,1080,59]]],["nvidia geforce gtx 650 ti","650",0,[[1920,1080,60]]],["nvidia geforce gtx 650 ti boost","650",0,[[1280,1024,60],[1600,1200,187],[1920,1080,60]]],["nvidia geforce gtx 650 ti opengl engine","650",0,[[1920,1080,60]]],["nvidia geforce gtx 660","660",0,[[1920,1080,111]]],["nvidia geforce gtx 660 oem","660",0,[[1920,1080,59]]],["nvidia geforce gtx 660 ti","660",0,[[1920,1080,60]]],["nvidia geforce gtx 660 ti opengl engine","660",0,[[1280,1024,60]]],["nvidia geforce gtx 660m","660",0,[[1680,1050,36],[1920,1080,59]]],["nvidia geforce gtx 660m mac","660",0,[[2560,1440,2]]],["nvidia geforce gtx 660m opengl engine","660",0,[[2560,1440,36]]],["nvidia geforce gtx 670","670",0,[[1920,1080,100]]],["nvidia geforce gtx 670 opengl engine","670",0,[[1920,1080,60]]],["nvidia geforce gtx 670m","670",0,[[1920,1080,66]]],["nvidia geforce gtx 670mx","670",0,[[1920,1080,60]]],["nvidia geforce gtx 675m","675",0,[[1920,1080,60]]],["nvidia geforce gtx 675mx","675",0,[[1680,1050,60],[1920,1080,60],[2560,1440,55]]],["nvidia geforce gtx 675mx mac","675",0,[[2560,1440,36]]],["nvidia geforce gtx 675mx opengl engine","675",0,[[2560,1440,60]]],["nvidia geforce gtx 680","680",0,[[1920,1080,60]]],["nvidia geforce gtx 680 opengl engine","680",0,[[1920,1080,60]]],["nvidia geforce gtx 680m","680",0,[[1920,1080,39],[1920,1200,60]]],["nvidia geforce gtx 680m opengl engine","680",0,[[1920,1080,36]]],["nvidia geforce gtx 680mx","680",0,[[2560,1440,59]]],["nvidia geforce gtx 680mx opengl engine","680",0,[[2560,1440,59]]],["nvidia geforce gtx 690","690",0,[[1920,1080,60],[3840,2160,30]]],["nvidia geforce gtx 745","745",0,[[1920,1080,60],[2560,1600,29]]],["nvidia geforce gtx 750","750",0,[[1920,1080,60]]],["nvidia geforce gtx 750 opengl engine","750",0,[[1920,1200,58]]],["nvidia geforce gtx 750 ti","750",0,[[1920,1080,97]]],["nvidia geforce gtx 760","760",0,[[1920,1080,60],[1920,1200,116]]],["nvidia geforce gtx 760 oem","760",0,[[1920,1080,60]]],["nvidia geforce gtx 760 opengl engine","760",0,[[1920,1080,52]]],["nvidia geforce gtx 760 ti","760",0,[[1920,1080,60],[1920,1200,60]]],["nvidia geforce gtx 760 ti oem","760",0,[[1920,1200,60]]],["nvidia geforce gtx 760 ti opengl engine","760",0,[[1920,1080,60]]],["nvidia geforce gtx 760a","760",0,[[2560,1080,15]]],["nvidia geforce gtx 760m","760",0,[[1920,1080,60]]],["nvidia geforce gtx 765m","765",0,[[1920,1080,53],[2560,1440,57]]],["nvidia geforce gtx 765m by nick[d]vb","765",0,[[2560,1440,58]]],["nvidia geforce gtx 765m opengl engine","765",0,[[2560,1440,57]]],["nvidia geforce gtx 770","770",0,[[1920,1080,143],[2560,1440,203]]],["nvidia geforce gtx 770 opengl engine","770",0,[[1920,1080,60]]],["nvidia geforce gtx 770m","770",0,[[1920,1080,60],[2560,1440,59]]],["nvidia geforce gtx 770m by nick[d]vb","770",0,[[2560,1440,34]]],["nvidia geforce gtx 770m opengl engine","770",0,[[2560,1440,59]]],["nvidia geforce gtx 775m by idopt mac","775",0,[[2560,1440,56]]],["nvidia geforce gtx 775m mac","775",0,[[2560,1440,59]]],["nvidia geforce gtx 775m opengl engine","775",0,[[2560,1440,60]]],["nvidia geforce gtx 780","780",0,[[1920,1080,159]]],["nvidia geforce gtx 780 by st3phl3","780",0,[[3840,2160,30]]],["nvidia geforce gtx 780 mac","780",0,[[1680,1050,60],[1920,1080,60]]],["nvidia geforce gtx 780 rev. 2","780",0,[[1920,1080,144],[2560,1440,119],[3840,2160,58],[5120,2880,58]]],["nvidia geforce gtx 780 ti","780",0,[[1280,1024,120],[1920,1080,119]]],["nvidia geforce gtx 780 ti opengl engine","780",0,[[2560,1440,60]]],["nvidia geforce gtx 780m","780",0,[[1920,1080,60],[2560,1440,59]]],["nvidia geforce gtx 780m by nick[d]vb","780",0,[[1920,1080,59],[2560,1440,60]]],["nvidia geforce gtx 780m mac","780",0,[[2560,1440,60]]],["nvidia geforce gtx 780m opengl engine","780",0,[[2560,1440,60]]],["nvidia geforce gtx 850a","850",0,[[2560,1440,48]]],["nvidia geforce gtx 850m","850",0,[[1920,1080,60]]],["nvidia geforce gtx 860m","860",0,[[1920,1080,59]]],["nvidia geforce gtx 860m opengl engine","860",0,[[2560,1440,58]]],["nvidia geforce gtx 870m","870",0,[[1920,1080,60],[2560,1440,102]]],["nvidia geforce gtx 880m","880",0,[[1920,1080,60],[2560,1440,74]]],["nvidia geforce gtx 880m opengl engine","880",0,[[2560,1440,60]]],["nvidia geforce gtx 950","950",0,[[1920,1080,98]]],["nvidia geforce gtx 950 o
106pengl engine","950",0,[[1920,1200,60]]],["nvidia geforce gtx 950a","950",0,[[1920,1080,60],[3840,2160,38]]],["nvidia geforce gtx 950m","950",0,[[1920,1080,114]]],["nvidia geforce gtx 960","960",0,[[1920,1080,60]]],["nvidia geforce gtx 960a","960",0,[[1920,1440,128]]],["nvidia geforce gtx 960m","960",0,[[1920,1080,119],[3840,2160,37]]],["nvidia geforce gtx 965m","965",0,[[1920,1080,195],[3000,2000,59],[3840,2160,41]]],["nvidia geforce gtx 965m opengl engine","965",0,[[2880,1620,55]]],["nvidia geforce gtx 970","970",0,[[1920,1080,143]]],["nvidia geforce gtx 970 opengl engine","970",0,[[2560,1600,60]]],["nvidia geforce gtx 970m","970",0,[[1920,1080,60]]],["nvidia geforce gtx 980","980",0,[[1920,1080,60],[3440,1440,294]]],["nvidia geforce gtx 980 ti","980",0,[[1920,1080,119],[2560,1440,456]]],["nvidia geforce gtx 980 ti opengl engine","980",0,[[1920,1080,60]]],["nvidia geforce gtx 980m","980",0,[[1920,1080,60],[3840,2160,104]]],["nvidia geforce gtx titan","gtx",0,[[1920,1080,119],[1920,1200,119],[2560,1440,60]]],["nvidia geforce gtx titan black","gtx",0,[[1680,1050,60],[1920,1080,60],[1920,1200,60],[2560,1440,60]]],["nvidia geforce gtx titan black opengl engine","gtx",0,[[3840,2160,60]]],["nvidia geforce gtx titan opengl engine","gtx",0,[[2560,1440,60]]],["nvidia geforce gtx titan x","gtxx",0,[[1920,1080,144],[2560,1440,120],[2560,1600,60]]],["nvidia geforce gtx titan xp","gtxxp",0,[[2560,1440,60],[3440,1440,60]]],["nvidia geforce gtx titan z","gtxz",0,[[1440,900,59],[1920,1080,39],[3840,2160,60]]],["nvidia geforce gtx780m by nikey22","780",0,[[2560,1440,60]]],["nvidia geforce gtx870m by nikey22","870",0,[[2560,1440,60]]],["nvidia geforce gtx880m","880",0,[[1920,1080,60]]],["nvidia geforce gtx880m by nikey22","880",0,[[2560,1440,59]]],["nvidia geforce gtx880m opengl engine","880",0,[[2560,1440,59]]],["nvidia geforce mx110","110",0,[[1366,768,61],[1920,1080,57]]],["nvidia geforce mx130","130",0,[[1920,1080,60]]],["nvidia geforce mx150","150",0,[[1920,1080,113]]],["nvidia geforce mx230","230",0,[[1920,1080,60]]],["nvidia geforce mx250","250",0,[[1920,1080,60]]],["nvidia geforce mx330","330",0,[[1920,1080,60],[3840,2160,51]]],["nvidia geforce mx350","350",0,[[1920,1080,60]]],["nvidia geforce mx450","450",0,[[1920,1080,60]]],["nvidia geforce pre-release graphics device","pre",0,[[2560,1440,60]]],["nvidia geforce pre-release tesla c2075 opengl engine","2075",0,[[1600,900,59]]],["nvidia geforce pre-release titan x opengl engine","prex",0,[[1920,1080,60]]],["nvidia geforce pre-release titan xp collectors edition opengl e","prexpe",0,[[1920,1080,59]]],["nvidia geforce pre-release titan xp opengl engine","prexp",0,[[2560,1440,60]]],["nvidia geforce rtx 2060","2060",0,[[1920,1080,512]]],["nvidia geforce rtx 2060 max-q","2060",0,[[2560,1440,301]]],["nvidia geforce rtx 2060 mobile","2060",0,[[1920,1080,518]]],["nvidia geforce rtx 2060 rev. a","2060",0,[[3840,2160,257]]],["nvidia geforce rtx 2060 super","2060",0,[[1920,1080,645],[2560,1440,143]]],["nvidia geforce rtx 2060 with max-q design","2060",0,[[1920,1080,292],[1920,1200,60]]],["nvidia geforce rtx 2070","2070",0,[[1920,1080,60],[3840,2160,60]]],["nvidia geforce rtx 2070 mobile","2070",0,[[1920,1080,477]]],["nvidia geforce rtx 2070 mobile / max-q","2070",0,[[1920,1080,526]]],["nvidia geforce rtx 2070 mobile / max-q refresh","2070",0,[[1920,1080,143]]],["nvidia geforce rtx 2070 rev. a","2070",0,[[2560,1440,144]]],["nvidia geforce rtx 2070 super","2070",0,[[1920,1080,510]]],["nvidia geforce rtx 2070 super with max-q design","2070",0,[[1920,1080,300]]],["nvidia geforce rtx 2070 with max-q design","2070",0,[[1920,1080,240]]],["nvidia geforce rtx 2080","2080",0,[[1920,1080,632],[2560,1440,165]]],["nvidia geforce rtx 2080 mobile","2080",0,[[1920,1080,144]]],["nvidia geforce rtx 2080 rev. a","2080",0,[[2560,1440,143]]],["nvidia geforce rtx 2080 super","2080",0,[[1920,1080,601]]],["nvidia geforce rtx 2080 super mobile / max-q","2080",0,[[3840,2160,59]]],["nvidia geforce rtx 2080 super with max-q design","2080",0,[[1920,1080,300]]],["nvidia geforce rtx 2080 ti","2080",0,[[1920,1080,83]]],["nvidia geforce rtx 2080 ti rev. a","2080",0,[[1920,1080,403]]],["nvidia geforce rtx 2080 with max-q design","2080",0,[[1920,1080,476]]],["nvidia geforce rtx 3050","3050",0,[[1920,1080,60]]],["nvidia geforce rtx 3050 laptop gpu","3050",0,[[1920,1080,144]]],["nvidia geforce rtx 3050 ti laptop gpu","3050",0,[[1920,1080,144]]],["nvidia geforce rtx 3060","3060",0,[[1920,1080,674]]],["nvidia geforce rtx 3060 laptop gpu","3060",0,[[1920,1080,300]]],["nvidia geforce rtx 3060 lite hash rate","3060",0,[[1920,1080,60]]],["nvidia geforce rtx 3060 mobile / max-q","3060",0,[[1920,1080,435]]],["nvidia geforce rtx 3060 ti","3060",0,[[1920,1080,779]]],["nvidia geforce rtx 3070","3070",0,[[1920,1080,723],[2560,1440,294]]],["nvidia geforce rtx 3070 laptop gpu","3070",0,[[1920,1080,357]]],["nvidia geforce rtx 3070 mobile / max-q","3070",0,[[2560,1440,386]]],["nvidia geforce rtx 3070 ti","3070",0,[[1920,1080,60]]],["nvidia geforce rtx 3080","3080",0,[[1920,1080,726],[2560,1440,60],[3840,2160,60]]],["nvidia geforce rtx 3080 laptop gpu","3080",0,[[1920,1080,294],[2560,1440,244]]],["nvidia geforce rtx 3080 mobile / max-q 8gb/16gb","3080",0,[[1920,1080,293]]],["nvidia geforce rtx 3080 ti","3080",0,[[1920,1080,239],[2560,1440,60]]],["nvidia geforce rtx 3090","3090",0,[[2560,1440,60],[3840,2160,474]]],["nvidia geforce rtx t10-16","10",0,[[2560,1600,3]]],["nvidia geforce rtx t10-8","10",0,[[2560,1600,3]]],["nvidia gf100 board - 10220000","100",0,[[1920,1200,60]]],["nvidia gf117","117",0,[[1920,1080,32]]],["nvidia gigabyte geforce gt 440","440",0,[[1280,1024,34]]],["nvidia gigabyte geforce gt 610","610",0,[[1920,1080,17]]],["nvidia gigabyte geforce gt 630","630",0,[[1920,1080,34]]],["nvidia gigabyte geforce gt 730","730",0,[[1280,1024,38]]],["nvidia gigabyte geforce gts 450","450",0,[[1280,1024,37]]],["nvidia gigabyte geforce gtx 1050 ti","1050",0,[[1920,1080,30]]],["nvidia gigabyte geforce gtx 460","460",0,[[1680,1050,60]]],["nvidia gigabyte geforce gtx 550 ti","550",0,[[1920,1080,57]]],["nvidia gigabyte geforce gtx 560 ti","560",0,[[1920,1080,60]]],["nvidia gigabyte geforce gtx 570 hd","570",0,[[1920,1080,60]]],["nvidia gigabyte geforce gtx 580","580",0,[[1920,1200,60]]],["nvidia gigabyte geforce gtx 650","650",0,[[1680,1050,55]]],["nvidia gigabyte geforce gtx 650 ti","650",0,[[2560,1440,40]]],["nvidia gigabyte geforce gtx 660","660",0,[[1920,1080,31]]],["nvidia gigabyte geforce gtx 660 ti","660",0,[[5120,2880,29]]],["nvidia gigabyte geforce gtx 670","670",0,[[1920,1080,60]]],["nvidia gigabyte geforce gtx 750","750",0,[[1920,1080,59]]],["nvidia gigabyte geforce gtx 750 ti","750",0,[[1920,1080,60]]],["nvidia gigabyte geforce gtx 760","760",0,[[3440,1440,17]]],["nvidia gigabyte geforce gtx 770","770",0,[[2560,1440,59]]],["nvidia gigabyte geforce gtx 780 ti","780",0,[[1920,1080,240]]],["nvidia gigabyte geforce gtx 960","960",0,[[1920,1080,142],[1920,1200,120]]],["nvidia gigabyte geforce gtx 970","970",0,[[1920,1080,60]]],["nvidia gigabyte geforce gtx 980","980",0,[[2560,1440,60]]],["nvidia gigabyte geforce gtx 980 ti","980",0,[[1920,1080,60]]],["nvidia gk104 board - 2051b502","104",0,[[2560,1440,60]]],["nvidia gk104 board - 20530501","104",0,[[2560,1440,60]]],["nvidia gk104gl [grid k2]","104",0,[[2560,1343,21]]],["nvidia gk104gl [grid k520]","104",0,[[1024,768,120]]],["nvidia gp102 [titan x]","102",0,[[3440,1440,462]]],["nvidia gp102 [titan xp]","102",0,[[1920,1080,126]]],["nvidia gp104","104",0,[[1920,1080,60]]],["nvidia gp104gl","104",0,[[2560,1343,36]]],["nvidia gp108","108",0,[[1920,1080,60]]],["nvidia graphics device","",0,[[1920,1080,60],[1920,1200,60],[3840,2160,60]]],["nvidia grid gtx p40-6","40",0,[[1440,900,153]]],["nvidia grid k1","1",0,[[1245,768,6],[1920,1080,35]]],["nvidia grid k140q vgpu","140",0,[[1920,1080,30]]],["nvidia grid k160q","160",0,[[1920,1080,34]]],["nvidia grid k180q","180",0,[[1920,1080,28]]],["nvidia grid k2","2",0,[[1245,768,6],[1920,1080,59]]],["nvidia grid k220q","220",0,[[1920,1200,34]]],["nvidia grid k240q","240",0,[[1920,1080,64]]],["nvidia grid k260q","260",0,[[2560,1440,31]]],["nvidia grid k280q","280",0,[[1920,1080,64]]],["nvidia grid k520","520",0,[[1280,720,60]]],["nvidia grid m10-1b","10",0,[[1024,768,49]]],["nvidia grid m10-2q","10",0,[[2560,1440,15]]],["nvidia grid m6-0b","6",0,[[1680,1050,33]]],["nvidia grid m60-1b","60",0,[[1680,1050,46],[1920,1080,46]]],["nvidia grid m60-1q","60",0,[[1536,864,60]]],["nvidia grid m60-2q","60",0,[[1920,1080,57]]],["nvidia grid m60-4q","60",0,[[1920,1080,59]]],["nvidia grid m60-8q","60",0,[[1920,1080,60]]],["nvidia grid p100-4q","100",0,[[2560,1440,16]]],["nvidia grid p4-4q","4",0,[[1892,932,247]]],["nvidia grid p40-4q","40",0,[[2741,1495,60]]],["nvidia grid p40-8q","40",0,[[1920,1080,60]]],["nvidia grid rtx6000-2q","6000",0,[[1024,768,60]]],["nvidia grid rtx6000p-6","6000",0,[[1280,1024,161]]],["nvidia grid t4-16q","4",0,[[1920,1080,61]]],["nvidia grid t4-1b","4",0,[[1920,1080,46]]],["nvidia grid t4-1q","4",0,[[1280,1024,48]]],["nvidia grid t4-2b4","4",0,[[1536,864,47]]],["nvidia grid t4-2q","4",0,[[1920,1080,65]]],["nvidia grid t4-8q","4",0,[[2560,1080,60]]],["nvidia grid v100-1q","100",0,[[1646,1154,59]]],["nvidia grid v100-2b","100",0,[[1440,900,45]]],["nvidia grid v100dx-16q","100",0,[[1280,1024,60]]],["nvidia grid v100dx-1q","100",0,[[1280,1024,60]]],["nvidia gtx 1060 hl","1060",0,[[3840,2160,60]]],["nvidia gtx 865m by imacgfx","865",0,[[2560,1440,60]]],["nvidia gtx 980m sli","980",0,[[1366,768,29]]],["nvidia gv-n660oc-2gd","660",0,[[1920,1200,60]]],["nvidia gv100","100",0,[[3840,2160,60]]],["nvidia gv100 [titan v]","100",0,[[2560,1440,60]]],["nvidia gv102","102",0,[[2560,1600,525
106]]],["nvidia hp geforce gt 730","730",0,[[1920,1080,55]]],["nvidia hp quadro 2000","2000",0,[[2560,1080,38]]],["nvidia hp quadro 4000","4000",0,[[2560,1080,52]]],["nvidia hp quadro 600","600",0,[[1360,768,41]]],["nvidia hp quadro k4000","4000",0,[[1920,1200,26]]],["nvidia hp quadro k620","620",0,[[1600,1200,94]]],["nvidia inno3d geforce gtx660","3",0,[[2560,1440,107]]],["nvidia microsoft virtual render driver","",0,[[1920,1080,59]]],["nvidia msi geforce gt 610","610",0,[[1920,1080,16]]],["nvidia msi geforce gt 630","630",0,[[1440,900,12]]],["nvidia msi geforce gt 635","635",0,[[1920,1080,30]]],["nvidia msi geforce gt 710","710",0,[[1920,1080,27]]],["nvidia msi geforce gt 730","730",0,[[1920,1080,53]]],["nvidia msi geforce gtx 1050 ti","1050",0,[[1920,1080,59]]],["nvidia msi geforce gtx 1060","1060",0,[[1920,1080,120]]],["nvidia msi geforce gtx 1070","1070",0,[[1920,1200,45]]],["nvidia msi geforce gtx 460","460",0,[[1920,1080,60]]],["nvidia msi geforce gtx 560 ti","560",0,[[1920,1080,60]]],["nvidia msi geforce gtx 570 hd","570",0,[[1920,1200,60]]],["nvidia msi geforce gtx 580","580",0,[[2560,1440,60]]],["nvidia msi geforce gtx 650","650",0,[[2560,1080,52]]],["nvidia msi geforce gtx 650 ti","650",0,[[1920,1080,60]]],["nvidia msi geforce gtx 660","660",0,[[1920,1080,60]]],["nvidia msi geforce gtx 660 ti","660",0,[[1680,1050,49]]],["nvidia msi geforce gtx 670","670",0,[[1920,1080,60]]],["nvidia msi geforce gtx 745","745",0,[[1920,1080,55]]],["nvidia msi geforce gtx 760","760",0,[[1280,1024,30],[1920,1080,58]]],["nvidia msi geforce gtx 780","780",0,[[1920,1080,60]]],["nvidia msi geforce gtx 950","950",0,[[1920,1080,59]]],["nvidia msi geforce gtx 960","960",0,[[1680,1050,120],[2560,1440,59]]],["nvidia msi geforce gtx 970","970",0,[[1680,1050,60]]],["nvidia msi geforce gtx 980","980",0,[[1920,1080,120],[3840,2160,60]]],["nvidia msi geforce gtx 980 ti","980",0,[[5120,2880,56]]],["nvidia n15e-gt","15",0,[[3840,2160,30]]],["nvidia null geforce 920a","920",0,[[1920,1080,25]]],["nvidia null graphics device","",0,[[1920,1080,24]]],["nvidia nvs 310","310",0,[[1280,1024,24],[1920,1080,15]]],["nvidia nvs 3100m","3100",0,[[1920,1080,10]]],["nvidia nvs 315","315",0,[[1280,1024,25],[1920,1080,15]]],["nvidia nvs 4200m","4200",0,[[1920,1080,11]]],["nvidia nvs 510","510",0,[[1920,1200,27],[2560,1080,24],[3440,1440,16]]],["nvidia nvs 5200m","5200",0,[[1366,768,55],[1600,900,33],[1920,1080,57]]],["nvidia nvs 5400m","5400",0,[[1600,900,46],[1920,1200,27]]],["nvidia p102-100","102",0,[[1600,1200,35]]],["nvidia p106-090","106",0,[[1920,1371,16]]],["nvidia p106-100","106",0,[[1920,1080,60],[3840,2160,30]]],["nvidia p106-100 custom","106",0,[[1680,1050,60]]],["nvidia palit geforce gtx 650","650",0,[[1920,1080,49]]],["nvidia palit geforce gtx 650 ti","650",0,[[1920,1080,59]]],["nvidia palit geforce gtx 660","660",0,[[1920,1080,26]]],["nvidia palit gtx 680 jetstream","680",0,[[1920,1080,60]]],["nvidia pegatron geforce gt 420","420",0,[[1400,1050,25]]],["nvidia pny geforce gt 610","610",0,[[1280,1024,19]]],["nvidia pny geforce gtx 1060","1060",0,[[1920,1080,60]]],["nvidia pny geforce gtx 460","460",0,[[1360,768,59]]],["nvidia pny geforce gtx 550 ti","550",0,[[1920,1080,55]]],["nvidia pny geforce gtx 570 hd","570",0,[[1280,1024,72]]],["nvidia pny geforce gtx 580","580",0,[[1920,1200,59]]],["nvidia pny geforce gtx 680","680",0,[[2560,1080,120]]],["nvidia pny geforce gtx 750","750",0,[[1280,1024,60]]],["nvidia pny geforce gtx 970","970",0,[[2560,1440,60]]],["nvidia pny geforce gtx 980","980",0,[[1920,1080,120]]],["nvidia point of view geforce gtx 470","470",0,[[1920,1080,59]]],["nvidia point of view geforce gtx 660 ti","660",0,[[1680,1050,59]]],["nvidia quadro 1000m","1000",0,[[1920,1080,28]]],["nvidia quadro 1000m,","1000",0,[[1920,1080,27]]],["nvidia quadro 2000","2000",0,[[1920,1080,51],[2560,1440,28]]],["nvidia quadro 2000d","2000",0,[[1280,1024,56]]],["nvidia quadro 2000m","2000",0,[[1920,1080,31]]],["nvidia quadro 3000m","3000",0,[[1920,1080,53],[2560,1440,6]]],["nvidia quadro 3000m opengl engine","3000",0,[[1920,1080,49]]],["nvidia quadro 4000","4000",0,[[1920,1080,56],[1920,1200,58]]],["nvidia quadro 4000m","4000",0,[[1920,1080,51]]],["nvidia quadro 410","410",0,[[1920,1080,23]]],["nvidia quadro 5000","5000",0,[[1920,1080,60],[2560,1080,55],[2560,1440,51]]],["nvidia quadro 5000 opengl engine","5000",0,[[1920,1200,59]]],["nvidia quadro 5000m","5000",0,[[1600,900,110]]],["nvidia quadro 600","600",0,[[1680,1050,28],[1920,1080,28],[1920,1200,26]]],["nvidia quadro 6000","6000",0,[[1920,1080,60],[1920,1200,60]]],["nvidia quadro 7000","7000",0,[[1920,1200,60]]],["nvidia quadro fx 1800m","1800",0,[[1600,900,15]]],["nvidia quadro fx 2800m","2800",0,[[1920,1200,36]]],["nvidia quadro fx grid k1","1",0,[[1920,1080,31]]],["nvidia quadro gp100","100",0,[[1920,1200,366]]],["nvidia quadro gv100","100",0,[[3840,2160,60],[4096,2160,60]]],["nvidia quadro k1000m","1000",0,[[1920,1080,28]]],["nvidia quadro k1000m by nick[d]vb","1000",0,[[1920,1080,36]]],["nvidia quadro k1100m","1100",0,[[1920,1080,56]]],["nvidia quadro k1100m by nick[d]vb","1100",0,[[1920,1080,66]]],["nvidia quadro k1100m opengl engine","1100",0,[[1920,1080,54]]],["nvidia quadro k1200","1200",0,[[1920,1080,60],[2560,1440,57],[3840,2160,28]]],["nvidia quadro k1200 opengl engine","1200",0,[[3840,2160,34]]],["nvidia quadro k2000","2000",0,[[1920,1080,55]]],["nvidia quadro k2000 opengl engine","2000",0,[[2560,1440,44]]],["nvidia quadro k2000d","2000",0,[[1280,1024,57],[1680,1050,57],[1920,1080,59]]],["nvidia quadro k2000m","2000",0,[[1920,1080,36]]],["nvidia quadro k2000m by nick[d]vb","2000",0,[[2560,1440,38]]],["nvidia quadro k2000m opengl engine","2000",0,[[1920,1080,43]
106]],["nvidia quadro k2100m","2100",0,[[1920,1080,58]]],["nvidia quadro k2100m by nick[d]vb","2100",0,[[2560,1440,54]]],["nvidia quadro k2100m opengl engine","2100",0,[[1920,1080,59]]],["nvidia quadro k2200","2200",0,[[1920,1080,60],[1920,1200,126],[5120,2880,25]]],["nvidia quadro k2200m","2200",0,[[1920,1080,60]]],["nvidia quadro k3000m","3000",0,[[1920,1080,59]]],["nvidia quadro k3000m by st3phl3","3000",0,[[2560,1440,50]]],["nvidia quadro k3100m","3100",0,[[1920,1080,60]]],["nvidia quadro k3100m by nikey22","3100",0,[[2560,1440,59]]],["nvidia quadro k3100m opengl engine","3100",0,[[2560,1440,58]]],["nvidia quadro k4000","4000",0,[[1920,1080,60],[1920,1200,59]]],["nvidia quadro k4000 opengl engine","4000",0,[[1920,1080,59]]],["nvidia quadro k4000m","4000",0,[[1920,1080,80]]],["nvidia quadro k4100m","4100",0,[[1920,1080,32]]],["nvidia quadro k4100m by nikey22","4100",0,[[2560,1440,60]]],["nvidia quadro k420","420",0,[[1366,768,57],[2560,1440,19],[3840,2160,10]]],["nvidia quadro k4200","4200",0,[[1920,1080,60],[2560,1440,59],[3840,2160,57]]],["nvidia quadro k5000","5000",0,[[1920,1080,60],[2560,1440,60]]],["nvidia quadro k5000 opengl engine","5000",0,[[2560,1600,59]]],["nvidia quadro k5000m","5000",0,[[1920,1080,60],[2560,1440,60]]],["nvidia quadro k5000m opengl engine","5000",0,[[2560,1440,60]]],["nvidia quadro k5100m","5100",0,[[1920,1080,60],[2560,1080,171]]],["nvidia quadro k5100m by nikey22","5100",0,[[2560,1440,60]]],["nvidia quadro k510m","510",0,[[1920,1080,33]]],["nvidia quadro k5200","5200",0,[[1920,1080,60],[1920,1200,60]]],["nvidia quadro k5200 opengl engine","5200",0,[[1920,1200,41]]],["nvidia quadro k600","600",0,[[1920,1080,28]]],["nvidia quadro k600 opengl engine","600",0,[[1920,1200,31]]],["nvidia quadro k6000","6000",0,[[1920,1080,60],[1920,1200,60],[2560,1440,60]]],["nvidia quadro k6000 opengl engine","6000",0,[[1920,1080,59]]],["nvidia quadro k610m","610",0,[[1920,1080,36]]],["nvidia quadro k610m by nick[d]vb","610",0,[[1920,1080,34]]],["nvidia quadro k620","620",0,[[1920,1080,87],[1920,1200,69],[2560,1440,44]]],["nvidia quadro k620 opengl engine","620",0,[[1920,1080,59]]],["nvidia quadro k620m","620",0,[[1920,1080,49],[2880,1620,15]]],["nvidia quadro m1000m","1000",0,[[1920,1080,60]]],["nvidia quadro m1200","1200",0,[[1920,1080,60],[3840,2160,43]]],["nvidia quadro m2000","2000",0,[[1920,1080,73],[2560,1440,59]]],["nvidia quadro m2000m","2000",0,[[1920,1080,60]]],["nvidia quadro m2000m special","2000",0,[[1920,1080,60]]],["nvidia quadro m2200","2200",0,[[1920,1080,60]]],["nvidia quadro m2200 mobile","2200",0,[[3840,2160,13]]],["nvidia quadro m3000m","3000",0,[[1920,1080,60]]],["nvidia quadro m4000","4000",0,[[1920,1080,120],[1920,1200,60],[2560,1440,60]]],["nvidia quadro m4000 opengl engine","4000",0,[[1920,1080,60]]],["nvidia quadro m4000m","4000",0,[[1920,1080,60],[3840,2160,69]]],["nvidia quadro m5000","5000",0,[[1920,1080,60],[1920,1200,60],[2560,1440,59]]],["nvidia quadro m5000m","5000",0,[[1920,1080,212],[3840,2160,60]]],["nvidia quadro m500m","500",0,[[1920,1080,58],[2880,1620,29]]],["nvidia quadro m520","520",0,[[1920,1080,59],[3840,2160,27]]],["nvidia quadro m5500","5500",0,[[3440,1440,60]]],["nvidia quadro m6000","6000",0,[[1920,1080,408],[2560,1440,60]]],["nvidia quadro m6000 24gb","6000",0,[[1680,1050,60],[1920,1200,60]]],["nvidia quadro m600m","600",0,[[1920,1080,59]]],["nvidia quadro m620","620",0,[[1920,1080,60]]],["nvidia quadro nvs 4200m","4200",0,[[1600,900,26],[1920,1080,19]]],["nvidia quadro p1000","1000",0,[[1920,1080,60],[1920,1200,60]]],["nvidia quadro p1000 mobile","1000",0,[[1920,1080,60]]],["nvidia quadro p2000","2000",0,[[1680,1050,60],[1920,1080,242],[2560,1440,60]]],["nvidia quadro p2000 mobile","2000",0,[[1920,1080,60]]],["nvidia quadro p2000 opengl engine","2000",0,[[1920,1080,59]]],["nvidia quadro p2000 with max-q design","2000",0,[[1920,1080,60],[3840,2160,67]]],["nvidia quadro p2200","2200",0,[[1920,1080,60],[3840,2160,340]]],["nvidia quadro p3000","3000",0,[[1920,1080,60]]],["nvidia quadro p3200","3200",0,[[1920,1080,60],[3840,2160,60]]],["nvidia quadro p3200 mobile","3200",0,[[3840,2160,60]]],["nvidia quadro p3200 with max-q design","3200",0,[[2560,1440,60]]],["nvidia quadro p400","400",0,[[1680,1050,46],[1920,1080,57],[1920,1200,54]]],["nvidia quadro p4000","4000",0,[[1920,1080,60],[3840,2160,167]]],["nvidia quadro p4200","4200",0,[[1920,1080,60],[3840,2160,60]]],["nvidia quadro p4200 with max-q design","4200",0,[[3839,2159,53]]],["nvidia quadro p500","500",0,[[1920,1080,60]]],["nvidia quadro p5000","5000",0,[[1920,1080,60]]],["nvidia quadro p5000 opengl engine","5000",0,[[3840,2160,58]]],["nvidia quadro p520","520",0,[[1920,1080,60]]],["nvidia quadro p5200","5200",0,[[3840,2160,100]]],["nvidia quadro p600","600",0,[[1920,1080,60]]],["nvidia quadro p6000","6000",0,[[1920,1080,60],[2560,1440,60],[2560,1600,411]]],["nvidia quadro p620","620",0,[[1920,1080,65]]],["nvidia quadro rtx 3000","3000",0,[[1920,1080,60]]],["nvidia quadro rtx 3000 mobile / max-q","3000",0,[[3840,2160,60]]],["nvidia quadro rtx 3000 with max-q design","3000",0,[[3240,2160,60]]],["nvidia quadro rtx 4000","4000",0,[[1920,1080,60]]],["nvidia quadro rtx 4000 mobile / max-q","4000",0,[[1920,1080,60]]],["nvidia quadro rtx 4000 with max-q design","4000",0,[[1920,1080,60],[3840,2160,60]]],["nvidia quadro rtx 5000","5000",0,[[1920,1080,443],[2560,1440,60]]],["nvidia quadro rtx 5000 mobile / max-q","5000",0,[[3840,2160,60]]],["nvidia quadro rtx 5000 with max-q design","5000",0,[[1920,1080,60],[3840,2160,60]]],["nvidia quadro rtx 6000","6000",0,[[1920,1080,438],[2560,1440,60]]],["nvidia quadro rtx 8
106000","8000",0,[[1920,1080,60],[1920,1200,60]]],["nvidia quadro t1000","1000",0,[[1920,1080,60],[2560,1440,41]]],["nvidia quadro t1000 mobile","1000",0,[[1920,1080,277]]],["nvidia quadro t1000 with max-q design","1000",0,[[1920,1080,60]]],["nvidia quadro t2000","2000",0,[[1920,1080,60]]],["nvidia quadro t2000 mobile / max-q","2000",0,[[1920,1080,302]]],["nvidia quadro t2000 with max-q design","2000",0,[[1920,1080,60],[1920,1200,60],[2560,1440,60]]],["nvidia rtx a1000 laptop gpu","1000",0,[[1920,1080,60]]],["nvidia rtx a2000","2000",0,[[3840,2160,60]]],["nvidia rtx a2000 laptop gpu","2000",0,[[2400,1600,120],[3840,2160,60]]],["nvidia rtx a3000 laptop gpu","3000",0,[[1920,1080,60],[3840,2160,60]]],["nvidia rtx a4000","4000",0,[[1920,1080,60],[3840,2160,60]]],["nvidia rtx a4000 laptop gpu","4000",0,[[1920,1080,60]]],["nvidia rtx a5000","5000",0,[[3840,2160,60]]],["nvidia rtx a5000 laptop gpu","5000",0,[[3840,2160,60]]],["nvidia rtx a6000","6000",0,[[1920,1200,60]]],["nvidia sony geforce 410m","410",0,[[1366,768,24]]],["nvidia t1000","1000",0,[[1920,1080,43],[3840,2160,60]]],["nvidia t1200 laptop gpu","1200",0,[[1920,1080,60]]],["nvidia t400","400",0,[[3840,2160,35]]],["nvidia t500","500",0,[[1920,1080,60],[3839,2159,52]]],["nvidia t600","600",0,[[1920,1080,60]]],["nvidia tesla c2050 / c2070","2050",0,[[1920,1080,105]]],["nvidia tesla c2070","2070",0,[[1920,1200,60]]],["nvidia tesla c2075","2075",0,[[1920,1080,60]]],["nvidia tesla k10","10",0,[[1920,1080,60]]],["nvidia tesla k10.g1.8gb","10",0,[[1440,900,59]]],["nvidia tesla k20m","20",0,[[1240,821,118]]],["nvidia tesla k20xm","20",0,[[3840,2400,17]]],["nvidia tesla k80","80",0,[[1664,896,66],[3840,2160,30]]],["nvidia tesla m10","10",0,[[1440,900,60],[1280,1024,60]]],["nvidia tesla m40","40",0,[[1600,1024,190]]],["nvidia tesla m6","6",0,[[1920,1080,59]]],["nvidia tesla m60","60",0,[[1366,768,60],[1920,962,61],[3840,2160,27]]],["nvidia tesla p100 pcie 16gb","100",0,[[1920,1080,60]]],["nvidia tesla p100-pcie-16gb","100",0,[[1920,1080,103]]],["nvidia tesla p4","4",0,[[1680,1050,60]]],["nvidia tesla p40","40",0,[[1546,877,62],[1920,1200,60]]],["nvidia tesla t4","4",0,[[1440,900,33],[1920,1080,60]]],["nvidia tesla v100-pcie-16gb","100",0,[[1920,997,57]]],["nvidia tesla v100-pcie-32gb","100",0,[[1920,1080,57]]],["nvidia tesla v100-sxm2-16gb","100",0,[[1920,1080,60]]],["nvidia tesla v100-sxm2-32gb","100",0,[[1920,1080,1],[2560,1440,60]]],["nvidia titan rtx","rtx",0,[[2560,1440,60],[3840,2160,680]]],["nvidia titan v","v",0,[[2560,1440,622],[3840,2160,60]]],["nvidia titan x","x",0,[[2560,1080,60],[3840,1600,75],[3840,2160,339]]],["nvidia titan xp","xp",0,[[1920,1200,60],[2560,1440,60],[3440,1440,105]]],["nvidia titan xp collectors","xp",0,[[1920,1080,60],[2560,1440,893],[5120,2880,60]]],["nvidia toshiba geforce gt 525m","525",0,[[1366,768,33]]],["nvidia tu102 [titan rtx]","102",0,[[3840,2160,60]]],["nvidia tu107","107",0,[[1920,1080,312]]],["nvidia tu117m","117",0,[[1920,1080,337]]],["nvidia unknown","",0,[[1920,1080,60]]],["nvidia zotac geforce gt 430","430",0,[[1600,900,32]]],["nvidia zotac geforce gt 610","610",0,[[1920,1080,15]]],["nvidia zotac geforce gt 630","630",0,[[1360,768,46]]],["nvidia zotac geforce gt 740","740",0,[[1280,1024,118]]],["nvidia zotac geforce gtx 460","460",0,[[1920,1080,59]]],["nvidia zotac geforce gtx 550 ti","550",0,[[1920,1080,42]]],["nvidia zotac geforce gtx 560","560",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 560 ti","560",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 580","580",0,[[1920,1080,48]]],["nvidia zotac geforce gtx 650","650",0,[[1920,1080,44]]],["nvidia zotac geforce gtx 650 ti","650",0,[[1920,1080,58]]],["nvidia zotac geforce gtx 660","660",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 680","680",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 750","750",0,[[1680,1050,114],[1920,1080,60]]],["nvidia zotac geforce gtx 760","760",0,[[1920,1080,101]]],["nvidia zotac geforce gtx 770","770",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 780","780",0,[[1920,1080,60]]],["nvidia zotac geforce gtx 960","960",0,[[2048,1152,60]]]]')},145:t=>{"use strict";
106t.exports=JSON.parse('["4.0.8",["amd [amd/ati] fiji [radeon r9 fury / nano series]","9",0,[[1920,1200,162]]],["amd asus amd radeon r9-990x","9",0,[[1920,1080,60]]],["amd asus radeon r7 250","7",0,[[800,638,60]]],["amd asus radeon r7 260x","7",0,[[2560,1080,65]]],["amd asus radeon r9 270x","9",0,[[1024,768,85],[1920,1080,60]]],["amd asus radeon r9 280","9",0,[[1920,1080,60]]],["amd asus radeon rx 460","460",0,[[1360,768,104]]],["amd asus radeon rx 470","470",0,[[1920,1080,60]]],["amd asus radeon rx 480","480",0,[[1920,1080,124]]],["amd asus radeon rx 550","550",0,[[1440,900,60],[1920,1080,49]]],["amd asus radeon rx 5500 xt","5500",0,[[1920,1080,325]]],["amd asus radeon rx 560","560",0,[[1360,768,60],[1920,1080,85]]],["amd asus radeon rx 570","570",0,[[1600,900,202],[1920,1080,60]]],["amd asus radeon rx 5700","5700",0,[[1920,1080,327]]],["amd asus radeon rx 5700 xt","5700",0,[[1920,1080,224],[2560,1440,60]]],["amd asus radeon rx 580","580",0,[[1920,1080,177],[2560,1080,60]]],["amd asus radeon rx vega","rx",0,[[2560,1440,117]]],["amd ati mobility radeon hd 5870","5870",0,[[1920,1200,19]]],["amd baffin amd radeon rx 560","560",0,[[1920,1080,60]]],["amd ellesmere radeon rx 570","570",0,[[1920,1080,60]]],["amd embedded radeon e9171","9171",0,[[3840,2160,26]]],["amd embedded radeon e9173","9173",0,[[3840,2160,16]]],["amd gigabyte radeon rx 580","580",0,[[1920,1080,60]]],["amd madison [mobility radeon hd 5650 / 6530m/6550m]","5650",0,[[1366,768,43]]],["amd mobility radeon hd 4250","4250",0,[[963,722,26]]],["amd mobility radeon hd 5000","5000",0,[[1366,768,47]]],["amd mobility radeon hd 5400","5400",0,[[1366,768,24]]],["amd mobility radeon hd 5430","5430",0,[[1600,900,15],[1920,1080,60]]],["amd mobility radeon hd 5470","5470",0,[[1366,768,24]]],["amd mobility radeon hd 5570","5570",0,[[1920,1080,27]]],["amd mobility radeon hd 5730 / 6570m","5730",0,[[1366,768,58]]],["amd mobility radeon hd 5850","5850",0,[[1600,900,55]]],["amd mobility radeon hd 5870","5870",0,[[1600,900,64],[1920,1200,53]]],["amd park [mobility radeon hd 5430","5430",0,[[1280,720,11]]],["amd pitcairn pro radeon hd 7850","7850",0,[[1920,1080,60]]],["amd powercolor radeon r9 280","9",0,[[1920,1080,60]]],["amd radeon","",0,[[1920,1080,299],[3440,1440,60]]],["amd radeon 500","500",0,[[1920,1080,73]]],["amd radeon 520","520",0,[[1920,1080,35],[2560,1440,29]]],["amd radeon 530","530",0,[[1366,768,60],[1920,1080,30]]],["amd radeon 535","535",0,[[1920,1080,35]]],["amd radeon 535dx","535",0,[[1366,768,31],[1920,1080,37]]],["amd radeon 540","540",0,[[1920,1080,38]]],["amd radeon 540 / rx 540x/550/550x","540",0,[[2560,1440,88]]],["amd radeon 540x","540",0,[[1920,1080,59]]],["amd radeon 550","550",0,[[1920,1080,115]]],["amd radeon 550x","550",0,[[1920,1080,28]]],["amd radeon 610","610",0,[[1920,1080,29]]],["amd radeon 620","620",0,[[1920,1080,18]]],["amd radeon 625","625",0,[[1366,768,55],[1920,1080,47]]],["amd radeon 630","630",0,[[1920,1080,29]]],["amd radeon 6600m and 6700m","6600",0,[[1366,768,36],[1440,900,60]]],["amd radeon 6800","6800",0,[[3440,1440,100]]],["amd radeon 7500m/7600m","7500",0,[[1366,768,37]]],["amd radeon 7950 x2","7950",0,[[2560,1440,174]]],["amd radeon d700","700",0,[[2560,1440,120]]],["amd radeon e6460","6460",0,[[1600,1200,13]]],["amd radeon e6760","6760",0,[[1200,900,54],[1920,1080,42]]],["amd radeon e8860","8860",0,[[1920,1200,27],[2560,1374,88]]],["amd radeon e8870","8870",0,[[1920,1080,81]]],["amd radeon e8870mxm","8870",0,[[1920,1080,60]]],["amd radeon e9260","9260",0,[[1680,1050,60],[3840,2160,38]]],["amd radeon e9550","9550",0,[[1680,1050,60],[3840,2160,58]]],["amd radeon embedded e9560","9560",0,[[1920,1200,60]]],["amd radeon fury","",0,[[1920,1080,60]]],["amd radeon fury x","x",0,[[1920,1080,60],[2560,1440,144]]],["amd radeon hd - firepro d300","300",0,[[1920,1080,60]]],["amd radeon hd - firepro d300 opengl engine","300",0,[[1920,1080,60],[2560,1440,59]]],["amd radeon hd - firepro d500 opengl engine","500",0,[[1920,1080,60],[2560,1440,59]]],["amd radeon hd - firepro d700 opengl engine","700",0,[[3840,2160,52]]],["amd radeon hd 2600 xt","2600",1,[[2560,1600,-1]]],["amd radeon hd 5000","5000",0,[[1920,1080,8]]],["amd radeon hd 5400","5400",0,[[1920,1080,12]]],["amd radeon hd 5450","5450",0,[[1920,1080,13]]],["amd radeon hd 5470","5470",0,[[1280,1024,16]]],["amd radeon hd 5500","5500",0,[[1920,1080,27]]],["amd radeon hd 5570","5570",0,[[1920,1080,60],[2048,1152,31]]],["amd radeon hd 5600","5600",0,[[1920,1080,56]]],["amd radeon hd 5650","5650",0,[[1366,768,53]]],["amd radeon hd 5670","5670",1,[[1920,1080,-1],[2560,1440,-1]]],["amd radeon hd 5670 opengl engine","5670",1,[[2560,1440,-1]]],["amd radeon hd 5700","5700",0,[[1920,1080,59]]],["amd radeon hd 5730","5730",0,[[1366,768,46],[1680,1050,40]]],["amd radeon hd 5750","5750",1,[[1920,1080,-1],[1920,1200,-1],[2560,1440,-1]]],["amd radeon hd 5750 opengl engine","5750",1,[[2560,1440,-1]]],["amd radeon hd 5770","5770",0,[[1776,1000,43],[1920,1080,59]]],["amd radeon hd 5800","5800",0,[[1366,768,60],[1920,1200,102]]],["amd radeon hd 5850","5850",0,[[1920,1080,60]]],["amd radeon hd 5870","5870",0,[[1280,960,75],[1920,1080,60],[2048,1280,60]]],["amd radeon hd 5870m","5870",0,[[2560,1080,31]]],["amd radeon hd 5970","5970",0,[[1360,768,60],[1920,1080,60]]],["amd radeon hd 6230","6230",0,[[1366,768,13]]],["amd radeon hd 6250","6250",0,[[1280,800,8],[1366,768,8]]],["amd radeon hd 6290","6290",1,[[1366,768,-1]]],["amd radeon hd 6300m","6300",1,[[1366,768,-1]]],["amd radeon hd 6310","6310",1,[[1366,768,-1]]],["amd radeon hd 6320","6320",1,[[1366,768,-1]]],["amd radeon hd 6350","6350",0,[[1280,1024,18],[1920,1080,14]]],["amd radeon hd 6370d","6370",0,[[1920,1080,14]]],["amd radeon hd 6370m","6370",0,[[1366,768,25]]],["amd radeon hd 6380g","6380",0,[[1366,768,19]]],["amd radeon hd 6400","6400",0,[[1920,1080,13]]],["amd radeon hd 6400m","6400",0,[[1366,768,28]]],["amd radeon hd 6400m/7400m","6400",0,[[1366,768,28]]],["amd radeon hd 6410d","6410",0,[[1920,1080,11]]],["amd radeon hd 6450","6450",0,[[1920,1080,14]]],["amd radeon hd 6450 / r5 230","6450",0,[[1440,900,12]]],["amd radeon hd 6450 230","6450",0,[[1920,1080,15]]],["amd radeon hd 6470m","6470",0,[[1366,768,27],[1600,900,21]]],["amd radeon hd 6470m/7400m","6470",0,[[1366,768,44]]],["amd radeon hd 6480g","6480",0,[[1280,768,19],[1366,768,27],[1600,900,18]]],["amd radeon hd 6490m","6490",1,[[1366,768,-1],[1440,900,-1],[1680,1050,-1]]],["amd radeon hd 6500","6500",0,[[1920,1080,25]]],["amd radeon hd 6500m/5600","6500",0,[[1920,1080,27]]],["amd radeon hd 6510","6510",0,[[1600,900,32]]],["amd radeon hd 6520g","6520",0,[[1366,768,21],[1600,900,20]]],["amd radeon hd 6530d","6530",0,[[1366,768,31],[1440,900,36],[1920,1080,24]]],["amd radeon hd 6540","6540",0,[[1600,1200,13]]],["amd radeon hd 6550d","6550",0,[[1920,1080,28]]],["amd radeon hd 6570","6570",0,[[1920,1080,52],[2560,1440,17]]],["amd radeon hd 6620g","6620",0,[[1360,768,43],[1366,768,28]]],["amd radeon hd 6630m","6630",1,[[1366,768,-1],[1600,900,-1],[1920,1080,-1]]],["amd radeon hd 6630m/6650m/6750m/7670m/7690m","6630",1,[[1366,768,-1],[1920,1080,-1]]],["amd radeon hd 6650m","6650",0,[[1366,768,51],[1600,900,31]]],["amd radeon hd 6670","6670",0,[[1920,1080,55]]],["amd radeon hd 6700","6700",0,[[1920,1080,56]]],["amd radeon hd 6700 green","6700",0,[[1360,768,89]]],["amd radeon hd 6700m/7700m/7900m","6700",0,[[1366,768,59]]],["amd radeon hd 6730m/6770m","6730",0,[[1366,768,58],[1920,1080,46]]],["amd radeon hd 6730m/6770m/7690m xt","6730",0,[[1920,1080,48]]],["amd radeon hd 6750","6750",0,[[1440,900,72],[1920,1080,60]]],["amd radeon hd 6750m","6750",1,[[1440,900,-1],[1920,1080,-1],[1920,1200,-1]]],["amd radeon hd 6770","6770",0,[[1920,1080,60]]],["amd radeon hd 6770m","6770",1,[[1440,900,-1],[2560,1440,-1]]],["amd radeon hd 6770m opengl engine","6770",1,[[2560,1440,-1]]],["amd radeon hd 6790","6790",0,[[1920,1080,59]]],["amd radeon hd 6800","6800",0,[[1280,1024,89],[1920,1080,60]]],["amd radeon hd 6800m","6800",0,[[1600,900,18],[1920,1080,40]]],["amd radeon hd 6850","6850",0,[[1920,1080,59],[2560,1600,54]]],["amd radeon hd 6870","6870",0,[[1920,1080,60],[2560,1440,59]]],["amd radeon hd 6900","6900",0,[[1920,1080,60]]],["amd radeon hd 6900m","6900",0,[[1920,1080,60]]],["amd radeon hd 6950","6950",0,[[1680,1050,60],[1920,1080,41]]],["amd radeon hd 6970","6970",0,[[1920,1080,60]]],["amd radeon hd 6970m","6970",1,[[2560,1440,-1]]],["amd radeon hd 6970m opengl engine","6970",1,[[2560,1440,-1]]],["amd radeon hd 6990","6990",0,[[1920,1080,60]]],["amd radeon hd 7000","7000",0,[[1920,1080,24]]],["amd radeon hd 7290","7290",0,[[1366,768,9]]],["amd radeon hd 7310","7310",0,[[1366,768,14]]],["amd radeon hd 7340","7340",0,[[1366,768,17],[1920,1080,10]]],["amd radeon hd 7340g","7340",0,[[1366,768,15]]],["amd radeon hd 7340m","7340",0,[[1366,768,15]]],["amd radeon hd 7350","7350",0,[[1920,1080,13]]],["amd radeon hd 7400","7400",0,[[1920,1080,18]]],["amd radeon hd 7400g","7400",0,[[963,768,31]]],["amd radeon hd 7400m","7400",0,[[1366,768,44]]],["amd radeon hd 7420g","7420",0,[[1366,768,28],[1600,900,26]]],["amd radeon hd 7450","7450",0,[[1920,1080,15]]],["amd radeon hd 7450a","7450",0,[[1920,1080,15]]],["amd radeon hd 7450m","7450",0,[[1366,768,30]]],["amd radeon hd 7470","7470",0,[[1680,1050,22],[1920,1080,144]]],["amd radeon hd 7470m","7470",0,[[1366,768,31],[1600,900,23]]],["amd radeon hd 7480d","7480",0,[[1280,1024,25],[1920,1080,24],[1920,1200,18]]],["amd radeon hd 7500","7500",0,[[1366,696,49],[1366,768,49]]],["amd radeon hd 7500g","7500",0,[[1366,768,26]]],["amd radeon hd 7500m/7600m","7500",0,[[1366,768,46]]],["amd radeon hd 7520g","7520",0,[[1366,768,33]]],["amd radeon hd 7520g + hd 7400m dual","7520",0,[[1366,768,34]]],["amd radeon hd 7520g + hd 7600m dual","7520",0,[[1366,768,31],[1600,900,41]]],["amd radeon hd 7540d","7540",0,[[1024,768,55],[1280,1024,44],[1920,1080,22]]],["amd radeon hd 7540d + hd 6670 dual","7540",0,[[1280,1024,36]]],["amd radeon hd 7550m/7650m","7550",0,[[1366,768,57]]],["amd radeon hd 7560d","7560",0,[[1920,1080,34]]],["amd radeon hd 7560d + hd 6570 dual","7560",0,[[1680,1050,44]]],["amd radeon hd 7560d + hd 6670 dual","7560",0,[[800,638,60]]],["amd radeon hd 7570","7570",0,[[1024,768,72],[1920,1080,52]]],["amd radeon hd 7570m","7570",0,[[1366,768,35]]],["amd radeon hd 7570m/hd 7670m","7570",0,[[1366,768,50],[1600,900,29]]],["amd radeon hd 7600","7600",0,[[1920,1080,60]]],["amd radeon hd 7600a","7600",0,[[1920,1080,28]]],["amd radeon hd 7600g","7600",0,[[1366,768,29]]],["amd radeon hd 7600g + 7500m/7600m dual","7600",0,[[1366,768,19]]],["amd radeon hd 7600g + hd 8670m dual","7600",0,[[1366,768,29]]],["amd radeon hd 7600g + hd dual","7600",0,[[1366,768,20]]],["amd radeon hd 7600m","7600",0,[[1366,768,56]]],["amd radeon hd 7600m/7700m","7600",0,[[1366,768,31]]],["amd radeon hd 7610m","7610",0,[[1366,768,43]]],["amd radeon hd 7620g","7620",0,[[1366,768,22],[1920,1080,19]]],["amd radeon hd 7640g","7640",0,[[1366,768,38]]],["amd radeon hd 7640g + 7470m dual","7640",0,[[1366,768,32]]],["amd radeon hd 7640g + 7600m dual","7640",0,[[1366,768,23]]],["amd radeon hd 7640g + 7670m dual","7640",0,[[1600,900,15]]],["amd radeon hd 7640g + 8500m dual","7640",0,[[1366,768,35]]],["amd radeon hd 7640g + hd 7400m dual","7640",0,[[1366,768,37]]],["amd radeon hd 7640g + hd 7500 dual","7640",0,[[1366,768,35]]],["amd radeon hd 7640g + hd 7670m dual","7640",0,[[1366,768,34]]],["amd radeon hd 7640g + hd 8500m dual","7640",0,[[1366,768,40]]],["amd radeon hd 7640g + hd 8570m dual","7640",0,[[1366,768,31]]],["amd radeon hd 7650a","7650",0,[[1680,1050,43],[1920,1080,15]]],["amd radeon hd 7650m","7650",0,[[1366,768,41],[1600,900,45]]],["amd radeon hd 7660d","7660",0,[[1680,1050,40],[1920,1008,60],[1920,1080,38]]],["amd radeon hd 7660d + hd 6570 dual","7660",0,[[1200,900,32]]],["amd radeon hd 7660d + hd 6670 dual","7660",0,[[1360,768,57],[1920,1080,53]]],["amd radeon hd 7660g","7660",0,[[1366,768,44],[1600,900,41],[1920,1080,34],[1920,1200,27]]],["amd radeon hd 7660g + 7600m dual","7660",0,[[1366,768,53],[1600,900,45]]],["amd radeon hd 7660g + 7670m dual","7660",0,[[1366,768,52]]],["amd radeon hd 7660g + 8670m dual","7660",0,[[1600,900,46]]],["amd radeon hd 7660g + hd 7600m dual","7660",0,[[1366,768,50]]],["amd radeon hd 7660g + hd 7670m dual","7660",0,[[1366,768,35]]],["amd radeon hd 7660g + hd 8600m dual","7660",0,[[1600,900,29]]],["amd radeon hd 7670","7670",0,[[1920,1080,39]]],["amd radeon hd 7670m","7670",0,[[1366,768,49],[1920,1080,36]]],["amd radeon hd 7700","7700",0,[[1400,1050,45],[1920,1080,60]]],["amd radeon hd 7700m","7700",0,[[1920,1080,54]]],["amd radeon hd 7730m","7730",0,[[1920,1080,57]]],["amd radeon hd 7750","7750",0,[[1280,1024,60],[1600,900,60],[1400,1050,98],[1920,1080,60],[3840,2160,23]]],["amd radeon hd 7750 / r7 250e","7750",0,[[2560,1080,69]]],["amd radeon hd 7750m","7750",0,[[1680,1050,57]]],["amd radeon hd 7770","7770",0,[[1920,1080,60]]],["amd radeon hd 7770 / r7 250x","7770",0,[[1680,1050,78]]],["amd radeon hd 7770 ghz","7770",0,[[1920,1080,78]]],["amd radeon hd 7790","7790",0,[[1920,1080,16]]],["amd radeon hd 7790 / r7 360 / r9 260/360","7790",0,[[1280,1024,131]]],["amd radeon hd 7800","7800",0,[[1920,1080,60]]],["amd radeon hd 7800m","7800",0,[[1920,1080,57]]],["amd radeon hd 7850","7850",0,[[1920,1080,60]]],["amd radeon hd 7850 / r7 265 / r9 270 1024sp","7850",0,[[1280,1024,87]]],["amd radeon hd 7870","7870",0,[[1920,1080,120],[2560,1440,60],[2560,1600,114],[3840,2160,30]]],["amd radeon hd 7870 ghz","7870",0,[[1920,1080,75]]],["amd radeon hd 7870 xt","7870",0,[[1920,1080,57],[3840,2160,53]]],["amd radeon hd 7870m","7870",0,[[1920,1080,22],[2732,1536,40]]],["amd radeon hd 7900","7900",0,[[2560,1600,59]]],["amd radeon hd 7950","7950",0,[[1920,1080,50]]],["amd radeon hd 7950 / r9 280","7950",0,[[1920,1080,59]]],["amd radeon hd 7950 oem / r9 280","7950",0,[[1920,1080,60]]],["amd radeon hd 7970","7970",0,[[1920,1080,60]]],["amd radeon hd 7970 / r9 280x","7970",0,[[1920,1080,193]]],["amd radeon hd 7970m","7970",0,[[1366,768,60],[1920,1080,60]]],["amd radeon hd 7970x/8970 280x","7970",0,[[1920,1080,60]]],["amd radeon hd 7990","7990",0,[[1920,1080,60],[5120,2880,63]]],["amd radeon hd 7xxx","7",0,[[1920,1080,60]]],["amd radeon hd 8180","8180",0,[[1366,768,10]]],["amd radeon hd 8200 / r3","8200",0,[[1366,768,21],[1600,900,13],[1680,1050,13]]],["amd radeon hd 8210","8210",0,[[1366,768,18]]],["amd radeon hd 8240","8240",0,[[1600,900,17]]],["amd radeon hd 8240 / r3","8240",0,[[1366,768,14]]],["amd radeon hd 8250","8250",0,[[1366,768,14],[1920,1200,10]]],["amd radeon hd 8280","8280",0,[[1600,900,60]]],["amd radeon hd 8280 / r3","8280",0,[[1366,768,22]]],["amd radeon hd 8280e","8280",0,[[2880,1620,6]]],["amd radeon hd 8330","8330",0,[[1366,768,24]]],["amd radeon hd 8350","8350",0,[[1920,1080,57]]],["amd radeon hd 8350g","8350",0,[[1366,768,18]]],["amd radeon hd 8370d","8370",0,[[1366,768,60],[1280,1024,26],[1920,1080,22]]],["amd radeon hd 8400","8400",0,[[1366,768,30],[1920,1080,16]]],["amd radeon hd 8400 / r3","8400",0,[[1360,768,19],[1366,768,22],[1920,1080,12]]],["amd radeon hd 8400e","8400",0,[[1680,1050,17],[1920,1080,16],[1920,1200,14]]],["amd radeon hd 8410g","8410",0,[[1366,768,32]]],["amd radeon hd 8450g","8450",0,[[1366,768,23]]],["amd radeon hd 8450g + hd 8750m dual","8450",0,[[1366,768,21]]],["amd radeon hd 8470","8470",0,[[1920,1080,17]]],["amd radeon hd 8470 + 7660d dual","8470",0,[[1920,1080,60]]],["amd radeon hd 8470d","8470",0,[[1280,1024,44],[1920,1080,21]]],["amd radeon hd 8470d + hd 6450 dual","8470",0,[[1600,900,37]]],["amd radeon hd 8490","8490",0,[[1920,1080,18],[1920,1200,20]]],["amd radeon hd 8500m","8500",0,[[1366,768,41],[1920,1080,19]]],["amd radeon hd 8500m/8700m","8500",0,[[1920,1080,30]]],["amd radeon hd 8510g","8510",0,[[1366,768,29],[1920,1080,17]]],["amd radeon hd 8550","8550",0,[[1920,1080,25]]],["amd radeon hd 8550g","8550",0,[[1366,768,34],[1600,900,41],[1920,1080,34]]],["amd radeon hd 8550g + 8500m dual","8550",0,[[1366,768,42]]],["amd radeon hd 8550g + 8600 dual","8550",0,[[1920,1080,27]]],["amd radeon hd 8550g + hd 8570m dual","8550",0,[[1366,768,32]]],["amd radeon hd 8550g + hd 8600 dual","8550",0,[[1366,768,60]]],["amd radeon hd 8550g + hd 8750m dual","8550",0,[[1366,768,37]]],["amd radeon hd 8550g + r5 m23
1060 dual","8550",0,[[1366,768,29]]],["amd radeon hd 8570","8570",0,[[1280,1024,60],[1680,1050,54],[1920,1080,50]]],["amd radeon hd 8570 / r5 430 / r7 240 / radeon 520","8570",0,[[1920,1080,25]]],["amd radeon hd 8570d","8570",0,[[1920,1080,16]]],["amd radeon hd 8570d + r7 240 dual","8570",0,[[1920,1080,45]]],["amd radeon hd 8570m","8570",0,[[1366,768,40]]],["amd radeon hd 8600","8600",0,[[1366,768,41]]],["amd radeon hd 8600m","8600",0,[[1366,768,42],[1920,1080,14]]],["amd radeon hd 8610g","8610",0,[[1366,768,31],[1920,1080,16]]],["amd radeon hd 8610g + 8600m dual","8610",0,[[1366,768,22]]],["amd radeon hd 8610g + hd 8600m dual","8610",0,[[1366,768,41]]],["amd radeon hd 8610g + hd 8670m dual","8610",0,[[1366,768,33]]],["amd radeon hd 8650g","8650",0,[[1360,768,44],[1366,768,44]]],["amd radeon hd 8650g + 8500m dual","8650",0,[[1366,768,35]]],["amd radeon hd 8650g + 8600 dual","8650",0,[[1920,1080,38]]],["amd radeon hd 8650g + 8600m dual","8650",0,[[1366,768,21]]],["amd radeon hd 8650g + 8670m dual","8650",0,[[1366,768,66]]],["amd radeon hd 8650g + 8750m dual","8650",0,[[1920,1080,28]]],["amd radeon hd 8650g + hd 7600m dual","8650",0,[[1366,768,36]]],["amd radeon hd 8650g + hd 8500m dual","8650",0,[[1366,768,23]]],["amd radeon hd 8650g + hd 8570m dual","8650",0,[[1366,768,36]]],["amd radeon hd 8650g + hd 8600m dual","8650",0,[[1366,768,46],[1600,900,29]]],["amd radeon hd 8650g + hd 8750m dual","8650",0,[[1366,768,36]]],["amd radeon hd 8650g + r5 m200 dual","8650",0,[[1366,768,35]]],["amd radeon hd 8670 / r7 250","8670",0,[[1024,768,1]]],["amd radeon hd 8670a/8670m/8690m","8670",0,[[1366,768,47]]],["amd radeon hd 8670a/8670m/8750m","8670",0,[[1366,768,60]]],["amd radeon hd 8670d","8670",0,[[1024,768,45],[1280,1024,69],[1920,1080,38]]],["amd radeon hd 8670d + 7700 dual","8670",0,[[1680,1050,58]]],["amd radeon hd 8670d + hd 6670 dual","8670",0,[[1680,1050,33]]],["amd radeon hd 8670d + r5 200 dual","8670",0,[[2560,1080,14]]],["amd radeon hd 8670d + r7 200 dual","8670",0,[[1920,1080,37]]],["amd radeon hd 8670m","8670",0,[[1366,768,41]]],["amd radeon hd 8690a","8690",0,[[1920,1080,31]]],["amd radeon hd 8690m","8690",0,[[1600,900,35]]],["amd radeon hd 8700m","8700",0,[[1366,768,60]]],["amd radeon hd 8730m","8730",0,[[1366,768,59]]],["amd radeon hd 8750m","8750",0,[[1366,768,60]]],["amd radeon hd 8770","8770",0,[[1920,1080,111]]],["amd radeon hd 8790m","8790",0,[[1600,900,78],[1920,1080,60]]],["amd radeon hd 8800m","8800",0,[[1920,1080,60],[2880,1800,45]]],["amd radeon hd 8830m","8830",0,[[1920,1080,82]]],["amd radeon hd 8850m","8850",0,[[1366,768,45]]],["amd radeon hd 8870m","8870",0,[[1280,1024,60],[1600,900,60]]],["amd radeon hd 8950","8950",0,[[1920,1080,60],[1920,1200,59]]],["amd radeon hd 8970","8970",0,[[2560,1600,60]]],["amd radeon hd 8970m","8970",0,[[1920,1080,146],[1920,1200,60]]],["amd radeon hd 8xxx","8",0,[[1920,1080,120],[2560,1440,58]]],["amd radeon hd5450","5450",0,[[1280,720,24]]],["amd radeon hd6870","6870",0,[[1920,1080,60]]],["amd radeon hd7970m","7970",0,[[2560,1440,116]]],["amd radeon hd8530m","8530",0,[[1366,768,40]]],["amd radeon hd8730","8730",0,[[1680,1050,42]]],["amd radeon hd8970m","8970",0,[[1920,1080,74]]],["amd radeon hybrid","",0,[[1366,768,27]]],["amd radeon infoshock rx 460","460",0,[[1360,768,102]]],["amd radeon instinct mi25","25",0,[[1920,1200,26]]],["amd radeon instinct mi25 mxgpu","25",0,[[1920,1080,20],[1920,1200,32]]],["amd radeon m535dx","535",0,[[1366,768,58]]],["amd radeon navi14","14",0,[[3840,2160,60]]],["amd radeon polaris","",0,[[3840,2160,60],[5120,2880,44]]],["amd radeon polaris 10","10",0,[[1920,1200,60]]],["amd radeon pro","pro",0,[[1920,1080,114]]],["amd radeon pro 270x","270",0,[[2560,1440,74]]],["amd radeon pro 450","450",0,[[1920,1080,30],[2880,1800,43],[3360,2100,36],[5120,2880,30]]],["amd radeon pro 450 opengl engine","450",0,[[1920,1200,60]]],["amd radeon pro 455","455",0,[[2879,1800,54],[2880,1800,48],[3360,2100,37]]],["amd radeon pro 455 opengl engine","455",0,[[3360,2100,36]]],["amd radeon pro 460","460",0,[[2880,1800,50],[3360,2100,42]]],["amd radeon pro 460 opengl engine","460",0,[[5760,3240,15]]],["amd radeon pro 470","470",0,[[6016,3384,49]]],["amd radeon pro 480","480",0,[[1920,1080,60]]],["amd radeon pro 5300","5300",0,[[5120,2880,60]]],["amd radeon pro 5300m","5300",0,[[1920,1080,214],[3584,2240,130]]],["amd radeon pro 5500 xt","5500",0,[[5120,2880,51]]],["amd radeon pro 5500m","5500",0,[[3072,1920,60],[3584,2240,139]]],["amd radeon pro 555","555",0,[[2879,1800,54],[2880,1800,36],[3360,2100,40]]],["amd radeon pro 555x","555",0,[[2880,1800,42],[3360,2100,39]]],["amd radeon pro 560","560",0,[[2879,1800,56],[2880,1800,56],[3360,2100,42]]],["amd radeon pro 5600m","5600",0,[[3072,1920,60],[3584,2240,60]]],["amd radeon pro 560x","560",0,[[2879,1800,59],[2880,1800,71],[3360,2100,43]]],["amd radeon pro 570","570",0,[[5120,2880,48]]],["amd radeon pro 570 opengl engine","570",0,[[5120,2880,46]]],["amd radeon pro 5700","5700",0,[[5120,2880,60]]],["amd radeon pro 5700 xt","5700",0,[[5120,2880,60]]],["amd radeon pro 570x","570",0,[[5120,2880,50]]],["amd radeon pro 575","575",0,[[4096,2304,60],[5120,2880,50]]],["amd radeon pro 575 opengl engine","575",0,[[5120,2880,48]]],["amd radeon pro 575
106x","575",0,[[5120,2880,56]]],["amd radeon pro 580","580",0,[[5120,2880,54]]],["amd radeon pro 580 opengl engine","580",0,[[5120,2880,50]]],["amd radeon pro 580x","580",0,[[5120,2880,52]]],["amd radeon pro duo","pro",0,[[1920,1080,234],[1800,1350,59],[3840,2160,82],[4096,2160,60]]],["amd radeon pro rx 560","560",0,[[2560,1080,60]]],["amd radeon pro ssg","pro",0,[[3440,1440,125]]],["amd radeon pro v340","340",0,[[1920,1080,112]]],["amd radeon pro v520 mxgpu","520",0,[[1920,1080,271]]],["amd radeon pro v7350x2","7350",0,[[1920,1080,60]]],["amd radeon pro vega 16","16",0,[[2879,1800,60],[3360,2100,60]]],["amd radeon pro vega 20","20",0,[[2880,1800,120],[3360,2100,121],[3840,2160,30]]],["amd radeon pro vega 48","48",0,[[5120,2880,86]]],["amd radeon pro vega 56","56",0,[[1920,1080,60],[5120,2880,60]]],["amd radeon pro vega 56 opengl engine","56",0,[[5120,2880,60]]],["amd radeon pro vega 64","64",0,[[5120,2880,60]]],["amd radeon pro vega 64 opengl engine","64",0,[[5120,2880,60]]],["amd radeon pro vega 64x","64",0,[[2560,1440,206],[4096,2304,60],[5120,2880,60]]],["amd radeon pro vega ii","proii",0,[[3840,1600,60],[5120,2880,60]]],["amd radeon pro vega ii duo","proii",0,[[2560,1440,239],[5120,2880,60]]],["amd radeon pro w5500","5500",0,[[1920,1080,195],[3840,2160,59],[7680,3240,56]]],["amd radeon pro w5500m","5500",0,[[1920,1080,60]]],["amd radeon pro w5500x","5500",0,[[1920,1200,60]]],["amd radeon pro w5700","5700",0,[[1680,1050,253],[5120,1440,120],[3840,2160,60]]],["amd radeon pro w5700x","5700",0,[[3840,2160,60]]],["amd radeon pro w6600","6600",0,[[1920,1200,60],[3840,2160,166]]],["amd radeon pro w6600m","6600",0,[[1920,1080,60]]],["amd radeon pro w6800","6800",0,[[1920,1080,60],[3840,2160,237]]],["amd radeon pro w6800x","6800",0,[[6016,3384,60]]],["amd radeon pro w6800x duo","6800",0,[[3840,1600,60],[5120,2880,45]]],["amd radeon pro w6900x","6900",0,[[3840,2160,60]]],["amd radeon pro wx","pro",0,[[2560,1080,69]]],["amd radeon pro wx 2100","2100",0,[[1280,1024,145],[1920,1080,60]]],["amd radeon pro wx 3100","3100",0,[[1919,1080,58],[1920,1080,123],[2560,1440,82]]],["amd radeon pro wx 3200","3200",0,[[2560,1440,92]]],["amd radeon pro wx 4100","4100",0,[[1920,1080,60],[1920,1200,60],[3840,2160,30],[5120,2880,18]]],["amd radeon pro wx 4130","4130",0,[[1920,1080,60],[3840,2160,30]]],["amd radeon pro wx 4150","4150",0,[[1920,1080,56],[3840,2160,37],[4096,2160,34]]],["amd radeon pro wx 5100","5100",0,[[1920,1080,60],[2560,1440,91],[3840,2160,55]]],["amd radeon pro wx 5100 opengl engine","5100",0,[[2560,1440,60]]],["amd radeon pro wx 7100","7100",0,[[1920,1080,122],[2560,1080,58],[3840,2160,60],[5120,2880,60]]],["amd radeon pro wx 7100 mobile","7100",0,[[2560,1440,60]]],["amd radeon pro wx 7100 opengl engine","7100",0,[[3840,2160,60]]],["amd radeon pro wx 8200","8200",0,[[3440,1440,124]]],["amd radeon pro wx 9100","9100",0,[[1920,1080,60],[4096,2160,101]]],["amd radeon pro wx 9100 opengl engine","9100",0,[[1920,1080,60]]],["amd radeon pro wx vega m gl","prom",0,[[3840,2160,14]]],["amd radeon pro wx3200","3200",0,[[1920,1080,55]]],["amd radeon pro wx9100","9100",0,[[2560,1440,60]]],["amd radeon r2","2",0,[[1366,768,13],[1600,900,14]]],["amd radeon r2e","2",0,[[1366,768,16],[1920,1080,45],[3840,2160,4]]],["amd radeon r3","3",0,[[1366,768,17],[1920,1080,15]]],["amd radeon r4","4",0,[[1366,768,19],[1920,1080,13]]],["amd radeon r4e","4",0,[[3840,2160,6]]],["amd radeon r5","5",0,[[1024,768,38],[1360,768,25],[1366,768,21],[1280,1024,33],[1920,1080,14],[3200,1800,7]]],["amd radeon r5 220","5",0,[[1366,768,19],[1920,1080,12]]],["amd radeon r5 230","5",0,[[1920,1080,21]]],["amd radeon r5 235","5",0,[[1920,1080,17]]],["amd radeon r5 240","5",0,[[1280,1024,34],[1920,1080,24]]],["amd radeon r5 340","5",0,[[1920,1080,27]]],["amd radeon r5 340x","5",0,[[1920,1080,31]]],["amd radeon r5 430","5",0,[[1280,1024,31],[1680,1050,54],[1920,1080,54]]],["amd radeon r5 435","5",0,[[1920,1080,30]]],["amd radeon r5 m200","5",0,[[1600,900,45],[1920,1080,20]]],["amd radeon r5 m200 / hd 8500m","5",0,[[1366,768,31],[1920,1080,24]]],["amd radeon r5 m230","5",0,[[1366,768,37]]],["amd radeon r5 m240","5",0,[[1366,768,42],[1920,1080,23]]],["amd radeon r5 m255","5",0,[[1366,768,59],[1600,900,33]]],["amd radeon r5 m315","5",0,[[1366,768,45]]],["amd radeon r5 m320","5",0,[[1920,1080,19]]],["amd radeon r5 m330","5",0,[[1366,768,27],[1920,1080,26]]],["amd radeon r5 m335","5",0,[[1366,768,55],[1920,1080,19]]],["amd radeon r5 m420","5",0,[[1366,768,49]]],["amd radeon r5 m430","5",0,[[1366,768,36],[1920,1080,20]]],["amd radeon r5 m435","5",0,[[1920,1080,41],[2560,1440,67]]],["amd radeon r5 m445","5",0,[[1920,1080,32]]],["amd radeon r5e","5",0,[[1600,768,14],[1920,1080,16]]],["amd radeon r6","6",0,[[1366,768,30],[1280,1024,23],[1920,1080,12]]],["amd radeon r6 m255dx","6",0,[[1366,768,25]]],["amd radeon r6 m340dx","6",0,[[1366,768,31],[1920,1080,15]]],["amd radeon r6e","6",0,[[3840,2160,5]]],["amd radeon r7","7",0,[[1366,768,35],[1280,1024,31],[1680,1050,39],[1920,1080,12],[1920,1200,16],[2560,1080,15],[2560,1440,21],[3840,2160,8]]],["amd radeon r7 200","7",0,[[1280,1024,45],[1920,1080,120]]],["amd radeon r7 200 series","7",0,[[1920,1080,43]
106]],["amd radeon r7 240","7",0,[[1920,1080,29]]],["amd radeon r7 240 + hd 8570d dual","7",0,[[1920,1080,43]]],["amd radeon r7 250","7",0,[[1920,1080,49]]],["amd radeon r7 250e","7",0,[[1920,1080,60]]],["amd radeon r7 250x","7",0,[[1920,1080,60]]],["amd radeon r7 260x","7",0,[[1920,1080,56]]],["amd radeon r7 260x/360","7",0,[[1920,1200,102]]],["amd radeon r7 350","7",0,[[1024,768,60],[1280,1024,79],[1920,1080,59]]],["amd radeon r7 350x","7",0,[[1920,1080,50]]],["amd radeon r7 360","7",0,[[1920,1048,60],[1920,1080,102]]],["amd radeon r7 360 / r9 360","7",0,[[1920,1080,60]]],["amd radeon r7 370","7",0,[[1600,900,60],[1920,1080,75]]],["amd radeon r7 370 / r9 270","7",0,[[1920,1080,74]]],["amd radeon r7 370 / r9 270x/370","7",0,[[1600,900,115],[1920,1080,60]]],["amd radeon r7 370 / r9 270x/370x","7",0,[[1920,1080,115]]],["amd radeon r7 370 series","7",0,[[1920,1080,212],[3840,2160,60]]],["amd radeon r7 430","7",0,[[1920,1080,55],[3840,2160,10]]],["amd radeon r7 450","7",0,[[1920,1080,60]]],["amd radeon r7 a360","7",0,[[1920,1080,28]]],["amd radeon r7 graphics + hd 7700 dual","7",0,[[1600,1200,72]]],["amd radeon r7 graphics + r5 340 dual","7",0,[[1920,1080,47]]],["amd radeon r7 graphics + r7 200 dual","7",0,[[1920,1080,45],[1920,1200,47]]],["amd radeon r7 graphics + r7 350 dual","7",0,[[1919,1080,60]]],["amd radeon r7 m260","7",0,[[1600,900,44],[1920,1080,13]]],["amd radeon r7 m260dx","7",0,[[1366,768,46],[1920,1080,18]]],["amd radeon r7 m260x","7",0,[[1920,1080,29]]],["amd radeon r7 m265","7",0,[[1366,768,48],[1920,1080,27]]],["amd radeon r7 m270","7",0,[[1920,1080,31],[3840,2160,10]]],["amd radeon r7 m340","7",0,[[1366,768,60],[1920,1080,32]]],["amd radeon r7 m350","7",0,[[3840,2160,12]]],["amd radeon r7 m360","7",0,[[1366,768,40],[1920,1080,22]]],["amd radeon r7 m370","7",0,[[1920,1080,24]]],["amd radeon r7 m440","7",0,[[1920,1080,39]]],["amd radeon r7 m445","7",0,[[1920,1080,36]]],["amd radeon r7 m460","7",0,[[1919,1080,24],[1920,1080,29]]],["amd radeon r7 m520","7",0,[[1919,1080,17]]],["amd radeon r7 series / hd 9000","7",0,[[1920,1080,71],[2560,1080,59]]],["amd radeon r7e","7",0,[[1024,768,41]]],["amd radeon r8 m350dx","8",0,[[1366,768,30]]],["amd radeon r8 m365dx","8",0,[[1920,1080,28]]],["amd radeon r8 m435dx","8",0,[[1920,1080,22]]],["amd radeon r8 m445dx","8",0,[[1366,768,38],[1920,1080,27]]],["amd radeon r8 m535dx","8",0,[[1366,768,55]]],["amd radeon r9","9",0,[[1920,1080,60]]],["amd radeon r9 200","9",0,[[1920,1080,60]]],["amd radeon r9 200 / hd 7900","9",0,[[1920,1080,250]]],["amd radeon r9 255","9",0,[[1600,900,52],[1920,1080,51]]],["amd radeon r9 260","9",0,[[1920,1080,16]]],["amd radeon r9 270","9",0,[[1280,1024,60],[1920,1080,60]]],["amd radeon r9 270 1024sp","9",0,[[1920,1080,135]]],["amd radeon r9 270x","9",0,[[1920,1080,30]]],["amd radeon r9 280","9",0,[[1920,1080,75],[1920,1200,428],[2560,1440,60]]],["amd radeon r9 280,","9",0,[[5120,2880,39]]],["amd radeon r9 280x","9",0,[[1920,1080,137]]],["amd radeon r9 285","9",0,[[1920,1080,60],[1920,1200,129]]],["amd radeon r9 290","9",0,[[1920,1080,60]]],["amd radeon r9 290x","9",0,[[1920,1080,60],[2560,1440,60],[3840,2160,118]]],["amd radeon r9 300","9",0,[[1920,1080,59]]],["amd radeon r9 350","9",0,[[1920,1200,63]]],["amd radeon r9 360","9",0,[[1600,900,83],[1920,1080,60],[2560,1440,59]]],["amd radeon r9 370","9",0,[[1680,1050,205],[1920,1080,60],[3840,2160,49]]],["amd radeon r9 370x","9",0,[[1920,1080,60]]],["amd radeon r9 380","9",0,[[1920,1080,41],[2560,1440,75]]],["amd radeon r9 380x","9",0,[[2560,1600,60]]],["amd radeon r9 390","9",0,[[1920,1080,60],[2560,1440,60]]],["amd radeon r9 390x","9",0,[[2560,1440,60],[3840,2160,60]]],["amd radeon r9 a375","9",0,[[1920,1080,28]]],["amd radeon r9 fury","9",0,[[1920,1080,75],[3840,2160,133]]],["amd radeon r9 fury / nano","9",0,[[1920,1200,155]]],["amd radeon r9 m200x","9",0,[[1366,768,104],[1920,1080,60]]],["amd radeon r9 m265x","9",0,[[1920,1080,33]]],["amd radeon r9 m270x","9",0,[[1600,900,60],[1920,1080,68]]],["amd radeon r9 m275","9",0,[[1920,1080,29]]],["amd radeon r9 m275x","9",0,[[1920,1080,20]]],["amd radeon r9 m280x","9",0,[[1920,1080,60],[2560,1440,25]]],["amd radeon r9 m290","9",0,[[5120,2880,33]]],["amd radeon r9 m290x","9",0,[[1920,1080,60],[3840,2160,61],[5120,2880,33]]],["amd radeon r9 m295x","9",0,[[3840,2160,33],[5120,2880,36]]],["amd radeon r9 m295x mac","9",0,[[5120,2880,42]]],["amd radeon r9 m295x mac edition / r9 380x","9",0,[[1920,1080,128]]],["amd radeon r9 m360","9",0,[[1920,1080,60],[3840,2160,26]]],["amd radeon r9 m370x","9",0,[[2560,1440,30],[2880,1800,27]]],["amd radeon r9 m370x opengl engine","9",0,[[5120,2880,14]]],["amd radeon r9 m375","9",0,[[1920,1080,29]]],["amd radeon r9 m375x","9",0,[[1920,1080,60],[3840,2160,22]]],["amd radeon r9 m380","9",0,[[1920,1080,50],[3840,2160,8],[5120,2880,9]]],["amd radeon r9 m380 opengl engine","9",0,[[5120,2880,15]]],["amd radeon r9 m385","9",0,[[1920,1080,58]]],["amd radeon r9 m385x","9",0,[[1920,1080,60]]],["amd radeon r9 m390","9",0,[[5119,2879,29],[5120,2880,21],[5760,3240,32]]],["amd radeon r9 m390 opengl engine","9",0,[[5120,2880,27]]],["amd radeon r9 m390x","9",0,[[1920,1080,140]]],["amd radeon r9 m395","9",0,[[2560,1440,59],[5120,2880,19]]],["amd radeon r9 m395 opengl engine","9",0,[[5120,2880,38]]],["amd radeon r9 m395x","9",0,[[3840,2160,58],[5120,2880,36]]],["amd radeon r9 m395x opengl engine","9",0,[[5120,2880,35]]],["amd radeon r9 m470","9",0,[[3840,2160,29]]],["amd radeon r9 m470x","9",0,[[1920,1080,60]]],["amd radeon r9-290x","9",0,[[1920,1080,60]]],["amd radeon renoir graphics d1","1",0,[[1366,768,60]]],["amd radeon rro 580x","580",0,[[5120,2880,59]]],["amd radeon rx 460","460",0,[[1920,1080,55],[2560,1080,60],[3840,2160,31]]],["amd radeon rx 460 / pro 450/455/460/555/555x/560/560x","460",0,[[3440,1440,93]]],["amd radeon rx 460 / pro 450/455/460/560","460",0,[[1920,1080,72]]],["amd radeon rx 470","470",0,[[1280,1024,73],[1920,1080,58],[1920,1200,147],[3840,2160,51]]],["amd radeon rx 470 opengl engine","470",0,[[2560,1440,60]]],["amd radeon rx 475m","475",0,[[1920,1080,60]]],["amd radeon rx 480","480",0,[[1400,1050,267],[1920,1080,60],[2560,1080,71]]],["amd radeon rx 480 opengl engine","480",0,[[1920,1080,60]]],["amd radeon rx 5300m","5300",0,[[1920,1080,60],[3840,2160,60]]],["amd radeon rx 540","540",0,[[1919,1080,52],[1920,1080,36]]],["amd radeon rx 550","550",0,[[1280,1024,135],[1920,1080,60],[1920,1200,60],[6016,3384,15]]],["amd radeon rx 550 640sp / rx 560","550",0,[[1920,1080,60]]],["amd radeon rx 5500","5500",0,[[1920,1080,139]]],["amd radeon rx 5500 / pro 5500m","5500",0,[[1920,1080,60],[2560,1440,227]]],["amd radeon rx 5500 xt","5500",0,[[1920,1080,239]]],["amd radeon rx 5500m","5500",0,[[1920,1048,144],[1920,1080,144],[3840,2160,60]]],["amd radeon rx 550x","550",0,[[1920,1080,52]]],["amd radeon rx 560","560",0,[[1920,1080,60],[1920,1200,42],[2560,1440,60]]],["amd radeon rx 560 [baffin]","560",0,[[1920,1080,60]]],["amd radeon rx 5600 oem/5600 xt / 5700 xt","5600",0,[[1920,1080,360],[2560,1440,164]]],["amd radeon rx 5600 xt","5600",0,[[1920,1080,75]]],["amd radeon rx 5600m","5600",0,[[1920,1080,144]]],["amd radeon rx 560d","560",0,[[2560,1080,60]]],["amd radeon rx 560x","560",0,[[1920,1080,115],[3840,2160,35
106]]],["amd radeon rx 570","570",0,[[1920,1080,60],[3072,1728,60]]],["amd radeon rx 570 opengl engine","570",0,[[1920,1080,226]]],["amd radeon rx 5700","5700",0,[[1920,1080,144]]],["amd radeon rx 5700 / 5700 xt","5700",0,[[3840,2160,201]]],["amd radeon rx 5700 xt","5700",0,[[1920,1080,464],[3840,2160,60],[6016,3384,34]]],["amd radeon rx 5700 xt 50th anniversary","5700",0,[[2560,1440,144],[3840,1600,60],[3840,2160,222],[5120,2880,60]]],["amd radeon rx 5700xt","5700",0,[[1920,1080,369]]],["amd radeon rx 580","580",0,[[1920,1080,60],[1920,1200,97],[2560,1440,60],[3840,2160,60]]],["amd radeon rx 580 2048sp","580",0,[[1920,1080,60]]],["amd radeon rx 580 opengl engine","580",0,[[1920,1080,145]]],["amd radeon rx 580 special","580",0,[[2560,1440,60]]],["amd radeon rx 580x","580",0,[[1920,1200,60],[3840,2160,79]]],["amd radeon rx 590","590",0,[[1920,1080,75],[2560,1440,164],[3584,2240,60]]],["amd radeon rx 640","640",0,[[1920,1080,39]]],["amd radeon rx 6500 xt","6500",0,[[1920,1080,60]]],["amd radeon rx 6600","6600",0,[[1920,1080,433],[3840,2160,57]]],["amd radeon rx 6600 xt","6600",0,[[1920,1080,60]]],["amd radeon rx 6600 xt/6600m","6600",0,[[2560,1440,60]]],["amd radeon rx 6600m","6600",0,[[1920,1080,139]]],["amd radeon rx 6700 xt","6700",0,[[1920,1080,451]]],["amd radeon rx 6700 xt / 6800m","6700",0,[[2560,1440,144]]],["amd radeon rx 6700m","6700",0,[[1920,1080,240]]],["amd radeon rx 6800","6800",0,[[2560,1440,564],[3840,2160,60]]],["amd radeon rx 6800 xt","6800",0,[[2560,1440,446],[3440,1440,144],[3840,2160,60]]],["amd radeon rx 6800 xt / 6900 xt","6800",0,[[2560,1440,239]]],["amd radeon rx 6800 xt 16gb","6800",0,[[6400,2666,60]]],["amd radeon rx 6800m","6800",0,[[1920,1080,300]]],["amd radeon rx 6900 xt","6900",0,[[3840,2160,60]]],["amd radeon rx rx 560","560",0,[[1920,1080,60]]],["amd radeon rx vega","rx",0,[[1920,1080,39]]],["amd radeon rx vega 10","10",0,[[1920,1080,38]]],["amd radeon rx vega 11","11",0,[[1920,1080,35]]],["amd radeon rx vega 56","56",0,[[1920,1080,144],[3440,1440,60],[3840,2160,60]]],["amd radeon rx vega 56 8gb","56",0,[[2560,1600,60]]],["amd radeon rx vega 56 opengl engine","56",0,[[2560,1440,60]]],["amd radeon rx vega 64","64",0,[[2560,1440,518]]],["amd radeon rx vega 64 8gb","64",0,[[2560,1440,60]]],["amd radeon rx vega 64 opengl engine","64",0,[[3840,2160,119]]],["amd radeon rx vega 64.1","64",0,[[6016,3384,60]]],["amd radeon rx vega 8","8",0,[[1920,1080,53]]],["amd radeon rx vega m gh","rxm",0,[[1920,1080,60],[2560,1440,60],[3840,2160,51]]],["amd radeon rx vega m gl","rxm",0,[[2560,1440,567],[3840,2160,59]]],["amd radeon rx vega11","11",0,[[2496,1664,30]]],["amd radeon rx460","460",0,[[1920,1080,60]]],["amd radeon rx480","480",0,[[1920,1080,102],[2560,1080,71]]],["amd radeon rx540","540",0,[[2400,1800,37]]],["amd radeon rx550","550",0,[[1920,1080,60]]],["amd radeon rx560","560",0,[[1920,1080,93]]],["amd radeon rx5600","5600",0,[[3840,2160,129]]],["amd radeon rx570","570",0,[[5120,2880,59]]],["amd radeon rx5700","5700",0,[[1920,1080,60]]],["amd radeon rx580","580",0,[[1920,1080,60]]],["amd radeon rx590 gme","590",0,[[1920,1080,112]]],["amd radeon rx6600xt","6600",0,[[3840,2160,60]]],["amd radeon sky 500","500",0,[[4096,2160,34]]],["amd radeon vega","",0,[[5120,2880,32]]],["amd radeon vega 10","10",0,[[1920,1080,44]]],["amd radeon vega 10 mobile","10",0,[[1920,1080,30]]],["amd radeon vega 11","11",0,[[1280,1024,60],[1920,1080,60],[3840,2160,17]]],["amd radeon vega 2","2",0,[[1366,768,30]]],["amd radeon vega 3","3",0,[[1440,900,44],[1920,1080,29],[3840,2160,8]]],["amd radeon vega 3 mobile","3",0,[[1920,1080,30]]],["amd radeon vega 56","56",0,[[2560,1440,144]]],["amd radeon vega 6","6",0,[[1366,768,61],[1920,1080,23]]],["amd radeon vega 64","64",0,[[6016,3384,35]]],["amd radeon vega 64 lc","64",0,[[2560,1080,60]]],["amd radeon vega 8","8",0,[[1920,1080,35],[2560,1440,24],[4096,2160,15]]],["amd radeon vega 8 mobile","8",0,[[1920,1080,36]]],["amd radeon vega 9","9",0,[[2496,1663,32],[2496,1664,39]]],["amd radeon vega fe","fe",0,[[1920,1080,120],[2560,1440,60]]],["amd radeon vega frontier","",0,[[1920,1080,120],[3840,2160,60]]],["amd radeon vega frontier edition opengl engine","",0,[[3440,1440,60]]],["amd radeon vega series / radeon vega mobile","",0,[[1920,1080,67]]],["amd radeon vii","vii",0,[[1920,1080,468],[2560,1440,60],[3840,2160,60]]],["amd radeont 540x","540",0,[[1920,1080,74],[3840,2160,22]]],["amd radeont rx 5300","5300",0,[[1920,1080,60]]],["amd radeont rx 5500m","5500",0,[[1920,1080,303]]],["amd radeont rx 560x","560",0,[[1920,1080,60]]],["amd saphire radeon rx 580","580",0,[[1920,1080,57]]],["amd sapphire radeon hd6870","6870",0,[[1680,1050,60]]],["amd sapphire radeon rx 560","560",0,[[1280,1024,60]]],["amd sapphire radeon rx vega 64 8gb","64",0,[[2560,1440,144]]],["intel radeon pro vega 16","16",0,[[3360,1890,20]]],["intel radeong 0.4 on amd bonaire","0",0,[[1920,1200,92]]],["intel radeong 0.4 on amd cape verde","0",0,[[1920,1200,73]]],["intel radeong 0.4 on amd polaris10","0",0,[[3840,2160,108]]],["intel radeong 0.4 on amd tonga","0",0,[[1920,1080,124]]],["radeon 500","500",0,[[1920,1080,58]]],["radeon 550","550",0,[[1920,1080,60]]],["radeon 550x","550",0,[[1920,1080,68]]],["radeon hd 7700","7700",0,[[1920,1080,60],[1920,1200,90]]],["radeon hd 7800","7800",0,[[1920,1080,60]]],["radeon hd 7900","7900",0,[[1920,1080,60],[1920,1200,60],[2560,1440,60]]],["radeon hd 8500","8500",0,[[1920,1080,42]]],["radeon hd 8790m","8790",0,[[1600,900,60]]],["radeon hd8800","8800",0,[[1920,1080,60]]],["radeon pro wx 5100 graphics (polaris10 / drm 3.27.0 / 4.19.4-1.el7.elrepo.x86_64, llvm 6.0","5100",0,[[1920,1080,60]]],["radeon pro wx3100","3100",0,[[2560,1440,1],[3840,2160,43]]],["radeon r5 340","5",0,[[1536,864,41]]],["radeon r5 m330","5",0,[[1366,768,38]]],["radeon r7 200","7",0,[[1280,1024,60],[2560,1440,52]]],["radeon r7 300","7",0,[[1920,1080,60]]],["radeon r7 m340","7",0,[[1920,1080,32]]],["radeon r7 m360","7",0,[[1920,1080,32]]],["radeon r9 200","9",0,[[1920,1080,60],[1920,1200,60],[2560,1440,1]]],["radeon r9 380","9",0,[[2560,1440,1]]],["radeon r9 390","9",0,[[1920,1080,60],[2560,1440,60]]],["radeon r9 fury","9",0,[[1920,1080,51],[1920,1920,60]]],["radeon rx","rx",0,[[1920,1200,60]]],["radeon rx 460","460",0,[[1920,1080,60],[1920,1200,60]]],["radeon rx 470","470",0,[[1280,768,60],[1680,1050,422],[1920,1080,60],[2560,1440,60]]],["radeon rx 480","480",0,[[1920,1080,60],[1920,1200,185],[2560,1440,1]]],["radeon rx 550","550",0,[[1600,900,60],[1680,1050,60],[1920,1080,1],[1920,1200,60],[2560,1080,60],[3840,2160,30]]],["radeon rx 5500 xt","5500",0,[[1920,1080,60],[1920,1200,60],[2560,1440,60],[3840,2160,19]]],["radeon rx 560","560",0,[[1600,900,60],[1920,1080,29],[1920,1200,47],[2688,1512,60],[3440,1440,60],[3840,2160,58]]],["radeon rx 5600 xt","5600",0,[[1920,1080,60]]],["radeon rx 570","570",0,[[1440,900,60],[1280,1024,60],[1920,1080,51],[1920,1200,60],[2560,1080,60],[2560,1440,37],[3440,1440,60]]],["radeon rx 5700 xt","5700",0,[[1707,960,60],[1920,1080,60],[2560,1440,55],[3840,2160,60]]],["radeon rx 580","580",0,[[1477,831,72],[1440,900,60],[1680,1050,60],[1920,1080,4],[1920,1200,60],[2560,1080,52],[2560,1440,60],[2560,1600,60],[3840,2160,1]]],["radeon rx 580 2048sp","580",0,[[1440,900,75]]],["radeon rx 590","590",0,[[1920,1080,60],[2560,1440,60],[3840,2160,30]]],["radeon rx vega","rx",0,[[1920,1080,60],[1920,1200,60],[2194,1234,60],[2560,1080,60],[2560,1440,60],[3440,1440,75],[3840,2160,60]]],["radeon rx vega 8","8",0,[[3840,2160,23]]],["radeon rx550","550",0,[[1680,1050,60],[1920,1080,60],[3440,1440,58]]],["radeon vega 8","8",0,[[1680,1050,60]]],["radeon vega frontier","",0,[[2560,1440,144]]],["radeon vii","vii",0,[[2560,1440,60],[3440,1440,60],[3840,2160,1]]],["radeong 0.4 on amd polaris10","0",0,[[3840,2160,109]]],["radeong 0.4 on amd tahiti","0",0,[[1920,1080,223]]],["ryzen embedded r1305g with radeon vega gfx","1305",0,[[3840,2160,14]]],["ryzen embedded v1605b with radeon vega gfx","1605",0,[[3840,2160,28]]]]')},921:t=>{"use strict";
106t.exports=JSON.parse('["4.0.8",["adreno 506","506",0,[[1512,720,18,"motorola moto g(7) play"]]],["adreno 530","530",0,[[2560,1140,27,"samsung galaxy s7 (sm-930x)"],[2392,1440,28,"google pixel xl"]]],["adreno 615","615",0,[[2088,1080,20,"google pixel 3a"]]],["adreno 618","618",0,[[2210,1080,34,"xiaomi mi 9t"]]],["adreno 620","620",0,[[2340,1080,42,"google pixel 5"]]],["adreno 630","630",0,[[2280,1080,58,"oneplus a6003"]]],["adreno 640","640",0,[[2280,1080,60,"google pixel 4"]]],["qualcomm adreno 205","205",0,[[1280,720,11,"coolpad 8675-w00 (adreno 205)"]]],["qualcomm adreno 304","304",0,[[480,320,16,"zte z353vl cymbal t"],[480,480,6,"lg watch sport"],[758,480,8,"kyocera kyf33 torque x01 s-max"],[782,480,8,"vodafone vfd 510"],[791,480,8,"acer t012"],[792,480,6,"lg k4 2017 (m151, m160, m150 phoenix 3, m153 fortune, m154 risio 2, l58vl rebel 2)"],[800,480,7,"chainway c4050-q4"],[854,480,6,"zte q302c"],[897,540,6,"kyocera c6742 hydro view"],[960,540,6,"cat s40"],[1024,552,6,"tcl 9007 pixi 3 (7)"],[1184,720,4,"micromax q4251 canvas juice a1"],[1187,720,4,"lg phoenix 2 (k37x)"],[1193,720,4,"lg x power (k210, k450)"],[1196,720,4,"obi sj2.5"],[1217,720,4,"fibo la0920"],[1224,720,4,"umax visionbook p70 lte"],[1280,720,4,"k-touch beeline fast +"],[1280,736,4,"alcatel 9022x one touch pixi 3 8.0"],[1280,752,4,"lenovo tab 10 (x103f)"]]],["qualcomm adreno 305","305",0,[[432,320,18,"sonim xp6700"],[480,320,16,"lg t480s wine smart 3g"],[400,400,0,"huawei watch"],[734,480,7,"lg l fino (d290, d295)"],[737,480,7,"acer liquid z220"],[790,480,8,"htc desire 510 (adreno 305)"],[791,480,7,"sony xperia m (c19xx, c20xx)"],[800,480,5,"cherry mobile q510"],[854,480,6,"alcatel a564c one touch pop icon"],[886,540,7,"lg g2 mini (d610, d618, d620)"],[896,540,7,"htc desire 610"],[897,540,5,"motorola xt830c moto e"],[960,540,4,"huawei c8817l"],[1024,528,5,"aurora au701"],[1024,552,4,"asus zenfone go 6.9 (l001 zb690kg)"],[982,600,4,"huawei mediapad 7 youth 2"],[1024,600,7,"samsung galaxy tab 3 7.0 (sm-t215, sm-t217)"],[1024,720,4,"ereneben eben a2"],[1024,722,5,"prestigio pmt5287 multipad ranger 8.0 4g"],[1280,648,5,"tomtom bridge"],[1184,720,5,"htc desire 650 (d650)"],[1188,720,4,"lg aka (h778, h788, f520x)"],[1196,720,3,"zte z787"],[1200,720,4,"lg g vista (d631, vs880, gx2 f430)"],[1216,720,4,"vodafone smart 4 max"],[1217,720,4,"kyocera e6790 duraforce xd"],[1220,720,4,"huawei ascend mate 2 mt2-l03"],[1196,768,4,"infocus m2"],[1280,720,3,"zuum p47"],[1280,732,4,"lg g pad 7.0 (uk410, v410, vk410)"],[1280,736,4,"zte amazing p6"],[1280,737,4,"asus memo pad hd 7 (k00s me175kg)"],[1280,739,4,"lg g pad 8.0 (v480, v49x, p490, t01)"],[1280,740,4,"qualcomm msm8926 (adreno 305, development board)"],[1280,752,4,"asus padfone e (t008 a68m)"],[1216,800,3,"huawei mediapad t1 8.0 (adreno 305)"],[1280,800,3,"samsung tn10gedlte"],[1920,1080,2,"zte s2002 star 1"],[1920,1128,2,"lenovo b8080"]]],["qualcomm adreno 306","306",0,[[734,480,9,"lg f60 (d390, d392)"],[790,480,8,"htc desire 510 (adreno 306)"],[791,480,5,"lg l21g destiny"],[800,480,8,"covia fleaz cp-l42a pop"],[854,480,8,"freetel ft151a priori2 lte"],[897,540,7,"kyocera c6740 hydro wave"],[960,540,5,"blu studio mini lte 2"],[1024,552,6,"tcl 9006w"],[1024,600,5,"samsung sm-t116ir (adreno 306)"],[1024,720,5,"ereneben eben k8s"],[1024,768,5,"samsung sm-p350 galaxy tab a plus"],[1184,720,4,"lg x screen (k500, f650)"],[1188,720,4,"lg band play (f570s)"],[1196,720,4,"fly a5042"],[1199,720,4,"lg stylus 2 (f720, k520, k540, ls775 g stylo 2, l82vl)"],[1200,720,4,"lg g4 stylus (h63x, ms631, f560, ls770 g stylo)"],[1208,720,4,"vizio xr6m10 tablet remote"],[1217,720,4,"lenovo pb1-750x phab"],[1224,720,4,"c spire ft7"],[1280,720,3,"bgh joy smart axs ii"],[1280,736,4,"vodafone smart tab 4g"],[1280,752,4,"huawei mediapad t1 10 (t1-a21)"],[1216,800,4,"huawei mediapad t1 8.0 pro, lte (adreno 306)"],[1280,800,4,"samsung galaxy tab e 8.0 (adreno 306, sm-t377p)"],[1794,1080,2,"bluebird sf550"],[1815,1080,2,"vizio xr6"],[1920,1080,2,"longcheer cc01"]]],["qualcomm adreno 308","308",0,[[800,480,13,"samsung galaxy folder 2 (sm-g160x)"],[854,480,12,"coolpad 3632"],[960,540,10,"samsung sm-j250g"],[1184,720,5,"infocus 00ww"],[1187,720,6,"lg m200"],[1193,720,6,"lg k20 plus (mp260, k20 v vs501)"],[1195,720,6,"lg x charge (x power 2, m322, l63bl fiesta)"],[1199,720,6,"lg stylo 3 (l83bl)"],[1280,720,6,"hisense f23"],[1280,736,6,"lenovo tb-8504"],[1280,752,6,"lenovo tb-x304"],[1344,720,6,"wiko view"],[1223,800,6,"huawei mediapad t3 8.0 (kob-xxx)"],[1368,720,6,"casper via g1"],[1280,800,6,"samsung galaxy tab a2 s (sm-t380, sm-t385)"]]],["qualcomm adreno 320","320",0,[[1196,720,11,"pantech im-a850 vega r3"],[1196,768,10,"google nexus 4 (lg e960)"],[1280,720,8,"blackberry z30"],[1280,752,8,"asus memo pad 10 (k01e me103k)"],[1280,768,10,"lg optimus g (e97x, ls970, e987, f180, kddi lgl21)"],[1920,1008,5,"technicolor px36"],[1794,1080,5,"sony xperia z (c66xx, so-02e, l36x)"],[1848,1080,5,"pantech im-a860 vega n6"],[1920,1080,5,"zte nubia z5 (nx501, nx50x)"],[1920,1104,5,"google nexus 7 (2nd gen, razor)"],[1920,1114,4,"lg g pad 8.3 (vk810 4g)"],[1920,1128,5,"sony xperia tablet z (sgp3xx, so-03e)"]]],["qualcomm adreno 330","330",0,[[800,480,18,"samsung sm-w2014"],[1184,720,27,"sony so-04g xperia a4"],[1196,720,21,"sony xperia j1 compact (d5788)"],[1202,720,21,"lg g flex (d95x, ls995, lgl23, f340)"],[1280,720,20,"amazon fire phone (sd4930ur)"],[1280,768,21,"samsung sm-w2015 galaxy golden 2"],[1280,960,14,"lg f300 optimus vu 3"],[1600,1152,15,"hp pro slate 12"],[1440,1308,10,"blackberry passport"],[1776,1080,11,"google nexus 5"],[1788,1080,11,"lg g3 a f410"],[1794,1080,10,"fujitsu f-01f arrows
106nx luge (docomo)"],[1803,1080,11,"lg g pro 2 (d838, f350)"],[1836,1080,11,"sony xperia z ultra (c68xx, xl39h, sol24, sgp412)"],[1920,1080,9,"qualcomm quanta is7"],[1920,1104,12,"ntt docomo sh-06f sharp aquos pad"],[1920,1128,12,"sony xperia z2 tablet (sgp5xx, so-05f, sot21)"],[1920,1129,10,"lg g pad ii (v935, v940 prada 3.0, v930 g pad x 10.1, uk932)"],[1920,1200,9,"amazon kindle fire hdx 7 (3rd gen, kfthwa, kfthwi)"],[2048,1440,8,"hp red"],[2392,1440,8,"fujitsu f-02g arrows nx (docomo)"],[2400,1440,6,"iuni u3"],[2560,1440,7,"vivo x520l xplay 3s"],[2560,1504,7,"ntt docomo f-03g (fujitsu arrows tab)"],[2560,1600,5,"samsung sm-t525 galaxy tab pro 10.1"]]],["qualcomm adreno 405","405",0,[[1184,720,13,"lyf ls-5015 water 8"],[1196,720,10,"alcatel 6044 one touch pop up"],[1200,720,12,"oppo a53"],[1280,720,8,"hisense c1"],[1280,736,10,"asus zenpad 8 (adreno 405, p024 z380kl)"],[1776,1080,7,"lyf ls-5505"],[1794,1080,6,"medion life x5020"],[1798,1080,7,"lg h740 g vista 2"],[1800,1080,6,"oppo r7s plus"],[1803,1080,6,"oppo r7 plus (adreno 405)"],[1812,1080,6,"ramos mos1"],[1824,1080,6,"vargo ivargo v210101"],[1836,1080,6,"lenovo pb1-770m everypad3"],[1920,1080,2,"smartisan yq607 jianguo"],[1920,1104,5,"lg vk815 g pad x8.3, p815l g pad ii 8.3"],[1920,1111,6,"lg g pad x 8.0 (v52x)"],[1794,1200,5,"qisda f80"],[1920,1128,5,"huawei mediapad t2 10.0 pro (fdr-xxx)"],[1830,1200,6,"huawei mediapad x3 (ple-xxx)"],[1836,1200,6,"huawei mediapad t2 8.0 pro (jdn-xxx)"]]],["qualcomm adreno 418","418",0,[[1280,768,28,"samsung sm-g9198"],[1776,1080,17,"sharp sh-m03 aquos mini"],[1794,1080,15,"softbank 502sh (sharp aquos xx2)"],[1920,1080,11,"smartisan t2 (sm801)"],[2368,1440,10,"fujitsu f-02h arrows nx (docomo)"],[2392,1440,10,"lg k600"],[2413,1440,10,"motorola moto x style, pure (xt1570, xt1572, xt1575)"],[2560,1440,9,"qiku q terra (8692-a00)"],[2560,1504,9,"ntt docomo f-04h arrows tab"]]],["qualcomm adreno 420","420",0,[[1280,720,32,"odg r7-w"],[1920,1080,20,"samsung galaxy s5 (adreno 420, sm-g901)"],[2392,1440,13,"lg g3 (adreno 420, f460)"],[2560,1352,7,"qualcomm apq8084 (adreno 420, development board)"],[2413,1440,12,"motorola moto x pro"],[2560,1440,8,"qualcomm liquid (adreno 420, windows, development board)"],[2560,1532,12,"samsung galaxy note edge (adreno 420, sm-n915x, scl24, sc-01g)"],[2560,1600,11,"amazon kindle fire hdx 8.9 (4th gen, kfsawa, kfsawi)"]]],["qualcomm adreno 430","430",0,[[1184,720,53,"sony xperia z5 compact (e58xx, so-02h)"],[1280,720,18,"zebra technologies mtp8994"],[1776,1080,29,"sony xperia z5 (e66xx, so-01h, sov32, 501so)"],[1794,1080,19,"vertu signature touch (2015)"],[1920,1080,9,"nokia rm-1106"],[1920,1104,21,"ntt docomo sh-05g sharp aquos pad"],[2392,1440,11,"sony e6508 vzw xperia z4v"],[2413,1440,17,"sirin labs solarin"],[2560,1440,7,"microsoft rm-1105"],[2560,1504,16,"sony xperia z4 tablet (sgp7xx, so-05g, sot31)"]]],["qualcomm adreno 505","505",0,[[728,480,29,"zebra technologies tc25"],[1184,720,15,"ivvi i3-01"],[1196,720,15,"huawei honor 6c (dig-xxx)"],[1199,720,14,"lg stylus 2 plus (ms550, k550)"],[1280,720,14,"xiaomi land"],[1344,720,14,"wiko view prime"],[1368,720,13,"micromax hs3"],[1776,1080,7,"hisense a2"],[1787,1080,7,"lg qua phone px (lgv33)"],[1794,1080,7,"pantech im-100 vega"],[1798,1080,8,"lg stylo 3 plus (tp450, mp450, m470)"],[1802,1080,7,"lg k11 (k530, k535)"],[1812,1080,7,"sugar f11"],[1920,1080,6,"lg x venture (h700, m710)"],[1920,1111,6,"lg g pad x ii 8.0 plus (v530)"],[2004,1080,7,"lg q6 (m700, x600)"],[1920,1128,7,"vodafone vfd 1400"],[1920,1132,7,"huawei mediapad t3 lite 10 (bah-xxx)"],[1839,1200,7,"huawei mediapad m3 lite 8.0 (cpn-xxx)"]]],["qualcomm adreno 506","506",0,[[1184,720,20,"fujitsu f-04j docomo"],[1280,720,20,"samsung galaxy j7 2017 (adreno 506, sm-j727x)"],[1320,720,18,"xiaomi redmi 5"],[1356,720,18,"vivo v7 plus (1716)"],[1620,1080,11,"blackberry bbb100-x (keyone, mercury)"],[1776,1080,10,"condor plume h1"],[1788,1080,10,"huawei nova (caz-xxx)"],[1794,1080,10,"nuans neo reloaded"],[1920,1080,9,"blackberry bbd100"],[1920,1104,9,"nec lavietab pc-ts508fam"],[1980,1080,10,"xiaomi redmi 5 plus"],[1920,1128,9,"zte k92 primetime"],[1920,1132,9,"vestel v tab 1090 lte"],[1920,1200,9,"i.safe is910.1"]]],["qualcomm adreno 508","508",0,[[1776,1080,15,"sonim xp8812"],[1798,1080,15,"sharp fs8010"],[1920,1080,14,"htc u11 life"],[2009,1080,14,"vestel venus z20"]]],["qualcomm adreno 509","509",0,[[2159,1080,15,"asus zenfone 5"]]],["qualcomm adreno 510","510",0,[[1184,720,31,"zebra technologies tc51"],[1208,800,27,"askey turbonet tn800a1 turbotab e1"],[1366,720,29,"sony xperia touch (g1109)"],[1776,1080,13,"agm x2"],[1794,1080,14,"qualcomm msm8952 (adreno 510, development board)"],[1920,1080,14,"coolpad r116 cool1"],[2048,1440,11,"asus zenpad 3 8.0 (p008 z581kl)"],[2160,1440,10,"jide remix pro"],[2048,1536,11,"asus zenpad z10 (p00i zt500kl)"],[2368,1440,10,"vodafone vfd 900"],[2392,1440,10,"sharp aquos z3 (fs8009)"],[2413,1440,9,"infocus m820"],[2560,1440,9,"vivo pd1522a"],[2560,1504,9,"lenovo yoga tab3 plus (yt-x703)"]]],["qualcomm adreno 512","512",0,[[782,480,59,"honeywell cn80"],[1798,1080,23,"sharp fs8016"],[1920,1080,22,"vivo td1608"],[2016,1080,22,"oppo r11s"],[2034,1080,22,"vivo x20a"],[2151,1080,20,"xiaomi redmi note 7"]]],["qualcomm adreno 530","530",0,[[1600,900,56,"keecker keecker"],[1776,1080,43,"softbank 506sh (sharp aquos phone xx3)"],[1794,1080,49,"google pixel"],[1920,1024,47,"contextmedia p-wal-107-elc-03"],[1920,1080,26,"nokia 6071w"],[2048,1536,35,"samsung galaxy tab s3 (sm-t82x)"],[2368,1440,27,"motorola xt1650 (1.8 ghz)"],[2392,1440,21,"lg q8 (h970, x800l)"],[2416,1440,31,"alcatel 6076s"],[2560,1439,17,"hp elite x3"],[2560,1440,4,"hp falcon"],[2672,1440,30,"lg g6 (g600, us997, ls993, vs988, h87x)"],[2880,1440,26,"baofeng ke-01"],[3840,2076,15,"via vt6093"]]],["qualcomm adreno 540","540",0,[[1184,720,61,"sony xperia xz1 compact (g8441)"],[1776,1080,57,"sony xperia xz1 (g834x, sov36, so-01k, 701so)"],[1794,1080,57,"google pixel 2 (walleye)"],[1920,1080,56,"zte nx595j nubia"],[1980,1080,56,"xiaomi mi mix 2"],[2034,1080,55,"oneplus 5t (a5010)"],[2276,1312,43,"essential ph-1"],[2368,1440,39,"sharp aquos r (sh-03j, shv39, 605sh)"],[2392,1440,41,"qualcomm adreno 540 (development board)"],[2416,1440,40,"razer phone"],[2560,1440,36,"htc u11 (u-3x, 2pzc100, 2pzc5, htv33, 601ht)"],[2678,1440,35,"samsung galaxy s8 active (sm-g892)"],[2768,1440,33,"samsung galaxy s8+ (adreno 540, sm-g955x, sc-03j, scv35)"],[2960,1440,33,"samsung galaxy note 8 (adreno 540, sm-n950, sc-01k, scv37)"]]],["qualcomm adreno 615","615",0,[[2560,1492,18,"samsung galaxy tab s5e sm-t720"]]],["qualcomm adreno 616","616",0,[[2047,1080,30,"meizu x8"]]],["qualcomm adreno 618","618",0,[[2183,1080,38,"samsung galaxy a71 (sm-a715f)"],[2274,1080,37,"samsung galaxy a80 sm-a805f"]]],["qualcomm adreno 630","630",0,[[2792,1440,49,"samsung galaxy s9+ (adreno 630, sm-g965)"]]],["qualcomm adreno 640","640",0,[[2020,1080,60,"samsung galaxy s10e (adreno 640, sm-g970x)"],[2064,1080,60,"samsung galaxy note 10 (adreno 640, sm-n970x)"],[2181,1080,60,"samsung galaxy s10 lite"],[2198,1080,60,"samsung galaxy a90 5g"],[2210,1080,79,"xiaomi redmi k20 pro premium edition"],[2048,1410,59,"samsung galaxy fold 5g (adreno 640, sm-f900x)"],[2723,1440,55,"samsung galaxy s10 (adreno 640, sm-g973x)"],[2730,1440,56,"samsung galaxy s10+ (adreno 640, sm-g975x)"],[2759,1440,56,"samsung galaxy note 10+ (adreno 640, sm-n975x)"],[2901,1440,55,"samsung galaxy s10 5g (adreno 640, sm-g977x)"]]],["qualcomm adreno 650","650",0,[[2274,1080,90,"asus zenfone 7"],[3101,
1061387,50,"samsung galaxy s20 ultra 5g (sm-g988u1)"]]]]')},535:t=>{"use strict";t.exports=JSON.parse('["4.0.8",["apple a10 gpu","10",0,[[2048,1536,41,"apple ipad (6th gen)"],[2160,1620,36,"apple ipad (10.2-inch) (7th generation)"]]],["apple a10x gpu","10",0,[[2048,1536,59,"apple ipad pro (10.5-inch)"],[2224,1668,69,"apple ipad pro (10.5-inch)"],[2732,2048,46,"apple ipad pro (12.9-inch, 2nd gen)"]]],["apple a12 gpu","12",0,[[2048,1536,60,"apple ipad mini (2019)"]]],["apple a12x gpu","12",0,[[2224,1668,116,"apple ipad pro (11-inch)"],[2388,1668,115,"apple ipad pro (11-inch)"],[2732,2048,60,"apple ipad pro (12.9-inch) (3rd generation)"]]],["apple a12z gpu","12",0,[[2388,1668,115,"apple ipad pro (11-inch) (2nd generation)"],[2732,2048,60,"apple ipad pro (12.9 inch) (4th generation)"]]],["apple a13 gpu","13",0,[[2160,1620,59,"apple ipad 9th gen"]]],["apple a14 gpu","14",0,[[2388,1668,52,"apple ipad air 4th gen (wi-fi only)"]]],["apple a15 gpu","15",0,[[2388,1668,60,"apple ipad mini (6th gen)"]]],["apple a7 gpu","7",0,[[2048,1536,10,"apple ipad mini 3"]]],["apple a8 gpu","8",0,[[2048,1536,16,"apple ipad mini 4"]]],["apple a8x gpu","8",0,[[2048,1536,30,"apple ipad air 2"]]],["apple a9 gpu","9",0,[[2048,1536,29,"apple ipad 9.7 (5th gen)"]]],["apple a9x gpu","9",0,[[2048,1536,40,"apple ipad pro 9.7"],[2732,2048,35,"apple ipad pro"]]],["apple m1 gpu","1",0,[[2732,2048,60,"apple ipad pro (12.9-inch) (5th generation)"]]]]')},438:t=>{"use strict";t.exports=JSON.parse('["4.0.8",["apple a10 gpu","10",0,[[1334,750,104,"apple iphone 7"],[1920,1080,60,"apple iphone 7 plus"],[2001,1125,59,"apple iphone x"]]],["apple a11 gpu","11",0,[[1334,750,64,"apple iphone 8"],[1920,1080,78,"apple iphone 8 plus"]]],["apple a12 gpu","12",0,[[1792,828,60,"apple iphone xr"],[2436,1125,57,"apple iphone xs"],[2208,1242,60,"apple iphone xs max"]]],["apple a13 gpu","13",0,[[1334,750,60,"apple iphone se (2nd gen)"],[1792,828,61,"apple iphone 11"],[2436,1125,60,"apple iphone 11 pro"],[2688,1242,61,"apple iphone 11 pro max"]]],["apple a14 gpu","14",0,[[2338,1080,60,"apple iphone 12 mini"],[2436,1125,60,"apple iphone 12"],[2778,1284,60,"apple iphone 12 pro max"]]],["apple a15 gpu","15",0,[[2338,1080,60,"apple iphone 13 mini"],[2436,1125,60,"apple iphone 13 pro"],[2688,1242,60,"apple iphone 13 pro max"]]],["apple a7 gpu","7",0,[[1136,640,32,"apple iphone 5s"]]],["apple a8 gpu","8",0,[[1136,640,40,"apple ipod touch 6"],[1334,750,36,"apple iphone 6"],[1920,1080,21,"apple iphone 6 plus"]]],["apple a9 gpu","9",0,[[1136,640,90,"apple iphone se"],[1334,750,72,"apple iphone 6s"],[1920,1080,42,"apple iphone 6s plus"]]]]')},283:t=>{"use strict";t.exports=JSON.parse('["4.0.8",["intel intel hd graphics for atom x5","5",0,[[1024,600,35,"amazon aeokn"],[1024,720,13,"arbor venus 8"],[1217,720,23,"gole gole1"],[1280,736,27,"medion p850x"],[1360,704,15,"chuwi hibox hero mini pc"],[1280,752,21,"tetratab casebook 3"],[1280,759,28,"lenovo yoga a12 (yb-q501f)"],[1366,720,19,"nextbook nx16a11264 ares 11 (x5-z8300)"],[1920,996,20,"teclast x16 pro"],[1920,1008,12,"teclast tbook 16 pro"],[1920,1016,13,"teclast x16 plus"],[1920,1104,13,"medion p851x"],[1920,1116,13,"teclast x80 pro (x5-z8350)"],[1920,1128,8,"cube technology i12-y"],[1920,1133,9,"cube technology i1-tfp (x5-z8350)"],[1920,1134,11,"microtech e-tab pro lte"],[1920,1136,14,"cube technology iwork 10 ultimate (i15-t)"],[1920,1214,10,"chuwi cw-hi10 plus (x5-z8350)"],[2048,1440,8,"teclast x98 plus"],[2160,1368,10,"chuwi hi12 (x5-z8350)"],[2048,1452,10,"teclast x98 plus ii"],[2048,1536,14,"xiaomi mi pad 2"],[2560,1356,7,"baofeng a1"],[2560,1504,6,"chuwi hibook pro (z8350)"],[2560,1518,11,"lenovo yt3-x90 yoga tablet 3 pro (x5-z8550)"]]],["intel intel hd graphics for baytrail","hdfor",0,[[1024,552,13,"multilaser intel 7qc"],[1024,696,17,"thundersoft dual os tablet"],[1024,720,15,"airis onepad 785i"],[1184,720,18,"trimble tdc500"],[1280,736,12,"acer a1-840"],[1280,752,9,"imuz mupad win 10.1 ii"],[1366,720,13,"nextbook nxa116qc164"],[1366,724,10,"cube technology i10 remix"],[1440,1008,12,"teclast x89 kindow"],[1920,1008,8,"minix neo z64"],[1920,1014,9,"cube technology i7 cx remix"],[1920,1032,11,"hp slate 17"],[1920,1104,5,"jltd d630"],[1920,1128,6,"intel(r) e1008"],[1920,1133,9,"pipo w3f"],[2048,1440,6,"kruger & matz eagle 975 (km0975)"],[2048,1448,6,"jide e-tab 3g"],[2048,1464,6,"reeder a10ix air"],[2560,1344,7,"lenovo yoga tablet 2 pro-1380"],[2560,1504,5,"teclast x10hd 3g"]]],["intel mesa dri intel bay trail","dribay",0,[[1366,768,15,"google chromebook pixel (2015, n2830)"]]],["intel mesa dri intel hd","drihd",0,[[688,412,39,"hp chromebook x360 11 g1 ee"],[960,568,36,"google chromebook pixel (2015, n3450)"],[1024,561,28,"aaeon up-cht01 up board"],[1024,736,33,"google chromebook reef (n3350)"]]],["intel mesa dri intel hd graphics 400","400",0,[[688,412,41,"asus c202sa chromebook"],[768,431,45,"hp chromebook 11 g5"],[960,568,25,"acer chromebook r11 (n3050)"],[1366,768,19,"samsung chromebook 3"],[1536,832,25,"google chromebook r11 (n3160)"],[1920,1080,17,"acer chromebook 14"]]],["intel mesa dri intel hd graphics 510","510",0,[[690,378,53,"hp chromebook chell"],[688,412,60,"acer chromebook 14 for work"]]],["intel mesa dri intel hd graphics 515","515",0,[[1033,617,56,"s
106amsung chromebook pro (m7-6y75, caroline)"],[1536,1088,32,"google chromebook pixel (2015, m3-6y30)"],[1920,980,32,"asus c302 chromebook flip"],[2400,1504,22,"samsung chromebook pro (caroline)"],[3200,1640,12,"google chromebook pixel (2015, 4405y)"]]],["intel mesa dri intel hd graphics 520","520",0,[[700,412,60,"acer chromebook 14 for work (i3-6100u)"]]],["intel mesa dri intel hd graphics 5500","5500",0,[[1080,575,59,"google chromebook pixel (2015, i3-5005u)"],[1920,1000,30,"google chromebook pixel (2015, i5-5300u)"],[2560,1700,14,"google chromebook pixel (2015, i5-5200u)"]]],["intel mesa dri intel hd graphics 615","615",0,[[1034,618,55,"google soraka (4415y)"],[1200,720,34,"google poppy (4410y, kabylake)"],[2400,1504,21,"google chromebook eve (i5-7y54)"]]],["intel mesa dri intel kabylake gt2","2",0,[[960,568,38,"google chromebook pixel (2015, m3-7y30)"]]]]')},327:t=>{"use strict";t.exports=JSON.parse('["4.0.8",["arm mali-t604 mp4","604",0,[[2560,1504,4,"google nexus 10"]]],["arm mali-t622","622",0,[[1024,564,12,"telechips tcc896x (quad core, development board)"],[1280,720,7,"leadcore l1860 (mali-t622, development board)"]]],["arm mali-t624","624",0,[[1794,1080,7,"huawei grace"],[1812,1080,6,"huawei abc-ul00"],[1830,1080,10,"huawei p8 max (dav-70x)"],[1920,1080,4,"sony amai vp9"],[1920,1104,9,"huawei dtab compact d-02h (docomo)"],[1920,1128,8,"huawei dtab d-01h (docomo)"],[1824,1200,9,"huawei mediapad m2 (m2-80xx)"],[1830,1200,9,"huawei mediapad x2 (gem-701l, gem-702l, gem-703l)"]]],["arm mali-t624 mp2","624",0,[[1280,720,5,"samsung sm-g910f (mali-t624)"]]],["arm mali-t624 mp4","624",0,[[1794,1080,9,"huawei z100"]]],["arm mali-t628","628",0,[[1024,600,30,"thinkware inavi davinci"],[2560,1536,8,"meizu mx4 pro"]]],["arm mali-t628 mp2","628",0,[[1280,720,8,"leadcore l1860 (development board)"]]],["arm mali-t628 mp6","628",0,[[800,480,35,"gen2wave rp1600"],[1280,672,14,"hardkernel odroid-xu3 (development board)"],[1280,720,26,"samsung galaxy alpha (mali-t628, sm-g850)"],[1920,1080,11,"samsung galaxy note iii (mali-t628, sm-n900, sm-n9000q)"],[2560,1600,3,"samsung sm-t520 galaxy tab 10.1"]]],["arm mali-t720","720",0,[[432,240,16,"unihertz jelly pro"],[782,480,8,"mobiistar lai zoro"],[784,480,8,"lg k3 (k100)"],[791,480,6,"i-mobile i-style 812 4g"],[800,480,4,"lava iris 550"],[854,480,3,"verykool sl5009 jet"],[897,540,5,"bluboo xfire"],[960,540,3,"siswoo a5 chocolate"],[1024,552,4,"bb-mobile tq763i techno 7.0 lte"],[1024,714,9,"bluedot bnt-791 (2g)"],[1024,720,3,"zte e8qp"],[1280,624,10,"panasonic p55 novo 4g"],[1280,648,4,"tcl 9025"],[1280,656,7,"acer a1-734 iconia talk s"],[1184,720,4,"lenovo xt1700, xt1706, k10a40"],[1187,720,7,"lg k8 (k350)"],[1189,720,5,"ark impulse p2"],[1193,720,7,"lg x power (k220, f750)"],[1196,720,2,"dtac phone m2"],[1198,720,5,"dtac phone t3"],[1205,720,7,"firefly aurii passion"],[1206,720,4,"archos 50 power"],[1208,720,3,"advan i7 plus"],[1217,720,7,"energy sistem energy phone max 2+"],[1238,720,9,"vnpt technology vivas lotus s3 lte"],[1280,720,2,"archos bush spira c2 5"],[1280,736,2,"digma cs1062ml citi 1903 4g"],[1280,737,3,"waywalkers t805g"],[1280,740,3,"casper via l8"],[1280,746,3,"philips tle821l e line 4g"],[1280,752,3,"4good light at200"],[1280,755,7,"leotec letab1020 supernova qi32"],[1356,720,8,"xiaolajiao la-v11"],[1360,720,7,"tecno in5"],[1368,720,7,"tinno p100"],[1280,800,4,"samsung galaxy tab e 8.0 (sm-t375x, sm-t377x)"],[1920,936,4,"panasonic eluga note"],[1920,996,4,"cube technology u83 iplay10"],[1776,1080,4,"fly fs522 cirrus 14"],[1787,1080,5,"lg x cam (k580, f690)"],[1920,1008,6,"alcatel one touch xess (p17aa)"],[1794,1080,3,"ramos mos 1 max"],[1800,1080,4,"archos sense 55 s"],[1815,1080,4,"archos diamond plus"],[1920,1032,5,"virgin media tellytablet"],[1920,1080,2,"infocus m640"],[1920,1104,4,"vestel v tab 7030"],[1920,1116,4,"jty q101"],[1920,1128,2,"archos 80 oxygen"],[2009,1080,4,"tcl 5099"],[1920,1136,4,"asus zenpad 10 (p028 z301m)"]]],["arm mali-t760","760",0,[[854,480,14,"aux t6200l"],[897,540,13,"sony xperia e4g (e20xx)"],[960,540,12,"gionee v381"],[960,568,24,"asus c100pa chromebook flip"],[1024,552,12,"archos 70 helium"],[1024,720,10,"wiz t-8168"],[1188,720,9,"lg h520 magna, h522 prime plus"],[1196,720,9,"acer s57 liquid jade z"],[1280,720,8,"dunetek vitamin a"],[1280,736,8,"archos 80b helium"],[1280,752,8,"frael m10g 4g"],[1280,768,8,"meizu m1"],[1794,1080,6,"sugar 2 ss136 l8560"],[1920,1032,9,"qbic bxp-300 box pc"],[1920,1080,4,"byxpress mphone xone"],[1920,1104,6,"cube technology t7"],[1920,1128,5,"nec lavietab pc-te510bal"],[2048,1440,3,"teclast p98 4g"],[2560,1440,10,"samsung galaxy note 4 (mali-t760, sm-n910x, sm
106-n916)"]]],["arm mali-t760 mp6","760",0,[[1920,1080,17,"samsung galaxy a8 (mali-t760, sm-a800x, scv32)"],[2048,1536,12,"samsung galaxy tab s 2 8.0 (sm-t710, sm-t715)"],[2560,1532,10,"samsung galaxy note edge (mali-t760, sm-n915x)"],[2560,1600,10,"samsung galaxy tab s 10.5 (mali-t760, sm-t805s)"]]],["arm mali-t760 mp8","760",0,[[1280,768,42,"samsung sm-w2016"],[1920,1080,25,"meizu niux"],[2160,1200,17,"idealens k2"],[2560,1440,12,"le xiang deepoon m2 vr"],[2560,1504,15,"bungbungame kalos 2"]]],["arm mali-t764","764",0,[[1024,600,19,"gpd q9"],[1280,720,15,"gpd xd"],[1280,752,13,"kruger & matz 1064.1g eagle"],[1280,800,13,"pipo p7"],[1920,1008,6,"rockchip mk809 4k tv stick"],[1920,1010,8,"pipo p7 hd"],[1920,1020,5,"rockchip mk903v mini tv"],[1920,1032,7,"acooo oneboard pro+"],[1872,1080,7,"contextmedia wallboard 32 tablet (p-wal-106-yit-01)"],[1920,1080,7,"rockchip cs4k tv box"],[1920,1128,7,"archos 101 oxygen"],[2048,1437,5,"haier pad 971"],[2048,1440,5,"hisense f5281 vidaa pad"],[2560,1504,4,"teclast p90hd"]]],["arm mali-t820","820",0,[[1344,720,5,"lenovo k320t"],[1776,1080,6,"leagoo t5c"],[1920,1008,7,"probox2 ava tv box"],[1920,1080,4,"skyworth coocaa 5s32 n2"]]],["arm mali-t830","830",0,[[1280,720,9,"samsung galaxy on7 (mali-t830, sm-g600x)"],[1280,800,9,"samsung sm-t536 (mali-t830)"],[1776,1080,9,"huawei p10 lite (was-xxx)"],[1794,1080,9,"huawei honor 6x (bln-xxx)"],[1920,1080,5,"samsung galaxy on7 prime 2018 (sm-g611)"],[2033,1080,8,"huawei p smart (fig-xxx)"],[2040,1080,9,"huawei maimang 6 (rne-xxx)"],[1920,1200,5,"samsung galaxy tab a 10.1 (sm-t580, sm-t585)"]]],["arm mali-t860","860",0,[[1184,720,8,"tcl a626"],[1196,720,8,"green orange go t2"],[1280,720,14,"htc one a9s"],[1920,1024,17,"hardkernel odroid-n1 (development board)"],[1920,1032,16,"contextmedia p-wal-108-elc-02"],[1920,1080,7,"htc u play (u-2u)"],[1920,1116,15,"imuz revolution a8"],[1920,1128,15,"rockchip rk3399 (development board)"],[2400,1440,10,"samsung chromebook plus (kevin)"]]],["arm mali-t860 mp2","860",0,[[598,480,25,"cipherlab 9700a"],[1184,720,11,"vernee m5"],[1193,720,11,"lg x power 2 (u+, x500, m-x320, m320)"],[1196,720,11,"lava z25"],[1199,720,11,"lg stylus 3 (m400)"],[1212,720,11,"meeg 306"],[1280,720,10,"oppo r66"],[1336,720,13,"asus pegasus 4s (x018d zb570tl)"],[1344,720,13,"allview x4 soul infinity n"],[1776,1080,7,"benq f55"],[1794,1080,6,"alcatel 7070"],[1798,1080,7,"energy sistem energy phone pro 3"],[1806,1080,8,"tecno phantom 6"],[1807,1080,7,"covia fleaz cp-j55a g07"],[1810,1080,8,"archos 55 diamond 2 plus"],[1920,1080,4,"advan vandroid i55c"],[2004,1080,7,"asus zenfone max plus m1 (x018d zb570tl)"],[1920,1128,7,"verizon qtaxia1"]]],["arm mali-t880","880",0,[[1184,720,22,"doogee mix"],[1280,720,20,"lenovo k8"],[1344,720,18,"casper via f2"],[1776,1080,11,"alcatel 6060 (mali-t880)"],[1794,1080,20,"huawei mate 8 (nxt-xxx)"],[1824,1080,11,"meiigoo m1"],[1920,1080,10,"letv leeco lex650"],[2016,1080,9,"vernee mix 2"],[2064,1080,10,"umi s2 pro"],[2392,1440,12,"huawei honor v8 (knt-al20)"],[2434,1440,11,"huawei honor note 8 premium edition (edi-al10)"],[2560,1440,24,"meizu pro 6 plus"],[2560,1480,10,"huawei dtab compact d-01j (docomo)"],[2560,1600,10,"huawei mediapad m3 (btv-xxx)"]]],["arm mali-t880 mp12","880",0,[[1920,1080,44,"samsung galaxy s7 (sm-g930f)"],[2560,1440,27,"samsung galaxy note 7 (mali-t880, sm-n930)"]]],["arm mali-t880 mp2","880",0,[[1184,720,19,"sony pikachu"],[1376,720,17,"umi s2"],[1776,1080,10,"coolpad a9s-9"],[1800,1080,11,"infinix x603"],[1920,1080,9,"innjoo pro2"]]],["arm mali-t880 mp4","880",0,[[1280,672,18,"mediatek x20 (development board)"],[1794,1080,13,"infocus tsp"],[1800,1080,16,"infinix x602 zero 4 plus"],[1806,1080,16,"tecno phantom a9"],[1810,1080,8,"mobiistar prime x pro"],[1815,1080,16,"tecno phantom 6 plus"],[1920,1080,7,"elephone r9"],[2048,1440,12,"brown tab 1"],[2392,1440,12,"vernee apollo"],[2416,1440,11,"freetel ftj162b kiwami2"],[2560,1440,10,"ivvi i5"]]],["mali-t830","830",0,[[1480,720,10,"samsung gm-j600fn"]]]]')},538:t=>{"use strict";t.exports=JSON.parse('["4.0.8",["arm mali-g31","31",0,[[1920,1080,7,"mecool km9 pro"]]],["arm mali-g51","51",0,[[1920,636,10,"telechips tcc803x_lcn"],[1920,1080,5,"skyworth 8n10 g1a"]
106]],["arm mali-g52 mc1","52",0,[[1280,736,25,"amazon fire hd 8 (kfonwi, 2020)"]]],["arm mali-g52 mc2","52",0,[[2110,1080,23,"xiaomi redmi 10x 4g"],[2264,1080,20,"xiaomi redmi 9 m2004j19c"],[2400,1080,20,"huawei y9a frl-l22"]]],["arm mali-g57 mc3","57",0,[[2158,1080,48,"realme rmx2173"]]],["arm mali-g71","71",0,[[1280,720,14,"samsung sm-j337"],[1812,1080,53,"huawei mate 9 (mha-xxx)"],[1920,1080,12,"sony amai vp9 (mali-g71)"],[2009,1080,11,"tcl 6062"],[2016,1080,11,"gionee s11"],[2038,1080,10,"ulefone power 3"],[2076,1080,15,"samsung galaxy a8 2018 (sm-a530x)"],[2094,1080,15,"samsung sm-a730x"],[2160,1080,9,"oukitel k6"],[2368,1440,35,"huawei honor v9 (duk-xxx)"],[2560,1440,32,"huawei mate 9 pro (lon-xxx)"],[2678,1440,41,"samsung galaxy s8 (mali-g71, sm-g950x)"],[2960,1440,39,"samsung galaxy s8+ (mali-g71, sm-g955x)"]]],["arm mali-g72","72",0,[[2041,1080,55,"huawei mate 10 pro (bla-xxx)"],[2160,1080,56,"huawei honor view 10 (v10, bkl-xxx)"],[2560,1440,43,"huawei mate 10 (alp-xxx)"],[2768,1440,47,"samsung galaxy s9 (mali-g72, sm-g960)"],[2792,1440,47,"samsung galaxy s9+ (mali-g72, sm-g965)"]]],["arm mali-g76","76",0,[[2020,1080,60,"samsung galaxy s10e (mali-g76, sm-g970x)"],[2029,1080,31,"samsung galaxy s10 plus sm-g975n"],[2064,1080,60,"samsung galaxy note 10 5g (mali-g76, sm-n971x)"],[2159,1080,47,"samsung galaxy a51 5g"],[2232,1080,59,"huawei honor 20 pro yal-l41"],[2328,1128,60,"huawei mate 30 pro (lio-lx9, lio-xl00"],[2723,1440,57,"samsung galaxy s10 (mali-g76, sm-g973x)"],[2730,1440,56,"samsung galaxy s10+ (mali-g76, sm-g975x)"],[2733,1440,56,"samsung galaxy s10 5g (mali-g76, sm-g977x)"],[2759,1440,57,"samsung galaxy note 10+ (mali-g76, sm-n975x)"]]],["arm mali-g77","77",0,[[2178,1080,60,"samsung galaxy s20 5g (sm-g981b)"],[2200,1080,67,"samsung galaxy s20 ultra 5g (sm-g988b)"],[2304,1080,55,"oppo pdcm00"]]],["arm mali-g77 mc9","77",0,[[2293,1080,59,"oppo pdsm00"]]],["arm mali-g78","78",0,[[2646,1288,90,"huawei mate 40 pro 5g"]]],["arm mali-t604 mp4","604",0,[[2560,1504,4,"google nexus 10"]]],["arm mali-t622","622",0,[[1024,564,12,"telechips tcc896x (quad core, development board)"],[1280,720,7,"leadcore l1860 (mali-t622, development board)"]]],["arm mali-t624","624",0,[[1794,1080,7,"huawei grace"],[1812,1080,6,"huawei abc-ul00"],[1830,1080,10,"huawei p8 max (dav-70x)"],[1920,1080,4,"sony amai vp9"],[1920,1104,9,"huawei dtab compact d-02h (docomo)"],[1920,1128,8,"huawei dtab d-01h (docomo)"],[1824,1200,9,"huawei mediapad m2 (m2-80xx)"],[1830,1200,9,"huawei mediapad x2 (gem-701l, gem-702l, gem-703l)"]]],["arm mali-t624 mp2","624",0,[[1280,720,5,"samsung sm-g910f (mali-t624)"]]],["arm mali-t624 mp4","624",0,[[1794,1080,9,"huawei z100"]]],["arm mali-t628","628",0,[[1024,600,30,"thinkware inavi davinci"],[2560,1536,8,"meizu mx4 pro"]]],["arm mali-t628 mp2","628",0,[[1280,720,8,"leadcore l1860 (development board)"]]],["arm mali-t628 mp6","628",0,[[800,480,35,"gen2wave rp1600"],[1280,672,14,"hardkernel odroid-xu3 (development board)"],[1280,720,26,"samsung galaxy alpha (mali-t628, sm-g850)"],[1920,1080,11,"samsung galaxy note iii (mali-t628, sm-n900, sm-n9000q)"],[2560,1600,3,"samsung sm-t520 galaxy tab 10.1"]]],["arm mali-t720","720",0,[[432,240,16,"unihertz jelly pro"],[782,480,8,"mobiistar lai zoro"],[784,480,8,"lg k3 (k100)"],[791,480,6,"i-mobile i-style 812 4g"],[800,480,4,"lava iris 550"],[854,480,3,"verykool sl5009 jet"],[897,540,5,"bluboo xfire"],[960,540,3,"siswoo a5 chocolate"],[1024,552,4,"bb-mobile tq763i techno 7.0 lte"],[1024,714,9,"bluedot bnt-791 (2g)"],[1024,720,3,"zte e8qp"],[1280,624,10,"panasonic p55 novo 4g"],[1280,648,4,"tcl 9025"],[1280,656,7,"acer a1-734 iconia talk s"],[1184,720,4,"lenovo xt1700, xt1706, k10a40"],[1187,720,7,"lg k8 (k350)"],[1189,720,5,"ark impulse p2"],[1193,720,7,"lg x power (k220, f750)"],[1196,720,2,"dtac phone m2"],[1198,720,5,"dtac phone t3"],[1205,720,7,"firefly aurii passion"],[1206,720,4,"archos 50 power"],[1208,720,3,"advan i7 plus"],[1217,720,7,"energy sistem energy phone max 2+"],[1238,720,9,"vnpt technology vivas lotus s3 lte"],[1280,720,2,"archos bush spira c2 5"],[1280,736,2,"digma cs1062ml citi 1903 4g"],[1280,737,3,"waywalkers t805g"],[1280,740,3,"casper via l8"],[1280,746,3,"philips tle821l e line 4g"],[1280,752,3,"4good light at200"],[1280,755,7,"leotec letab1020 supernova qi32"],[1356,720,8,"xiaolajiao la-v11"],[1360,720,7,"tecno in5"],[1368,720,7,"tinno p100"],[1280,800,4,"samsung galaxy tab e 8.0 (sm-t375x, sm-t377x)"],[1920,936,4,"panasonic eluga note"],[1920,996,4,"cube technology u83 iplay10"],[1776,1080,4,"fly fs522 cirrus 14"],[1787,1080,5,"lg x cam (k580, f690)"],[1920,1008,6,"alcatel one touch xess (p17aa)"],[1794,1080,3,"ramos mos 1 max"],[1800,1080,4,"archos sense 55 s"],[1815,1080,4,"archos diamond plus"],[1920,1032,5,"virgin media tellytablet"],[1920,1080,2,"
106infocus m640"],[1920,1104,4,"vestel v tab 7030"],[1920,1116,4,"jty q101"],[1920,1128,2,"archos 80 oxygen"],[2009,1080,4,"tcl 5099"],[1920,1136,4,"asus zenpad 10 (p028 z301m)"]]],["arm mali-t760","760",0,[[854,480,14,"aux t6200l"],[897,540,13,"sony xperia e4g (e20xx)"],[960,540,12,"gionee v381"],[960,568,24,"asus c100pa chromebook flip"],[1024,552,12,"archos 70 helium"],[1024,720,10,"wiz t-8168"],[1188,720,9,"lg h520 magna, h522 prime plus"],[1196,720,9,"acer s57 liquid jade z"],[1280,720,8,"dunetek vitamin a"],[1280,736,8,"archos 80b helium"],[1280,752,8,"frael m10g 4g"],[1280,768,8,"meizu m1"],[1794,1080,6,"sugar 2 ss136 l8560"],[1920,1032,9,"qbic bxp-300 box pc"],[1920,1080,4,"byxpress mphone xone"],[1920,1104,6,"cube technology t7"],[1920,1128,5,"nec lavietab pc-te510bal"],[2048,1440,3,"teclast p98 4g"],[2560,1440,10,"samsung galaxy note 4 (mali-t760, sm-n910x, sm-n916)"]]],["arm mali-t760 mp6","760",0,[[1920,1080,17,"samsung galaxy a8 (mali-t760, sm-a800x, scv32)"],[2048,1536,12,"samsung galaxy tab s 2 8.0 (sm-t710, sm-t715)"],[2560,1532,10,"samsung galaxy note edge (mali-t760, sm-n915x)"],[2560,1600,10,"samsung galaxy tab s 10.5 (mali-t760, sm-t805s)"]]],["arm mali-t760 mp8","760",0,[[1280,768,42,"samsung sm-w2016"],[1920,1080,25,"meizu niux"],[2160,1200,17,"idealens k2"],[2560,1440,12,"le xiang deepoon m2 vr"],[2560,1504,15,"bungbungame kalos 2"]]],["arm mali-t764","764",0,[[1024,600,19,"gpd q9"],[1280,720,15,"gpd xd"],[1280,752,13,"kruger & matz 1064.1g eagle"],[1280,800,13,"pipo p7"],[1920,1008,6,"rockchip mk809 4k tv stick"],[1920,1010,8,"pipo p7 hd"],[1920,1020,5,"rockchip mk903v mini tv"],[1920,1032,7,"acooo oneboard pro+"],[1872,1080,7,"contextmedia wallboard 32 tablet (p-wal-106-yit-01)"],[1920,1080,7,"rockchip cs4k tv box"],[1920,1128,7,"archos 101 oxygen"],[2048,1437,5,"haier pad 971"],[2048,1440,5,"hisense f5281 vidaa pad"],[2560,1504,4,"teclast p90hd"]]],["arm mali-t820","820",0,[[1344,720,5,"lenovo k320t"],[1776,1080,6,"leagoo t5c"],[1920,1008,7,"probox2 ava tv box"],[1920,1080,4,"skyworth coocaa 5s32 n2"]]],["arm mali-t830","830",0,[[1280,720,9,"samsung galaxy on7 (mali-t830, sm-g600x)"],[1280,800,9,"samsung sm-t536 (mali-t830)"],[1776,1080,9,"huawei p10 lite (was-xxx)"],[1794,1080,9,"huawei honor 6x (bln-xxx)"],[1920,1080,5,"samsung galaxy on7 prime 2018 (sm-g611)"],[2033,1080,8,"huawei p smart (fig-xxx)"],[2040,1080,9,"huawei maimang 6 (rne-xxx)"],[1920,1200,5,"samsung galaxy tab a 10.1 (sm-t580, sm-t585)"]]],["arm mali-t860","860",0,[[1184,720,8,"tcl a626"],[1196,720,8,"green orange go t2"],[1280,720,14,"htc one a9s"],[1920,1024,17,"hardkernel odroid-n1 (development board)"],[1920,1032,16,"contextmedia p-wal-108-elc-02"],[1920,1080,7,"htc u play (u-2u)"],[1920,1116,15,"imuz revolution a8"],[1920,1128,15,"rockchip rk3399 (development board)"],[2400,1440,10,"samsung chromebook plus (kevin)"]]],["arm mali-t860 mp2","860",0,[[598,480,25,"cipherlab 9700a"],[1184,720,11,"vernee m5"],[1193,720,11,"lg x power 2 (u+, x500, m-x320, m320)"],[1196,720,11,"lava z25"],[1199,720,11,"lg stylus 3 (m400)"],[1212,720,11,"meeg 306"],[1280,720,10,"oppo r66"],[1336,720,13,"asus pegasus 4s (x018d zb570tl)"],[1344,720,13,"allview x4 soul infinity n"],[1776,1080,7,"benq f55"],[1794,1080,6,"alcatel 7070"],[1798,1080,7,"energy sistem energy phone pro 3"],[1806,1080,8,"tecno phantom 6"],[1807,1080,7,"covia fleaz cp-j55a g07"],[1810,1080,8,"archos 55 diamond 2 plus"],[1920,1080,4,"advan vandroid i55c"],[2004,1080,7,"asus zenfone max plus m1 (x018d zb570tl)"],[1920,1128,7,"verizon qtaxia1"]]],["arm mali-t880","880",0,[[1184,720,22,"doogee mix"],[1280,720,20,"lenovo k8"],[1344,720,18,"casper via f2"],[1776,1080,11,"alcatel 6060 (mali-t880)"],[1794,1080,20,"huawei mate 8 (nxt-xxx)"],[1824,1080,11,"meiigoo m1"],[1920,1080,10,"letv leeco lex650"],[2016,1080,9,"vernee mix 2"],[2064,1080,10,"umi s2 pro"],[2392,1440,12,"huawei honor v8 (knt-al20)"],[2434,1440,11,"huawei honor note 8 premium edition (edi-al10)"],[2560,1440,24,"meizu pro 6 plus"],[2560,1480,10,"huawei dtab compact d-01j (docomo)"],[2560,1600,10,"huawei mediapad m3 (btv-xxx)"]]],["arm mali-t880 mp12","880",0,[[1920,1080,44,"samsung galaxy s7 (sm-g930f)"],[2560,1440,27,"samsung galaxy note 7 (mali-t880, sm-n930)"]]],["arm mali-t880 mp2","880",0,[[1184,720,19,"sony pikachu"],[1376,720,17,"umi s2"],[1776,1080,10,"coolpad a9s-9"],[1800,1080,11,"infinix x603"],[1920,1080,9,"innjoo pro2"]]],["arm mali-t880 mp4","880",0,[[1280,672,18,"mediatek x20 (development board)"],[1794,1080,13,"infocus tsp"],[1800,1080,16,"infinix x602 zero 4 plus"],[1806,1080,16,"tecno phantom a9"],[1810,1080,8,"mobiistar prime x pro"],[1815,1080,16,"tecno phantom 6 plus"],[1920,1080,7,"elephone r9"],[2048,1440,12,"brown tab 1"],[2392,1440,12,"vernee apollo"],[2416,1440,11,"freetel ftj162b kiwami2"],[2560,1440,10,"ivvi i5"]]],["mali-g71","71",0,[[2220,1080,54,"samsung s8+ sm-g955f"]]],["mali-g72","72",0,[[2220,1080,56,"samsung s9+ sm-g965f"]]],["mali-t830","830",0,[[1480,720,10,"samsung gm-j600fn"]]]]')},884:t=>{"use strict";
106t.exports=JSON.parse('["4.0.8",["nvidia tegra","",0,[[2048,1440,23,"google nexus 9"]]],["nvidia tegra k1","1",0,[[1920,1008,32,"nvidia jetson tk1 (pm375, development board)"],[1920,1032,12,"lenovo k1 hd (2014)"],[1920,1080,28,"nvidia tegra gk20a (ardbeg, development board)"],[1920,1104,29,"google project tango"],[2048,1536,21,"xiaomi mi pad"],[3840,2088,8,"lenovo thinkvision 28"]]],["nvidia tegra x1","1",0,[[1920,1080,60,"nvidia shield android tv"],[2560,1688,33,"google pixel c"]]]]')},214:t=>{"use strict";t.exports=JSON.parse('["4.0.8",["powervr rogue g6110","6110",0,[[1024,600,11,"dasaita mtcd px5 head unit"],[1280,752,8,"visual land prestige prime 10se"],[1366,720,7,"ditecma m1092r"],[1920,1008,6,"vensmile t051 tv box"],[1920,1016,5,"geekbuying geekbox tv box"],[1920,1032,4,"hannspree hsg1351"],[1920,1080,5,"10moons tv box (rogue g6110)"],[1920,1128,5,"teclast p10"]]],["powervr rogue g6200","6200",0,[[1280,720,15,"infocus m530"],[1280,736,12,"amazon kindle fire hd 8 (5th gen, kfmewi)"],[1280,752,12,"amazon kindle fire hd 10 (5th gen, kftbwi)"],[1280,800,9,"amazon kindle fire hd 7 (4th gen, kfaswi)"],[1794,1080,5,"ubik uno"],[1920,1080,6,"cherry mobile x220 cosmos one plus"],[1920,1152,8,"meizu mx4 (m460, m460a, m461)"],[2392,1440,6,"hasee hl9916004"],[2560,1440,6,"condor allure a100 pgn-607"]]],["powervr rogue g6230","6230",0,[[1920,1008,8,"rikomagic mk80 tv box (tronsmart draco aw80, fantasy a80)"],[1920,1016,7,"cubietech cubieboard 4 (cc-a80, hansen-a80, development board)"],[2048,1440,5,"teclast p98air"],[2048,1464,7,"actions gs900a (development board)"]]],["powervr rogue g6400","6400",0,[[1794,1080,8,"lg f490 liger (g6400)"],[1920,1032,8,"renesas lager"]]],["powervr rogue g6430","6430",0,[[1024,552,26,"asus fonepad 7 (k01f fe171mg)"],[1280,720,27,"asus zenfone 2 (z008 ze550ml)"],[1280,736,20,"asus fonepad 7 (k019 fe375cg)"],[1280,752,27,"asus zenpad 10 (p01t z300cl)"],[1788,1080,8,"lg f490 liger (g6430)"],[1920,1080,15,"asus zenfone zoom (intel z3560, z00xsb zx551ml)"],[1920,1104,11,"asus memo pad 8 ast21 (intel z3580, k015 me581cl)"],[2048,1440,11,"asus zenpad s 8.0 (p01m z580c)"],[2560,1504,9,"dell venue 10 7040"]]],["powervr rogue ge8100","8100",0,[[906,480,8,"tinno k600"],[1184,720,5,"mediatek mt6739 (development board, rogue ge8100)"],[1339,720,5,"vodafone vfd 720"],[1344,720,6,"gionee f205"]]],["powervr rogue ge8300","8300",0,[[1280,752,9,"acer b3-a40 iconia one 10"],[1208,800,8,"verizon qtaki1"],[1920,1128,5,"acer b3-a40 fhd iconia one 10"]]],["powervr rogue gx6250","6250",0,[[688,412,16,"lenovo n23 yoga / flex 11 chromebook"],[1280,672,25,"renesas salvator-x-r8a7796"],[1280,736,25,"mediatek mt8173 (development board)"],[1920,980,10,"google chromebook pixel (2015, rogue gx6250)"],[1920,1016,14,"peloton ruby"],[1920,1020,8,"acer chromebook r13"],[1920,1032,13,"renesas salvator-x-m3"],[1920,1080,12,"xiaomi mibox 3 pro tv box"],[1920,1128,10,"amazon kindle fire hd 10 (2017, kfsuwi)"],[2048,1536,7,"alps jdtab j01"],[2560,1504,7,"onda f109"]]],["powervr rogue gx6650","6650",0,[[1280,672,52,"renesas salvator-x"],[1920,1032,24,"renesas salvator-x (octa core)"]]],["powervr rogue han","han",0,[[1794,1080,6,"ireadygo w3d"],[1920,1080,6,"changhong x6"],[2392,1440,5,"alcatel one touch d820"],[2560,1440,4,"alcatel 6071y phantom"]]],["powervr rogue hood","",0,[[1280,736,16,"dell venue 7 3740"],[1920,1080,12,"lenovo p90"],[1920,1104,9,"dell venue 8 3840"]]],["powervr rogue lando","",0,[[1920,1080,13,"spreadtrum sp9861e (development board, rogue lando)"]]],["powervr rogue marlowe","",0,[[1920,1080,39,"meitu v6 mp1605"],[2560,1440,25,"meizu pro 7 plus"]]]]')},804:(t,i,n)=>{var r={"./d-adreno.json":622,"./d-amd.json":183,"./d-apple.json":732,"./d-geforce.json":405,"./d-intel.json":178,"./d-nvidia.json":217,"./d-radeon.json":145,"./m-adreno.json":921,"./m-apple-ipad.json":535,"./m-apple.json":438,"./m-intel.json":283,"./m-mali-t.json":327,"./m-mali.json":538,"./m-nvidia.json":884,"./m-powervr.json":214};function o(t){return n(s(t))}function s(t){if(!n.o(r,t)){var i=Error("Cannot find module '"+t+"'");throw i.code="MODULE_NOT_FOUND",i}return r[t]}o.keys=function(){return Object.keys(r)}
vendor: 4,548 bytes, line 106
106,o.resolve=s,t.exports=o,o.id=804},354:(t,i,n)=>{var r,o=function(){function t(t,i){if(!o[t]){o[t]={};for(var n=0;n<t.length;n++)o[t][t.charAt(n)]=n}return o[t][i]}var i=String.fromCharCode,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={},s={compressToBase64:function(t){if(null==t)return"";var i=s._compress(t,6,function(t){return n.charAt(t)});switch(i.length%4){default:case 0:return i;case 1:return i+"===";case 2:return i+"==";case 3:return i+"="}},decompressFromBase64:function(i){return null==i?"":""==i?null:s._decompress(i.length,32,function(r){return t(n,i.charAt(r))})},compressToUTF16:function(t){return null==t?"":s._compress(t,15,function(t){return i(t+32)})+" "},decompressFromUTF16:function(t){return null==t?"":""==t?null:s._decompress(t.length,16384,function(i){return t.charCodeAt(i)-32})},compressToUint8Array:function(t){for(var i=s.compress(t),n=new Uint8Array(2*i.length),r=0,o=i.length;o>r;r++){var a=i.charCodeAt(r);n[2*r]=a>>>8,n[2*r+1]=a%256}return n},decompressFromUint8Array:function(t){if(null==t)return s.decompress(t);for(var n=Array(t.length/2),r=0,o=n.length;o>r;r++)n[r]=256*t[2*r]+t[2*r+1];var a=[];return n.forEach(function(t){a.push(i(t))}),s.decompress(a.join(""))},compressToEncodedURIComponent:function(t){return null==t?"":s._compress(t,6,function(t){return r.charAt(t)})},decompressFromEncodedURIComponent:function(i){return null==i?"":""==i?null:(i=i.replace(/ /g,"+"),s._decompress(i.length,32,function(n){return t(r,i.charAt(n))}))},compress:function(t){return s._compress(t,16,function(t){return i(t)})},_compress:function(t,i,n){if(null==t)return"";var r,o,s,a={},d={},c="",l="",u="",h=2,p=3,m=2,g=[],f=0,_=0;for(s=0;s<t.length;s+=1)if(c=t.charAt(s),Object.prototype.hasOwnProperty.call(a,c)||(a[c]=p++,d[c]=!0),l=u+c,Object.prototype.hasOwnProperty.call(a,l))u=l;else{if(Object.prototype.hasOwnProperty.call(d,u)){if(256>u.charCodeAt(0)){for(r=0;m>r;r++)f<<=1,_==i-1?(_=0,g.push(n(f)),f=0):_++;for(o=u.charCodeAt(0),r=0;8>r;r++)f=f<<1|1&o,_==i-1?(_=0,g.push(n(f)),f=0):_++,o>>=1}else{for(o=1,r=0;m>r;r++)f=f<<1|o,_==i-1?(_=0,g.push(n(f)),f=0):_++,o=0;for(o=u.charCodeAt(0),r=0;16>r;r++)f=f<<1|1&o,_==i-1?(_=0,g.push(n(f)),f=0):_++,o>>=1}0==--h&&(h=Math.pow(2,m),m++),delete d[u]}else for(o=a[u],r=0;m>r;r++)f=f<<1|1&o,_==i-1?(_=0,g.push(n(f)),f=0):_++,o>>=1;0==--h&&(h=Math.pow(2,m),m++),a[l]=p++,u=String(c)}if(""!==u){if(Object.prototype.hasOwnProperty.call(d,u)){if(256>u.charCodeAt(0)){for(r=0;m>r;r++)f<<=1,_==i-1?(_=0,g.push(n(f)),f=0):_++;for(o=u.charCodeAt(0),r=0;8>r;r++)f=f<<1|1&o,_==i-1?(_=0,g.push(n(f)),f=0):_++,o>>=1}else{for(o=1,r=0;m>r;r++)f=f<<1|o,_==i-1?(_=0,g.push(n(f)),f=0):_++,o=0;for(o=u.charCodeAt(0),r=0;16>r;r++)f=f<<1|1&o,_==i-1?(_=0,g.push(n(f)),f=0):_++,o>>=1}0==--h&&(h=Math.pow(2,m),m++),delete d[u]}else for(o=a[u],r=0;m>r;r++)f=f<<1|1&o,_==i-1?(_=0,g.push(n(f)),f=0):_++,o>>=1;0==--h&&(h=Math.pow(2,m),m++)}for(o=2,r=0;m>r;r++)f=f<<1|1&o,_==i-1?(_=0,g.push(n(f)),f=0):_++,o>>=1;for(;;){if(f<<=1,_==i-1){g.push(n(f));break}_++}return g.join("")},decompress:function(t){return null==t?"":""==t?null:s._decompress(t.length,32768,function(i){return t.charCodeAt(i)})},_decompress:function(t,n,r){var o,s,a,d,c,l,u,h=[],p=4,m=4,g=3,f="",_=[],v={val:r(0),position:n,index:1};for(o=0;3>o;o+=1)h[o]=o;for(a=0,c=4,l=1;l!=c;)d=v.val&v.position,v.position>>=1,0==v.position&&(v.position=n,v.val=r(v.index++)),a|=(d>0)*l,l<<=1;switch(a){case 0:for(a=0,c=256,l=1;l!=c;)d=v.val&v.position,v.position>>=1,0==v.position&&(v.position=n,v.val=r(v.index++)),a|=(d>0)*l,l<<=1;u=i(a);break;case 1:for(a=0,c=65536,l=1;l!=c;)d=v.val&v.position,v.position>>=1,0==v.position&&(v.position=n,v.val=r(v.index++)),a|=(d>0)*l,l<<=1;u=i(a);break;case 2:return""}for(h[3]=u,s=u,_.push(u);;){if(v.index>t)return"";for(a=0,c=Math.pow(2,g),l=1;l!=c;)d=v.val&v.position,v.position>>=1,0==v.position&&(v.position=n,v.val=r(v.index++)),a|=(d>0)*l,l<<=1;switch(u=a){case 0:for(a=0,c=256,l=1;l!=c;)d=v.val&v.position,v.position>>=1,0==v.position&&(v.position=n,v.val=r(v.index++)),a|=(d>0)*l,l<<=1;h[m++]=i(a),u=m-1,p--;break;case 1:for(a=0,c=65536,l=1;l!=c;)d=v.val&v.position,v.position>>=1,0==v.position&&(v.position=n,v.val=r(v.index++)),a|=(d>0)*l,l<<=1;h[m++]=i(a),u=m-1,p--;break;case 2:return _.join("")}if(0==p&&(p=Math.pow(2,g),g++),h[u])f=h[u];else{if(u!==m)return null;f=s+s.charAt(0)}_.push(f),h[m++]=s+f.charAt(0),s=f,0==--p&&(p=Math.pow(2,g),g++)}}};return s}();void 0===(r=(function(){return o}
106).call(i,n,i,t))||(t.exports=r)}},i={};function n(r){if(i[r])return i[r].exports;var o=i[r]={exports:{}};return t[r].call(o.exports,o,o.exports,n),o.exports}return n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,i)=>Object.prototype.hasOwnProperty.call(t,i),n(607)})().default},775(t,i){"use strict";i.byteLength=function(t){var i=d(t),n=i[0],r=i[1];return 3*(n+r)/4-r},i.toByteArray=function(t){var i,n,s,a=d(t),c=a[0],l=a[1],u=new o(3*(c+(i=l))/4-i),h=0,p=l>0?c-4:c;for(s=0;s<p;s+=4)n=r[t.charCodeAt(s)]<<18|r[t.charCodeAt(s+1)]<<12|r[t.charCodeAt(s+2)]<<6|r[t.charCodeAt(s+3)],u[h++]=n>>16&255,u[h++]=n>>8&255,u[h++]=255&n;return 2===l&&(n=r[t.charCodeAt(s)]<<2|r[t.charCodeAt(s+1)]>>4,u[h++]=255&n),1===l&&(n=r[t.charCodeAt(s)]<<10|r[t.charCodeAt(s+1)]<<4|r[t.charCodeAt(s+2)]>>2,u[h++]=n>>8&255,u[h++]=255&n),u},i.fromByteArray=function(t){for(var i,r=t.length,o=r%3,s=[],a=16383,d=0,c=r-o;d<c;d+=a)s.push(l(t,d,d+a>c?c:d+a));return 1===o?s.push(n[(i=t[r-1])>>2]+n[i<<4&63]+"=="):2===o&&s.push(n[(i=(t[r-2]<<8)+t[r-1])>>10]+n[i>>4&63]+n[i<<2&63]+"="),s.join("")};for(var n=[],r=[],o="u">typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0;a<64;++a)n[a]=s[a],r[s.charCodeAt(a)]=a;function d(t){var i=t.length;if(i%4>0)throw Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");return -1===n&&(n=i),[n,n===i?0:4-n%4]}function c(t){return n[t>>18&63]+n[t>>12&63]+n[t>>6&63]+n[63&t]}function l(t,i,n){for(var r=[],o=i;o<n;o+=3)r.push(c((t[o]<<16&0xff0000)+(t[o+1]<<8&65280)+(255&t[o+2])));return r.join("")}r[45]=62,r[95]=63},943(t,i){var n,r;this||window,void 0===(r="function"==typeof(n=function(){var t=/^(interactive|loaded|complete)$/,i=window.location?window.location.href:null,n=i&&i.replace(/#.*$/,"").replace(/\?.*$/,"")||null,r=document.getElementsByTagName("script"),o="readyState"in(r[0]||document.createElement("script")),s=!window.opera||"[object Opera]"!==window.opera.toString(),a="currentScript"in document;"stackTraceLimit"in Error&&Error.stackTraceLimit!==1/0&&(Error.stackTraceLimit=1/0);var d=!1,c=!1;function l(t,i){var n,r=null,o="number"==typeof i;return i=o?Math.round(i):0,"string"==typeof t&&t&&(o?n=t.match(/(data:text\/javascript(?:;[^,]+)?,.+?|(?:|blob:)(?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/):(n=t.match(/^(?:|[^:@]*@|.+\)@(?=data:text\/javascript|blob|http[s]?|file)|.+?\s+(?: at |@)(?:[^:\(]+ )*[\(]?)(data:text\/javascript(?:;[^,]+)?,.+?|(?:|blob:)(?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/))&&n[1]||(n=t.match(/\)@(data:text\/javascript(?:;[^,]+)?,.+?|(?:|blob:)(?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/)),n&&n[1]&&(r=i>0?l(t.slice(t.indexOf(n[0])+n[0].length),i-1):n[1])),r}function u(){if(0===r.length)return null;var i,h,p,m,g,f=[],_=u.skipStackDepth||1;for(i=0;i<r.length;i++)s&&o?t.test(r[i].readyState)&&f.push(r[i]):f.push(r[i]);if(h=Error(),d&&(p=h.stack),!p&&c)try{throw h}catch(t){p=t.stack}if(!p||(g=function(t,i){var n,o=null;if(i=i||r,"string"==typeof t&&t){for(n=i.length;n--;)if(i[n].src===t){o=i[n];break}}return o}(m=l(p,_),f))||!n||m!==n||(g=function(t){var i,n,o=null;for(i=0,n=(t=t||r).length;i<n;i++)if(!t[i].hasAttribute("src")){if(o){o=null;break}o=t[i]}return o}(f)),g||1===f.length&&(g=f[0]),g||a&&(g=document.currentScript),!g&&s&&o){for(i=f.length;i--;)if("interactive"===f[i].readyState){g=f[i];break}}return g||(g=f[f.length-1]||null),g}(function(){try{var t=Error();throw d="string"==typeof t.stack&&!!t.stack,t}catch(t){c="string"==typeof t.stack&&!!t.stack}})(),u.skipStackDepth=1;var h=u;return h.near=u,h.far=function(){return null},h.origin=function(){return null},h})?n.apply(i,[]):n)||(t.exports=r)},550(t){"use strict";var i,n="object"==typeof Reflect?Reflect:null,r=n&&"function"==typeof n.apply?n.apply:function(t,i,n){return Function.prototype.apply.call(t,i,n)};i=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var o=Number.isNaN||function(t){return t!=t};function s(){s.init.call(this)}t.exports=s,t.exports.once=function(t,i){return new Promise(function(n,r){function o(n){t.removeListener(i,s),r(n)}function s(){"function"==typeof t.removeListener&&t.removeListener("error",o),n([].slice.call(arguments))}f(t,i,s,{once:!0}),"error"!==i&&function(t,i){"function"==typeof t.on&&f(t,"error",i,{once:!0})}(t,o)})},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var a=10;function d(t){if("function"!=typeof t)throw TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function c(t){return void 0===t._maxListeners?s.defaultMaxListeners:t._maxListeners}function l(t,i,n,r){var o,s,a,l;if(d(n),void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",i,n.listener?n.listener:n),s=t._events),a=s[i]),void 0===a)a=s[i]=n,++t._eventsCount;else if("function"==typeof a?a=s[i]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),(o=c(t))>0&&a.length>o&&!a.warned){a.warned=!0;var u=Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(i)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=t,u.type=i,u.count=a.length,l=u,console&&console.warn&&console.warn(l)}return t}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0==arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(t,i,n){var r={fired:!1,wrapFn:void 0,target:t,type:i,listener:n}
106,o=u.bind(r);return o.listener=n,r.wrapFn=o,o}function p(t,i,n){var r=t._events;if(void 0===r)return[];var o=r[i];return void 0===o?[]:"function"==typeof o?n?[o.listener||o]:[o]:n?function(t){for(var i=Array(t.length),n=0;n<i.length;++n)i[n]=t[n].listener||t[n];return i}(o):g(o,o.length)}function m(t){var i=this._events;if(void 0!==i){var n=i[t];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function g(t,i){for(var n=Array(i),r=0;r<i;++r)n[r]=t[r];return n}function f(t,i,n,r){if("function"==typeof t.on)r.once?t.once(i,n):t.on(i,n);else{if("function"!=typeof t.addEventListener)throw TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof t);t.addEventListener(i,function o(s){r.once&&t.removeEventListener(i,o),n(s)})}}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(t){if("number"!=typeof t||t<0||o(t))throw RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");a=t}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||o(t))throw RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this},s.prototype.getMaxListeners=function(){return c(this)},s.prototype.emit=function(t){for(var i=[],n=1;n<arguments.length;n++)i.push(arguments[n]);var o="error"===t,s=this._events;if(void 0!==s)o=o&&void 0===s.error;else if(!o)return!1;if(o){if(i.length>0&&(a=i[0]),a instanceof Error)throw a;var a,d=Error("Unhandled error."+(a?" ("+a.message+")":""));throw d.context=a,d}var c=s[t];if(void 0===c)return!1;if("function"==typeof c)r(c,this,i);else{var l=c.length,u=g(c,l);for(n=0;n<l;++n)r(u[n],this,i)}return!0},s.prototype.addListener=function(t,i){return l(this,t,i,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(t,i){return l(this,t,i,!0)},s.prototype.once=function(t,i){return d(i),this.on(t,h(this,t,i)),this},s.prototype.prependOnceListener=function(t,i){return d(i),this.prependListener(t,h(this,t,i)),this},s.prototype.removeListener=function(t,i){var n,r,o,s,a;if(d(i),void 0===(r=this._events)||void 0===(n=r[t]))return this;if(n===i||n.listener===i)0==--this._eventsCount?this._events=Object.create(null):(delete r[t],r.removeListener&&this.emit("removeListener",t,n.listener||i));else if("function"!=typeof n){for(o=-1,s=n.length-1;s>=0;s--)if(n[s]===i||n[s].listener===i){a=n[s].listener,o=s;break}if(o<0)return this;0===o?n.shift():function(t,i){for(;i+1<t.length;i++)t[i]=t[i+1];t.pop()}(n,o),1===n.length&&(r[t]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",t,a||i)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(t){var i,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0==arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[t]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[t]),this;if(0==arguments.length){var o,s=Object.keys(n);for(r=0;r<s.length;++r)"removeListener"!==(o=s[r])&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(i=n[t]))this.removeListener(t,i);else if(void 0!==i)for(r=i.length-1;r>=0;r--)this.removeListener(t,i[r]);return this},s.prototype.listeners=function(t){return p(this,t,!0)},s.prototype.rawListeners=function(t){return p(this,t,!1)},s.listenerCount=function(t,i){return"function"==typeof t.listenerCount?t.listenerCount(i):m.call(t,i)},s.prototype.listenerCount=m,s.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},177(module,exports,__nested_rspack_require_1021615_1021634__){var __WEBPACK_AMD_DEFINE_RESULT__;!function(){"use strict";var ERROR="input is invalid type",WINDOW="object"==typeof window,root=WINDOW?window:{};root.JS_MD5_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&"object"==typeof self,NODE_JS=!root.JS_MD5_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;NODE_JS?root=__nested_rspack_require_1021615_1021634__.g:WEB_WORKER&&(root=self);var buffer8,COMMON_JS=!root.JS_MD5_NO_COMMON_JS&&module.exports,AMD=__nested_rspack_require_1021615_1021634__.amdO,ARRAY_BUFFER=!root.JS_MD5_NO_ARRAY_BUFFER&&"u">typeof ArrayBuffer,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[128,32768,8388608,-0x80000000],SHIFT=[0,8,16,24],OUTPUT_TYPES=["hex","array","digest","buffer","arrayBuffer","base64"],BASE64_ENCODE_CHAR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
106+/".split(""),blocks=[];if(ARRAY_BUFFER){var buffer=new ArrayBuffer(68);buffer8=new Uint8Array(buffer),blocks=new Uint32Array(buffer)}!root.JS_MD5_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),ARRAY_BUFFER&&(root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var createOutputMethod=function(t){return function(i){return new Md5(!0).update(i)[t]()}},createMethod=function(){var t=createOutputMethod("hex");NODE_JS&&(t=nodeWrap(t)),t.create=function(){return new Md5},t.update=function(i){return t.create().update(i)};for(var i=0;i<OUTPUT_TYPES.length;++i){var n=OUTPUT_TYPES[i];t[n]=createOutputMethod(n)}return t},nodeWrap=function(method){var crypto=eval("require('crypto')"),Buffer=eval("require('buffer').Buffer"),nodeMethod=function(t){if("string"==typeof t)return crypto.createHash("md5").update(t,"utf8").digest("hex");if(null==t)throw ERROR;return t.constructor===ArrayBuffer&&(t=new Uint8Array(t)),Array.isArray(t)||ArrayBuffer.isView(t)||t.constructor===Buffer?crypto.createHash("md5").update(new Buffer(t)).digest("hex"):method(t)};return nodeMethod};function Md5(t){if(t)blocks[0]=blocks[16]=blocks[1]=blocks[2]=blocks[3]=blocks[4]=blocks[5]=blocks[6]=blocks[7]=blocks[8]=blocks[9]=blocks[10]=blocks[11]=blocks[12]=blocks[13]=blocks[14]=blocks[15]=0,this.blocks=blocks,this.buffer8=buffer8;else if(ARRAY_BUFFER){var i=new ArrayBuffer(68);this.buffer8=new Uint8Array(i),this.blocks=new Uint32Array(i)}else this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h0=this.h1=this.h2=this.h3=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}Md5.prototype.update=function(t){if(!this.finalized){var i,n=typeof t;if("string"!==n){if("object"!==n||null===t)throw ERROR;if(ARRAY_BUFFER&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||ARRAY_BUFFER&&ArrayBuffer.isView(t)))throw E
106RROR;i=!0}for(var r,o,s=0,a=t.length,d=this.blocks,c=this.buffer8;s<a;){if(this.hashed&&(this.hashed=!1,d[0]=d[16],d[16]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=0),i)if(ARRAY_BUFFER)for(o=this.start;s<a&&o<64;++s)c[o++]=t[s];else for(o=this.start;s<a&&o<64;++s)d[o>>2]|=t[s]<<SHIFT[3&o++];else if(ARRAY_BUFFER)for(o=this.start;s<a&&o<64;++s)(r=t.charCodeAt(s))<128?c[o++]=r:(r<2048?c[o++]=192|r>>6:(r<55296||r>=57344?c[o++]=224|r>>12:(r=65536+((1023&r)<<10|1023&t.charCodeAt(++s)),c[o++]=240|r>>18,c[o++]=128|r>>12&63),c[o++]=128|r>>6&63),c[o++]=128|63&r);else for(o=this.start;s<a&&o<64;++s)(r=t.charCodeAt(s))<128?d[o>>2]|=r<<SHIFT[3&o++]:(r<2048?d[o>>2]|=(192|r>>6)<<SHIFT[3&o++]:(r<55296||r>=57344?d[o>>2]|=(224|r>>12)<<SHIFT[3&o++]:(r=65536+((1023&r)<<10|1023&t.charCodeAt(++s)),d[o>>2]|=(240|r>>18)<<SHIFT[3&o++],d[o>>2]|=(128|r>>12&63)<<SHIFT[3&o++]),d[o>>2]|=(128|r>>6&63)<<SHIFT[3&o++]),d[o>>2]|=(128|63&r)<<SHIFT[3&o++]);this.lastByteIndex=o,this.bytes+=o-this.start,o>=64?(this.start=o-64,this.hash(),this.hashed=!0):this.start=o}return this.bytes>0xffffffff&&(this.hBytes+=this.bytes/0x100000000|0,this.bytes=this.bytes%0x100000000),this}},Md5.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,i=this.lastByteIndex;t[i>>2]|=EXTRA[3&i],i>=56&&(this.hashed||this.hash(),t[0]=t[16],t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.bytes<<3,t[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},Md5.prototype.hash=function(){var t,i,n,r,o,s,a=this.blocks;this.first?i=((i=((t=((t=a[0]-0x28955b89)<<7|t>>>25)-0x10325477|0)^(n=((n=(-0x10325477^(r=((r=(-0x67452302^0x77777777&t)+a[1]-0x705f434)<<12|r>>>20)+t|0)&(-0x10325477^t))+a[2]-0x4324b227)<<17|n>>>15)+r|0)&(r^t))+a[3]-0x4e748589)<<22|i>>>10)+n|0:(t=this.h0,i=this.h1,n=this.h2,i=((i+=((t=((t+=((r=this.h3)^i&(n^r))+a[0]-0x28955b88)<<7|t>>>25)+i|0)^(n=((n+=(i^(r=((r+=(n^t&(i^n))+a[1]-0x173848aa)<<12|r>>>20)+t|0)&(t^i))+a[2]+0x242070db)<<17|n>>>15)+r|0)&(r^t))+a[3]-0x3e423112)<<22|i>>>10)+n|0),i=((i+=((t=((t+=(r^i&(n^r))+a[4]-0xa83f051)<<7|t>>>25)+i|0)^(n=((n+=(i^(r=((r+=(n^t&(i^n))+a[5]+0x4787c62a)<<12|r>>>20)+t|0)&(t^i))+a[6]-0x57cfb9ed)<<17|n>>>15)+r|0)&(r^t))+a[7]-0x2b96aff)<<22|i>>>10)+n|0,i=((i+=((t=((t+=(r^i&(n^r))+a[8]+0x698098d8)<<7|t>>>25)+i|0)^(n=((n+=(i^(r=((r+=(n^t&(i^n))+a[9]-0x74bb0851)<<12|r>>>20)+t|0)&(t^i))+a[10]-42063)<<17|n>>>15)+r|0)&(r^t))+a[11]-0x76a32842)<<22|i>>>10)+n|0,i=((i+=((t=((t+=(r^i&(n^r))+a[12]+0x6b901122)<<7|t>>>25)+i|0)^(n=((n+=(i^(r=((r+=(n^t&(i^n))+a[13]-0x2678e6d)<<12|r>>>20)+t|0)&(t^i))+a[14]-0x5986bc72)<<17|n>>>15)+r|0)&(r^t))+a[15]+0x49b40821)<<22|i>>>
10610)+n|0,i=((i+=((r=((r+=(i^n&((t=((t+=(n^r&(i^n))+a[1]-0x9e1da9e)<<5|t>>>27)+i|0)^i))+a[6]-0x3fbf4cc0)<<9|r>>>23)+t|0)^t&((n=((n+=(t^i&(r^t))+a[11]+0x265e5a51)<<14|n>>>18)+r|0)^r))+a[0]-0x16493856)<<20|i>>>12)+n|0,i=((i+=((r=((r+=(i^n&((t=((t+=(n^r&(i^n))+a[5]-0x29d0efa3)<<5|t>>>27)+i|0)^i))+a[10]+0x2441453)<<9|r>>>23)+t|0)^t&((n=((n+=(t^i&(r^t))+a[15]-0x275e197f)<<14|n>>>18)+r|0)^r))+a[4]-0x182c0438)<<20|i>>>12)+n|0,i=((i+=((r=((r+=(i^n&((t=((t+=(n^r&(i^n))+a[9]+0x21e1cde6)<<5|t>>>27)+i|0)^i))+a[14]-0x3cc8f82a)<<9|r>>>23)+t|0)^t&((n=((n+=(t^i&(r^t))+a[3]-0xb2af279)<<14|n>>>18)+r|0)^r))+a[8]+0x455a14ed)<<20|i>>>12)+n|0,i=((i+=((r=((r+=(i^n&((t=((t+=(n^r&(i^n))+a[13]-0x561c16fb)<<5|t>>>27)+i|0)^i))+a[2]-0x3105c08)<<9|r>>>23)+t|0)^t&((n=((n+=(t^i&(r^t))+a[7]+0x676f02d9)<<14|n>>>18)+r|0)^r))+a[12]-0x72d5b376)<<20|i>>>12)+n|0,i=((i+=((s=(r=((r+=((o=i^n)^(t=((t+=(o^r)+a[5]-378558)<<4|t>>>28)+i|0))+a[8]-0x788e097f)<<11|r>>>21)+t|0)^t)^(n=((n+=(s^i)+a[11]+0x6d9d6122)<<16|n>>>16)+r|0))+a[14]-0x21ac7f4)<<23|i>>>9)+n|0,i=((i+=((s=(r=((r+=((o=i^n)^(t=((t+=(o^r)+a[1]-0x5b4115bc)<<4|t>>>28)+i|0))+a[4]+0x4bdecfa9)<<11|r>>>21)+t|0)^t)^(n=((n+=(s^i)+a[7]-0x944b4a0)<<16|n>>>16)+r|0))+a[10]-0x41404390)<<23|i>>>9)+n|0,i=((i+=((s=(r=((r+=((o=i^n)^(t=((t+=(o^r)+a[13]+0x289b7ec6)<<4|t>>>28)+i|0))+a[0]-0x155ed806)<<11|r>>>21)+t|0)^t)^(n=((n+=(s^i)+a[3]-0x2b10cf7b)<<16|n>>>16)+r|0))+a[6]+0x4881d05)<<23|i>>>9)+n|0,i=((i+=((s=(r=((r+=((o=i^n)^(t=((t+=(o^r)+a[9]-0x262b2fc7)<<4|t>>>28)+i|0))+a[12]-0x1924661b)<<11|r>>>21)+t|0)^t)^(n=((n+=(s^i)+a[15]+0x1fa27cf8)<<16|n>>>16)+r|0))+a[2]-0x3b53a99b)<<23|i>>>9)+n|0,i=((i+=((r=((r+=(i^((t=((t+=(n^(i|~r))+a[0]-0xbd6ddbc)<<6|t>>>26)+i|0)|~n))+a[7]+0x432aff97)<<10|r>>>22)+t|0)^((n=((n+=(t^(r|~i))+a[14]-0x546bdc59)<<15|n>>>17)+r|0)|~t))+a[5]-0x36c5fc7)<<21|i>>>11)+n|0,i=((i+=((r=((r+=(i^((t=((t+=(n^(i|~r))+a[12]+0x655b59c3)<<6|t>>>26)+i|0)|~n))+a[3]-0x70f3336e)<<10|r>>>22)+t|0)^((n=((n+=(t^(r|~i))+a[10]-1051523)<<15|n>>>17)+r|0)|~t))+a[1]-0x7a7ba22f)<<21|i>>>11)+n|0,i=((i+=((r=((r+=(i^((t=((t+=(n^(i|~r))+a[8]+0x6fa87e4f)<<6|t>>>26)+i|0)|~n))+a[15]-0x1d31920)<<10|r>>>22)+t|0)^((n=((n+=(t^(r|~i))+a[6]-0x5cfebcec)<<15|n>>>17)+r|0)|~t))+a[13]+0x4e0811a1)<<21|i>>>11)+n|0,i=((i+=((r=((r+=(i^((t=((t+=(n^(i|~r))+a[4]-0x8ac817e)<<6|t>>>26)+i|0)|~n))+a[11]-0x42c50dcb)<<10|r>>>22)+t|0)^((n=((n+=(t^(r|~i))+a[2]+0x2ad7d2bb)<<15|n>>>17)+r|0)|~t))+a[9]-0x14792c6f)<<21|i>>>11)+n|0,this.first?(this.h0=t+0x67452301|0,this.h1=i-0x10325477|0,this.h2=n-0x67452302|0,this.h3=r+0x10325476|0,this.first=!1):(this.h0=this.h0+t|0,this.h1=this.h1+i|0,this.h2=this.h2+n|0,this.h3=this.h3+r|0)},Md5.prototype.hex=function(){this.finalize();var t=this.h0,i=this.h1,n=this.h2,r=this.h3;return HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[15&i]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]},Md5.prototype.toString=Md5.prototype.hex,Md5.prototype.digest=function(){this.finalize();var t=this.h0,i=this.h1,n=this.h2,r=this.h3;return[255&t,t>>8&255,t>>16&255,t>>24&255,255&i,i>>8&255,i>>16&255,i>>24&255,255&n,n>>8&255,n>>16&255,n>>24&255,255&r,r>>8&255,r>>16&255,r>>24&255]},Md5.prototype.array=Md5.prototype.digest,Md5.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(16),i=new Uint32Array(t);return i[0]=this.h0,i[1]=this.h1,i[2]=this.h2,i[3]=this.h3,t},Md5.prototype.buffer=Md5.prototype.arrayBuffer,Md5.prototype.base64=function(){for(var t,i,n,r="",o=this.array(),s=0;s<15;)t=o[s++],i=o[s++],n=o[s++],r+=BASE64_ENCODE_CHAR[t>>>2]+BASE64_ENCODE_CHAR[63&(t<<4|i>>>4)]+BASE64_ENCODE_CHAR[63&(i<<2|n>>>6)]+BASE64_ENCODE_CHAR[63&n];return r+(BASE64_ENCODE_CHAR[(t=o[s])>>>2]+BASE64_ENCODE_CHAR[t<<4&63]+"==")};var exports=createMethod();COMMON_JS?module.exports=exports:(root.md5=exports,AMD&&(__WEBPACK_AMD_DEFINE_RESULT__=(function(){return exports}).call(exports,__nested_rspack_require_1021615_1021634__,exports,module),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)))}()},323(t){var i=t.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(t){return t.encoding?"rtpmap:%d %s/%s/%s":t.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(t){return null!=t.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%d trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(t){return null!=t.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))? (\S*)(?: (\S*))?/,names:["value","direction","uri","config"],format:function(t){return"extmap:%d"+(t.direction?"/%s":"%v")+" %s"+(t.config?" %s":"")}},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(t){return null!=t.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\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(t){var i="candidate:%s %d %s %d %s %d typ %s";return i+=(null!=t.raddr?" raddr %s rport %d":"%v%v")+(null!=t.tcptype?" tcptype %s":"%v"),null!=t.generation&&(i+=" generation %d"),(i+=null!=t["network-id"]?" network-id %d":"%v")+(null!=t["network-cost"]?" network-cost %d":"%v")}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_]*)(?::(.*))?/,names:["id","attribute","value"],format:function(t){var i="ssrc:%d";return null!=t.attribute&&(i+=" %s",null!=t.value&&(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","max
106MessageSize"],format:function(t){return null!=t.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(t){return t.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg: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(t){return"imageattr:%s %s %s"+(t.dir2?" %s %s":"")}},{name:"simulcast",reg:RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(t){return"simulcast:%s %s"+(t.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"},{push:"invalid",names:["value"]}]};
vendor: 2,776 bytes, line 106
106Object.keys(i).forEach(function(t){i[t].forEach(function(t){t.reg||(t.reg=/(.*)/),t.format||(t.format="%s")})})},330(t,i,n){var r=n(723);i.write=n(491),i.parse=r.parse,i.parseFmtpConfig=r.parseFmtpConfig,i.parseParams=r.parseParams,i.parsePayloads=r.parsePayloads,i.parseRemoteCandidates=r.parseRemoteCandidates,i.parseImageAttributes=r.parseImageAttributes,i.parseSimulcastStreamList=r.parseSimulcastStreamList},723(t,i,n){var r=function(t){return String(Number(t))===t?Number(t):t},o=function(t,i,n){var o=t.name&&t.names;t.push&&!i[t.push]?i[t.push]=[]:o&&!i[t.name]&&(i[t.name]={});var s=t.push?{}:o?i[t.name]:i;!function(t,i,n,o){if(o&&!n)i[o]=r(t[1]);else for(var s=0;s<n.length;s+=1)null!=t[s+1]&&(i[n[s]]=r(t[s+1]))}(n.match(t.reg),s,t.names,t.name),t.push&&i[t.push].push(s)},s=n(323),a=RegExp.prototype.test.bind(/^([a-z])=(.*)/);i.parse=function(t){var i={},n=[],r=i;return t.split(/(\r\n|\r|\n)/).filter(a).forEach(function(t){var i=t[0],a=t.slice(2);"m"===i&&(n.push({rtp:[],fmtp:[]}),r=n[n.length-1]);for(var d=0;d<(s[i]||[]).length;d+=1){var c=s[i][d];if(c.reg.test(a))return o(c,r,a)}}),i.media=n,i};var d=function(t,i){var n=i.split(/=(.+)/,2);return 2===n.length&&(t[n[0]]=r(n[1])),t};i.parseParams=function(t){return t.split(/\;\s?/).reduce(d,{})},i.parseFmtpConfig=i.parseParams,i.parsePayloads=function(t){return t.split(" ").map(Number)},i.parseRemoteCandidates=function(t){for(var i=[],n=t.split(" ").map(r),o=0;o<n.length;o+=3)i.push({component:n[o],ip:n[o+1],port:n[o+2]});return i},i.parseImageAttributes=function(t){return t.split(" ").map(function(t){return t.substring(1,t.length-1).split(",").reduce(d,{})})},i.parseSimulcastStreamList=function(t){return t.split(";").map(function(t){return t.split(",").map(function(t){var i,n=!1;return"~"!==t[0]?i=r(t):(i=r(t.substring(1,t.length)),n=!0),{scid:i,paused:n}})})}},491(t,i,n){var r=n(323),o=/%[sdv%]/g,s=function(t){var i=1,n=arguments,r=n.length;return t.replace(o,function(t){if(i>=r)return t;var o=n[i];switch(i+=1,t){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},a=function(t,i,n){var r=[t+"="+(i.format instanceof Function?i.format(i.push?n:n[i.name]):i.format)];if(i.names)for(var o=0;o<i.names.length;o+=1){var a=i.names[o];i.name?r.push(n[i.name][a]):r.push(n[i.names[o]])}else r.push(n[i.name]);return s.apply(null,r)},d=["v","o","s","i","u","e","p","c","b","t","r","z","a"],c=["i","c","b","a"];t.exports=function(t,i){i=i||{},null==t.version&&(t.version=0),null==t.name&&(t.name=" "),t.media.forEach(function(t){null==t.payloads&&(t.payloads="")});var n=i.outerOrder||d,o=i.innerOrder||c,s=[];return n.forEach(function(i){r[i].forEach(function(n){n.name in t&&null!=t[n.name]?s.push(a(i,n,t)):n.push in t&&null!=t[n.push]&&t[n.push].forEac
vendor: 4,367 bytes, lines 106-116
106h(function(t){s.push(a(i,n,t))})})}),t.media.forEach(function(t){s.push(a("m",r.m[0],t)),o.forEach(function(i){r[i].forEach(function(n){n.name in t&&null!=t[n.name]?s.push(a(i,n,t)):n.push in t&&null!=t[n.push]&&t[n.push].forEach(function(t){s.push(a(i,n,t))})})})}),s.join(`\r 107`)+`\r 108`}},722(t){"use strict";let i={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};i.localCName=i.generateIdentifier(),i.splitLines=function(t){return t.trim().split(` 109`).map(t=>t.trim())},i.splitSections=function(t){return t.split(` 110m=`).map((t,i)=>(i>0?"m="+t:t).trim()+`\r 111`)},i.getDescription=function(t){let n=i.splitSections(t);return n&&n[0]},i.getMediaSections=function(t){let n=i.splitSections(t);return n.shift(),n},i.matchPrefix=function(t,n){return i.splitLines(t).filter(t=>0===t.indexOf(n))},i.parseCandidate=function(t){let i,n={foundation:(i=0===t.indexOf("a=candidate:")?t.substring(12).split(" "):t.substring(10).split(" "))[0],component:{1:"rtp",2:"rtcp"}[i[1]]||i[1],protocol:i[2].toLowerCase(),priority:parseInt(i[3],10),ip:i[4],address:i[4],port:parseInt(i[5],10),type:i[7]};for(let t=8;t<i.length;t+=2)switch(i[t]){case"raddr":n.relatedAddress=i[t+1];break;case"rport":n.relatedPort=parseInt(i[t+1],10);break;case"tcptype":n.tcpType=i[t+1];break;case"ufrag":n.ufrag=i[t+1],n.usernameFragment=i[t+1];break;default:void 0===n[i[t]]&&(n[i[t]]=i[t+1])}return n},i.writeCandidate=function(t){let i=[];i.push(t.foundation);let n=t.component;"rtp"===n?i.push(1):"rtcp"===n?i.push(2):i.push(n),i.push(t.protocol.toUpperCase()),i.push(t.priority),i.push(t.address||t.ip),i.push(t.port);let r=t.type;return i.push("typ"),i.push(r),"host"!==r&&t.relatedAddress&&t.relatedPort&&(i.push("raddr"),i.push(t.relatedAddress),i.push("rport"),i.push(t.relatedPort)),t.tcpType&&"tcp"===t.protocol.toLowerCase()&&(i.push("tcptype"),i.push(t.tcpType)),(t.usernameFragment||t.ufrag)&&(i.push("ufrag"),i.push(t.usernameFragment||t.ufrag)),"candidate:"+i.join(" ")},i.parseIceOptions=function(t){return t.substr(14).split(" ")},i.parseRtpMap=function(t){let i=t.substr(9).split(" "),n={payloadType:parseInt(i.shift(),10)};return n.name=(i=i[0].split("/"))[0],n.clockRate=parseInt(i[1],10),n.channels=3===i.length?parseInt(i[2],10):1,n.numChannels=n.channels,n},i.writeRtpMap=function(t){let i=t.payloadType;void 0!==t.preferredPayloadType&&(i=t.preferredPayloadType);let n=t.channels||t.numChannels||1;return"a=rtpmap:"+i+" "+t.name+"/"+t.clockRate+(1!==n?"/"+n:"")+`\r 112`},i.parseExtmap=function(t){let i=t.substr(9).split(" ");return{id:parseInt(i[0],10),direction:i[0].indexOf("/")>0?i[0].split("/")[1]:"sendrecv",uri:i[1]}},i.writeExtmap=function(t){return"a=extmap:"+(t.id||t.preferredId)+(t.direction&&"sendrecv"!==t.direction?"/"+t.direction:"")+" "+t.uri+`\r 113`},i.parseFmtp=function(t){let i,n={},r=t.substr(t.indexOf(" ")+1).split(";");for(let t=0;t<r.length;t++)n[(i=r[t].trim().split("="))[0].trim()]=i[1];return n},i.writeFmtp=function(t){let i="",n=t.payloadType;if(void 0!==t.preferredPayloadType&&(n=t.preferredPayloadType),t.parameters&&Object.keys(t.parameters).length){let r=[];Object.keys(t.parameters).forEach(i=>{void 0!==t.parameters[i]?r.push(i+"="+t.parameters[i]):r.push(i)}),i+="a=fmtp:"+n+" "+r.join(";")+`\r 114`}return i},i.parseRtcpFb=function(t){let i=t.substr(t.indexOf(" ")+1).split(" ");return{type:i.shift(),parameter:i.join(" ")}},i.writeRtcpFb=function(t){let i="",n=t.payloadType;return void 0!==t.preferredPayloadType&&(n=t.preferredPayloadType),t.rtcpFeedback&&t.rtcpFeedback.length&&t.rtcpFeedback.forEach(t=>{i+="a=rtcp-fb:"+n+" "+t.type+(t.parameter&&t.parameter.length?" "+t.parameter:"")+`\r 115`}),i},i.parseSsrcMedia=function(t){let i=t.indexOf(" "),n={ssrc:parseInt(t.substr(7,i-7),10)},r=t.indexOf(":",i);return r>-1?(n.attribute=t.substr(i+1,r-i-1),n.value=t.substr(r+1)):n.attribute=t.substr(i+1),n},i.parseSsrcGroup=function(t){let i=t.substr(13).split(" ");return{semantics:i.shift(),ssrcs:i.map(t=>parseInt(t,10))}},i.getMid=function(t){let n=i.matchPrefix(t,"a=mid:")[0];if(n)return n.substr(6)},i.parseFingerprint=function(t){let i=t.substr(14).split(" ");return{algorithm:i[0].toLowerCase(),value:i[1].toUpperCase()}},i.getDtlsParameters=function(t,n){return{role:"auto",fingerprints:i.matchPrefix(t+n,"a=fingerprint:").map(i.parseFingerprint)}},i.writeDtlsParameters=function(t,i){let n="a=setup:"+i+`\r 116`;
vendor: 9,394 bytes, lines 116-139
116return t.fingerprints.forEach(t=>{n+="a=fingerprint:"+t.algorithm+" "+t.value+`\r 117`}),n},i.parseCryptoLine=function(t){let i=t.substr(9).split(" ");return{tag:parseInt(i[0],10),cryptoSuite:i[1],keyParams:i[2],sessionParams:i.slice(3)}},i.writeCryptoLine=function(t){return"a=crypto:"+t.tag+" "+t.cryptoSuite+" "+("object"==typeof t.keyParams?i.writeCryptoKeyParams(t.keyParams):t.keyParams)+(t.sessionParams?" "+t.sessionParams.join(" "):"")+`\r 118`},i.parseCryptoKeyParams=function(t){if(0!==t.indexOf("inline:"))return null;let i=t.substr(7).split("|");return{keyMethod:"inline",keySalt:i[0],lifeTime:i[1],mkiValue:i[2]?i[2].split(":")[0]:void 0,mkiLength:i[2]?i[2].split(":")[1]:void 0}},i.writeCryptoKeyParams=function(t){return t.keyMethod+":"+t.keySalt+(t.lifeTime?"|"+t.lifeTime:"")+(t.mkiValue&&t.mkiLength?"|"+t.mkiValue+":"+t.mkiLength:"")},i.getCryptoParameters=function(t,n){return i.matchPrefix(t+n,"a=crypto:").map(i.parseCryptoLine)},i.getIceParameters=function(t,n){let r=i.matchPrefix(t+n,"a=ice-ufrag:")[0],o=i.matchPrefix(t+n,"a=ice-pwd:")[0];return r&&o?{usernameFragment:r.substr(12),password:o.substr(10)}:null},i.writeIceParameters=function(t){let i="a=ice-ufrag:"+t.usernameFragment+`\r 119a=ice-pwd:`+t.password+`\r 120`;return t.iceLite&&(i+=`a=ice-lite\r 121`),i},i.parseRtpParameters=function(t){let n={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=i.splitLines(t)[0].split(" ");for(let o=3;o<r.length;o++){let s=r[o],a=i.matchPrefix(t,"a=rtpmap:"+s+" ")[0];if(a){let r=i.parseRtpMap(a),o=i.matchPrefix(t,"a=fmtp:"+s+" ");switch(r.parameters=o.length?i.parseFmtp(o[0]):{},r.rtcpFeedback=i.matchPrefix(t,"a=rtcp-fb:"+s+" ").map(i.parseRtcpFb),n.codecs.push(r),r.name.toUpperCase()){case"RED":case"ULPFEC":n.fecMechanisms.push(r.name.toUpperCase())}}}return i.matchPrefix(t,"a=extmap:").forEach(t=>{n.headerExtensions.push(i.parseExtmap(t))}),n},i.writeRtpDescription=function(t,n){let r="";r+="m="+t+" ",r+=n.codecs.length>0?"9":"0",r+=" UDP/TLS/RTP/SAVPF ",r+=n.codecs.map(t=>void 0!==t.preferredPayloadType?t.preferredPayloadType:t.payloadType).join(" ")+`\r 122`,r+=`c=IN IP4 0.0.0.0\r 123`,r+=`a=rtcp:9 IN IP4 0.0.0.0\r 124`,n.codecs.forEach(t=>{r+=i.writeRtpMap(t),r+=i.writeFmtp(t),r+=i.writeRtcpFb(t)});let o=0;return n.codecs.forEach(t=>{t.maxptime>o&&(o=t.maxptime)}),o>0&&(r+="a=maxptime:"+o+`\r 125`),n.headerExtensions&&n.headerExtensions.forEach(t=>{r+=i.writeExtmap(t)}),r},i.parseRtpEncodingParameters=function(t){let n,r=[],o=i.parseRtpParameters(t),s=-1!==o.fecMechanisms.indexOf("RED"),a=-1!==o.fecMechanisms.indexOf("ULPFEC"),d=i.matchPrefix(t,"a=ssrc:").map(t=>i.parseSsrcMedia(t)).filter(t=>"cname"===t.attribute),c=d.length>0&&d[0].ssrc,l=i.matchPrefix(t,"a=ssrc-group:FID").map(t=>t.substr(17).split(" ").map(t=>parseInt(t,10)));l.length>0&&l[0].length>1&&l[0][0]===c&&(n=l[0][1]),o.codecs.forEach(t=>{if("RTX"===t.name.toUpperCase()&&t.parameters.apt){let i={ssrc:c,codecPayloadType:parseInt(t.parameters.apt,10)};c&&n&&(i.rtx={ssrc:n}),r.push(i),s&&((i=JSON.parse(JSON.stringify(i))).fec={ssrc:c,mechanism:a?"red+ulpfec":"red"},r.push(i))}}),0===r.length&&c&&r.push({ssrc:c});let u=i.matchPrefix(t,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substr(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substr(5),10)*.95-16e3:void 0,r.forEach(t=>{t.maxBitrate=u})),r},i.parseRtcpParameters=function(t){let n={},r=i.matchPrefix(t,"a=ssrc:").map(t=>i.parseSsrcMedia(t)).filter(t=>"cname"===t.attribute)[0];r&&(n.cname=r.value,n.ssrc=r.ssrc);let o=i.matchPrefix(t,"a=rtcp-rsize");return n.reducedSize=o.length>0,n.compound=0===o.length,n.mux=i.matchPrefix(t,"a=rtcp-mux").length>0,n},i.writeRtcpParameters=function(t){let i="";return t.reducedSize&&(i+=`a=rtcp-rsize\r 126`),t.mux&&(i+=`a=rtcp-mux\r 127`),void 0!==t.ssrc&&t.cname&&(i+="a=ssrc:"+t.ssrc+" cname:"+t.cname+`\r 128`),i},i.parseMsid=function(t){let n,r=i.matchPrefix(t,"a=msid:");if(1===r.length)return{stream:(n=r[0].substr(7).split(" "))[0],track:n[1]};let o=i.matchPrefix(t,"a=ssrc:").map(t=>i.parseSsrcMedia(t)).filter(t=>"msid"===t.attribute);return o.length>0?{stream:(n=o[0].value.split(" "))[0],track:n[1]}:void 0},i.parseSctpDescription=function(t){let n,r=i.parseMLine(t),o=i.matchPrefix(t,"a=max-message-size:");o.length>0&&(n=parseInt(o[0].substr(19),10)),isNaN(n)&&(n=65536);let s=i.matchPrefix(t,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substr(12),10),protocol:r.fmt,maxMessageSize:n};let a=i.matchPrefix(t,"a=sctpmap:");if(a.length>0){let t=a[0].substr(10).split(" ");return{port:parseInt(t[0],10),protocol:t[1],maxMessageSize:n}}},i.writeSctpDescription=function(t,i){let n=[];return n="DTLS/SCTP"!==t.protocol?["m="+t.kind+" 9 "+t.protocol+" "+i.protocol+`\r 129`,`c=IN IP4 0.0.0.0\r 130`,"a=sctp-port:"+i.port+`\r 131`]:["m="+t.kind+" 9 "+t.protocol+" "+i.port+`\r 132`,`c=IN IP4 0.0.0.0\r 133`,"a=sctpmap:"+i.port+" "+i.protocol+` 65535\r 134`],void 0!==i.maxMessageSize&&n.push("a=max-message-size:"+i.maxMessageSize+`\r 135`),n.join("")},i.generateSessionId=function(){return Math.random().toString().substr(2,21)},i.writeSessionBoilerplate=function(t,n,r){let o=void 0!==n?n:2;return`v=0\r 136o=`+(r||"thisisadapterortc")+" "+(t||i.generateSessionId())+" "+o+` IN IP4 127.0.0.1\r 137s=-\r 138t=0 0\r 139`},i.getDirection=function(t,n){let r=i.splitLines(t);for(let t=0;t<r.length;t++)switch(r[t]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return r[t].substr(2)}return n?i.getDirection(n):"sendrecv"},i.getKind=function(t){return i.splitLines(t)[0].split(" ")[0].substr(2)},i.isRejected=function(t){return"0"===t.split(" ",2)[1]},i.parseMLine=function(t){let n=i.splitLines(t)[0].substr(2).split(" ");return{kind:n[0],port:parseInt(n[1],10),protocol:n[2],fmt:n.slice(3).join(" ")}},i.parseOLine=function(t){let n=i.matchPrefix(t,"o=")[0].substr(2).split(" ");return{username:n[0],sessionId:n[1],sessionVersion:parseInt(n[2],10),netType:n[3],addressType:n[4],address:n[5]}},i.isValidSDP=function(t){if("string"!=typeof t||0===t.length)return!1;let n=i.splitLines(t);for(let t=0;t<n.length;t++)if(n[t].length<2||"="!==n[t].charAt(1))return!1;return!0},t.exports=i},532(t,i,n){!function(t){"use strict";var i=void 0!==n.g?n.g:"u">typeof self?self:"u">typeof window?window:{};let r=function(){let t=i.WebSocket;if(void 0===t)throw Error("WebSocket global not found!");return t}();function o(){let t=i.DOMParser;if(void 0===t)throw Error("DOMParser global not found!");return t}let s=o();function a(){if("u"<typeof document)try{return(new(o())).createDocument("jabber:client","strophe",null)}catch(t){throw Error('You must install the "@xmldom/xmldom" package to use Strophe in nodejs.')}if(void 0===document.implementation.createDocument||document.implementation.createDocument&&document.documentMode&&document.documentMode<10){let t=function(){let t=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];for(let i=0;i<t.length;i++)try{return new ActiveXObject(t[i])}catch(t){}}();return t.appendChild(t.createElement("strophe")),t}return document.implementation.createDocument("jabber:client","strophe",null)}let d=function(t,i){let n=(65535&t)+(65535&i);return(t>>16)+(i>>16)+(n>>16)<<16|65535&n},c=function(t){if("string"!=typeof t)throw Error("str2binl was passed a non-string");let i=[];for(let n=0;n<8*t.length;n+=8)i[n>>5]|=(255&t.charCodeAt(n/8))<<n%32;return i},l=function(t,i,n,r,o,s){var a,c;return d((a=d(d(i,t),d(r,s)))<<(c=o)|a>>>32-c,n)},u=function(t,i,n,r,o,s,a){return l(i&n|~i&r,t,i,o,s,a)},h=function(t,i,n,r,o,s,a){return l(i&r|n&~r,t,i,o,s,a)},p=function(t,i,n,r,o,s,a){return l(i^n^r,t,i,o,s,a)},m=function(t,i,n,r,o,s,a){return l(n^(i|~r),t,i,o,s,a)},g=function(t,i){t[i>>5]|=128<<i%32,t[14+(i+64>>>9<<4)]=i;let n,r,o,s,a=0x67452301,c=-0x10325477,l=-0x67452302,g=0x10325476;for(let i=0;i<t.length;i+=16)n=a,r=c,o=l,s=g,a=u(a,c,l,g,t[i+0],7,-0x28955b88),g=u(g,a,c,l,t[i+1],12,-0x173848aa),l=u(l,g,a,c,t[i+2],17,0x242070db),c=u(c,l,g,a,t[i+3],22,-0x3e423112),a=u(a,c,l,g,t[i+4],7,-0xa83f051),g=u(g,a,c,l,t[i+5],12,0x4787c62a),l=u(l,g,a,c,t[i+6],17,-0x57cfb9ed),c=u(c,l,g,a,t[i+7],22,-0x2b96aff),a=u(a,c,l,g,t[i+8],7,0x698098d8),g=u(g,a,c,l,t[i+9],12,-0x74bb0851),l=u(l,g,a,c,t[i+10],17,-42063),c=u(c,l,g,a,t[i+11],22,-0x76a32842),a=u(a,c,l,g,t[i+12],7,0x6b901122),g=u(g,a,c,l,t[i+13],12,-0x2678e6d),l=u(l,g,a,c,t[i+14],17,-0x5986bc72),c=u(c,l,g,a,t[i+15],22,0x49b40821),a=h(a,c,l,g,t[i+1],5,-0x9e1da9e),g=h(g,a,c,l,t[i+6],9,-0x3fbf4cc0),l=h(l,g,a,c,t[i+11],14,0x265e5a51),c=h(c,l,g,a,t[i+0],20,-0x16493856),a=h(a,c,l,g,t[i+5],5,-0x29d0efa3),g=h(g,a,c,l,t[i+10],9,0x2441453),l=h(l,g,a,c,t[i+15],14,-0x275e197f),c=h(c,l,g,a,t[i+4],20,-0x182c0438),a=h(a,c,l,g,t[i+9],5,0x21e1cde6),g=h(g,a,c,l,t[i+14],9,-0x3cc8f82a),l=h(l,g,a,c,t[i+3],14,-0xb2af279),c=h(c,l,g,a,t[i+8],20,0x455a14ed),a=h(a,c,l,g,t[i+13],5,-0x561c16fb),g=h(g,a,c,l,t[i+2],9,-0x3105c08),l=h(l,g,a,c,t[i+7],14,0x676f02d9),c=h(c,l,g,a,t[i+12],20,-0x72d5b376),a=p(a,c,l,g,t[i+5],4,-378558),g=p(g,a,c,l,t[i+8],11,-0x788e097f),l=p(l,g,a,c,t[i+11],16,0x6d9d6122),c=p(c,l,g,a,t[i+14],23,-0x21ac7f4),a=p(a,c,l,g,t[i+1],4,-0x5b4115bc),g=p(g,a,c,l,t[i+4],11,0x4bdecfa9),l=p(l,g,a,c,t[i+7],16,-0x944b4a0),c=p(c,l,g,a,t[i+10],23,-0x41404390),a=p(a,c,l,g,t[i+13],4,0x289b7ec6),g=p(g,a,c,l,t[i+0],11,-0x155ed806),l=p(l,g,a,c,t[i+3],16,-0x2b10cf7b),c=p(c,l,g,a,t[i+6],23,0x4881d05
139),a=p(a,c,l,g,t[i+9],4,-0x262b2fc7),g=p(g,a,c,l,t[i+12],11,-0x1924661b),l=p(l,g,a,c,t[i+15],16,0x1fa27cf8),c=p(c,l,g,a,t[i+2],23,-0x3b53a99b),a=m(a,c,l,g,t[i+0],6,-0xbd6ddbc),g=m(g,a,c,l,t[i+7],10,0x432aff97),l=m(l,g,a,c,t[i+14],15,-0x546bdc59),c=m(c,l,g,a,t[i+5],21,-0x36c5fc7),a=m(a,c,l,g,t[i+12],6,0x655b59c3),g=m(g,a,c,l,t[i+3],10,-0x70f3336e),l=m(l,g,a,c,t[i+10],15,-1051523),c=m(c,l,g,a,t[i+1],21,-0x7a7ba22f),a=m(a,c,l,g,t[i+8],6,0x6fa87e4f),g=m(g,a,c,l,t[i+15],10,-0x1d31920),l=m(l,g,a,c,t[i+6],15,-0x5cfebcec),c=m(c,l,g,a,t[i+13],21,0x4e0811a1),a=m(a,c,l,g,t[i+4],6,-0x8ac817e),g=m(g,a,c,l,t[i+11],10,-0x42c50dcb),l=m(l,g,a,c,t[i+2],15,0x2ad7d2bb),c=m(c,l,g,a,t[i+9],21,-0x14792c6f),a=d(a,n),c=d(c,r),l=d(l,o),g=d(g,s);return[a,c,l,g]},f={hexdigest:function(t){return function(t){let i="0123456789abcdef",n="";for(let r=0;r<4*t.length;r++)n+=i.charAt(t[r>>2]>>r%4*8+4&15)+i.charAt(t[r>>2]>>r%4*8&15);return n}(g(c(t),8*t.length))},hash:function(t){return function(t){let i="";for(let n=0;n<32*t.length;n+=8)i+=String.fromCharCode(t[n>>5]>>>n%32&255);return i}(g(c(t),8*t.length))}};class _{constructor(t,i,n){this.mechname=t,this.isClientFirst=i,this.priority=n}test(){return!0}onStart(t){this._connection=t}onChallenge(t,i){throw Error("You should implement challenge handling!")}clientChallenge(t){if(!this.isClientFirst)throw Error("clientChallenge should not be called if isClientFirst is false!");return this.onChallenge(t)}onFailure(){this._connection=null}onSuccess(){this._connection=null}}let v=function(t){var i,n,r="",o=t.length;for(i=0;i<o;i++)(n=t.charCodeAt(i))>=0&&n<=127?r+=t.charAt(i):(n>2047?(r+=String.fromCharCode(224|n>>12&15),r+=String.fromCharCode(128|n>>6&63)):r+=String.fromCharCode(192|n>>6&31),r+=String.fromCharCode(128|63&n));return r},y=function(t){for(let i in t=t||{})if(Object.prototype.hasOwnProperty.call(t,i)){let n="",r="",o="",s=t[i],a="object"==typeof s,d=escape(unescape(a?s.value:s));a&&(n=s.expires?";expires="+s.expires:"",r=s.domain?";domain="+s.domain:"",o=s.path?";path="+s.path:""),document.cookie=i+"="+d+n+r+o}};function E(t,i){t[i>>5]|=128<<24-i%32,t[15+(i+64>>9<<4)]=i;var n,r,o,s,a,d,c,l,u=Array(80),h=0x67452301,p=-0x10325477,m=-0x67452302,g=0x10325476,f=-0x3c2d1e10;for(n=0;n<t.length;n+=16){for(s=h,a=p,d=m,c=g,l=f,r=0;r<80;r++)u[r]=r<16?t[n+r]:T(u[r-3]^u[r-8]^u[r-14]^u[r-16],1),o=D(D(T(h,5),S(r,p,m,g)),D(D(f,u[r]),b(r))),f=g,g=m,m=T(p,30),p=h,h=o;h=D(h,s),p=D(p,a),m=D(m,d),g=D(g,c),f=D(f,l)}return[h,p,m,g,f]}function S(t,i,n,r){return t<20?i&n|~i&r:t<40?i^n^r:t<60?i&n|i&r|n&r:i^n^r}function b(t){return t<20?0x5a827999:t<40?0x6ed9eba1:t<60?-0x70e44324:-0x359d3e2a}function C(t,i){var n=x(t);n.length>16&&(n=E(n,8*t.length));for(var r=Array(16),o=Array(16),s=0;s<16;s++)r[s]=0x36363636^n[s],o[s]=0x5c5c5c5c^n[s];var a=E(r.concat(x(i)),512+8*i.length);return E(o.concat(a),672)}function D(t,i){var n=(65535&t)+(65535&i);return(t>>16)+(i>>16)+(n>>16)<<16|65535&n}function T(t,i){return t<<i|t>>>32-i}function x(t){for(var i=[],n=0;n<8*t.length;n+=8)i[n>>5]|=(255&t.charCodeAt(n/8))<<24-n%32;return i}function R(t){for(var i,n,r="",o=0;o<4*t.length;o+=3)for(i=(t[o>>2]>>8*(3-o%4)&255)<<16|(t[o+1>>2]>>8*(3-(o+1)%4)&255)<<8|t[o+2>>2]>>8*(3-(o+2)%4)&255,n=0;n<4;n++)8*o+6*n>32*t.length?r+="=":r+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(i>>6*(3-n)&63);return r}function A(t){for(var i="",n=0;n<32*t.length;n+=8)i+=String.fromCharCode(t[n>>5]>>>24-n%32&255);return i}let w={b64_hmac_sha1:function(t,i){return R(C(t,i))},b64_sha1:function(t){return R(E(x(t),8*t.length))},binb2str:A,core_hmac_sha1:C,str_hmac_sha1:function(t,i){return A(C(t,i))},str_sha1:function(t){return A(E(x(t),8*t.length))}};function I(t,i){return new P.Builder(t,i)}function k(t){return new P.Builder("message",t)}function O(t){return new P.Builder("iq",t)}function N(t){return new P.Builder("presence",t)}let P={VERSION:"1.5.0",NS:{HTTPBIND:"http://jabber.org/protocol/httpbind",BOSH:"urn:xmpp:xbosh",CLIENT:"jabber:client",AUTH:"jabber:iq:auth",ROSTER:"jabber:iq:roster",PROFILE:"jabber:iq:profile",DISCO_INFO:"http://jabber.org/protocol/disco#info",DISCO_ITEMS:"http://jabber.org/protocol/disco#items",MUC:"http://jabber.org/protocol/muc",SASL:"urn:ietf:params:xml:ns:xmpp-sasl",STREAM:"http://etherx.jabber.org/stream
139s",FRAMING:"urn:ietf:params:xml:ns:xmpp-framing",BIND:"urn:ietf:params:xml:ns:xmpp-bind",SESSION:"urn:ietf:params:xml:ns:xmpp-session",VERSION:"jabber:iq:version",STANZAS:"urn:ietf:params:xml:ns:xmpp-stanzas",XHTML_IM:"http://jabber.org/protocol/xhtml-im",XHTML:"http://www.w3.org/1999/xhtml"},XHTML:{tags:["a","blockquote","br","cite","em","img","li","ol","p","span","strong","ul","body"],attributes:{a:["href"],blockquote:["style"],br:[],cite:["style"],em:[],img:["src","alt","style","height","width"],li:["style"],ol:["style"],p:["style"],span:["style"],strong:[],ul:["style"],body:[]},css:["background-color","color","font-family","font-size","font-style","font-weight","margin-left","margin-right","text-align","text-decoration"],validTag(t){for(let i=0;i<P.XHTML.tags.length;i++)if(t===P.XHTML.tags[i])return!0;return!1},validAttribute(t,i){if(void 0!==P.XHTML.attributes[t]&&P.XHTML.attributes[t].length>0){for(let n=0;n<P.XHTML.attributes[t].length;n++)if(i===P.XHTML.attributes[t][n])return!0}return!1},validCSS(t){for(let i=0;i<P.XHTML.css.length;i++)if(t===P.XHTML.css[i])return!0;return!1}},Status:{ERROR:0,CONNECTING:1,CONNFAIL:2,AUTHENTICATING:3,AUTHFAIL:4,CONNECTED:5,DISCONNECTED:6,DISCONNECTING:7,ATTACHED:8,REDIRECT:9,CONNTIMEOUT:10,BINDREQUIRED:11,ATTACHFAIL:12},ErrorCondition:{BAD_FORMAT:"bad-format",CONFLICT:"conflict",MISSING_JID_NODE:"x-strophe-bad-non-anon-jid",NO_AUTH_MECH:"no-auth-mech",UNKNOWN_REASON:"unknown"},LogLevel:{DEBUG:0,INFO:1,WARN:2,ERROR:3,FATAL:4},ElementType:{NORMAL:1,TEXT:3,CDATA:4,FRAGMENT:11},TIMEOUT:1.1,SECONDARY_TIMEOUT:.1,addNamespace(t,i){P.NS[t]=i},forEachChild(t,i,n){for(let r=0;r<t.childNodes.length;r++){let o=t.childNodes[r];o.nodeType!==P.ElementType.NORMAL||i&&!this.isTagEqual(o,i)||n(o)}},isTagEqual:(t,i)=>t.tagName===i,_xmlGenerator:null,xmlGenerator:()=>(P._xmlGenerator||(P._xmlGenerator=a()),P._xmlGenerator),xmlElement(t){if(!t)return null;let i=P.xmlGenerator().createElement(t);for(let t=1;t<arguments.length;t++){let n=arguments[t];if(n){if("string"==typeof n||"number"==typeof n)i.appendChild(P.xmlTextNode(n));else if("object"==typeof n&&"function"==typeof n.sort)for(let t=0;t<n.length;t++){let r=n[t];"object"==typeof r&&"function"==typeof r.sort&&void 0!==r[1]&&null!==r[1]&&i.setAttribute(r[0],r[1])}else if("object"==typeof n)for(let t in n)Object.prototype.hasOwnProperty.call(n,t)&&void 0!==n[t]&&null!==n[t]&&i.setAttribute(t,n[t])}}return i},xmlescape:t=>(t=(t=(t=(t=t.replace(/\&/g,"&")).replace(/</g,"<")).replace(/>/g,">")).replace(/'/g,"'")).replace(/"/g,"""),xmlunescape:t=>(t=(t=(t=(t=t.replace(/\&/g,"&")).replace(/</g,"<")).replace(/>/g,">")).replace(/'/g,"'")).replace(/"/g,'"'),xmlTextNode:t=>P.xmlGenerator().createTextNode(t),xmlHtmlNode(t){let i;return s?i=(new s).parseFromString(t,"text/xml"):((i=new ActiveXObject("Microsoft.XMLDOM")).async="false",i.loadXML(t)),i},getText(t){if(!t)return null;let i="";0===t.childNodes.length&&t.nodeType===P.ElementType.TEXT&&(i+=t.nodeValue);for(let n=0;n<t.childNodes.length;n++)t.childNodes[n].nodeType===P.ElementType.TEXT&&(i+=t.childNodes[n].nodeValue);return P.xmlescape(i)},copyElement(t){let i;if(t.nodeType===P.ElementType.NORMAL){i=P.xmlElement(t.tagName);for(let n=0;n<t.attributes.length;n++)i.setAttribute(t.attributes[n].nodeName,t.attributes[n].value);for(let n=0;n<t.childNodes.length;n++)i.appendChild(P.copyElement(t.childNodes[n]))}else t.nodeType===P.ElementType.TEXT&&(i=P.xmlGenerator().createTextNode(t.nodeValue));return i},createHtml(t){let i;if(t.nodeType===P.ElementType.NORMAL){let n=t.nodeName.toLowerCase();if(P.XHTML.validTag(n))try{i=P.xmlElement(n);for(let r=0;r<P.XHTML.attributes[n].length;r++){let o=P.XHTML.attributes[n][r],s=t.getAttribute(o);if(null!=s&&""!==s&&!1!==s&&0!==s)if("style"===o&&"object"==typeof s&&void 0!==s.cssText&&(s=s.cssText),"style"===o){let t=[],n=s.split(";");for(let i=0;i<n.length;i++){let r=n[i].split(":"),o=r[0].replace(/^\s*/,"").replace(/\s*$/,"").toLowerCase();if(P.XHTML.validCSS(o)){let i=r[1].replace(/^\s*/,"").replace(/\s*$/,"");t.push(o+": "+i)}}t.length>0&&(s=t.join("; "),i.setAttribute(o,s))}else i.setAttribute(o,s)}for(let n=0;n<t.childNodes.length;n++)i.appendChild(P.createHtml(t.childNodes[n]))}catch(t){i=P.xmlTextNode("")}else{i=P.xmlGenerator().createDocumentFragment();for(let n=0;n<t.childNodes.length;n++)i.appendChild(P.createHtml(t.childNodes[n]))}}else if(t.nodeType===P.ElementType.FRAGMENT){i=P.xmlGenerator().createDocumentFragment();for(let n=0;n<t.childNodes.length;n++)i.appendChild(P.createHtml(t.childNodes[n]))}else t.nodeType===P.ElementType.TEXT&&(i=P.xmlTextNode(t.nodeValue));return i},escapeNode:t=>"string"!=typeof t?t:t.replace(/^\s+|\s+$/g,"").replace(/\\/g,"\\5c").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40"),unescapeNode:t=>"string"!=typeof t?t:t.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\"),getNodeFromJid:t=>0>t.indexOf("@")?null:t.split("@")[0],getDomainFromJid(t){let i=P.getBareJidFromJid(t);if(0>i.indexOf("@"))return i;{let t=i.split("@");return t.splice(0,1),t.join("@")}},getResourceFromJid(t){if(!t)return null;let i=t.split("/");return i.length<2?null:(i.splice(0,1),i.join("/"))},getBareJidFromJid:t=>t?t.split("/")[0]:null,_handleError(t){void 0!==t.stack&&P.fatal(t.stack),t.sourceURL?P.fatal("error: "+this.handler+" "+t.sourceURL+":"+t.line+" - "+t.name+": "+t.message):t.fileName?P.fatal("error: "+this.handler+" "+t.fileName+":"+t.lineNumber+" - "+t.name+": "+t.message):P.fatal("error: "+t.message)},log(t,i){var n;t===this.LogLevel.FATAL&&(null==(n=console)||n.error(i))},debug(t){this.log(this.LogLevel.DEBUG,t)},info(t){this.log(this.LogLevel.INFO,t)},warn(t){this.log(this.LogLevel.WARN,t)},error(t){this.log(this.LogLevel.ERROR,t)},fatal(t){this.log(this.LogLevel.FATAL,t)},serialize(t){if(!t)return null;"function"==typeof t.tree&&(t=t.tree());let i=[...Array(t.attributes.length).keys()].map(i=>t.attributes[i].nodeName);i.sort();let n=i.reduce((i,n)=>`${i} ${n}="${P.xmlescape(t.attributes.getNamedItem(n).value)}"`,`<${t.nodeName}`);if(t.childNodes.length>0){n+=">";for(let i=0;i<t.childNodes.length;i++){let r=t.childNodes[i];switch(r.nodeType){case P.ElementType.NORMAL:n+=P.serialize(r);break;case P.ElementType.TEXT:n+=P.xmlescape(r.nodeValue);break;case P.ElementType.CDATA:n+="<![CDATA["+r.nodeValue+"]]>"}}n+="</"+t.nodeName+">"}else n+="/>";return n},_requestId:0,_connectionPlugins:{},addConnectionPlugin(t,i){P._connectionPlugins[t]=i},Builder:class{constructor(t,i){"presence"!==t&&"message"!==t&&"iq"!==t||(i&&!i.xmlns?i.xmlns=P.NS.CLIENT:i||(i={xmlns:P.NS.CLIENT})),this.nodeTree=P.xmlElement(t,i),this.node=this.nodeTree}tree(){return this.nodeTree}toString(){return P.serialize(this.nodeTree)}up(){return this.node=this.node.parentNode,this}root(){return this.node=this.nodeTree,this}attrs(t){for(let i in t)Object.prototype.hasOwnProperty.call(t,i)&&(void 0===t[i]?this.node.removeAttribute(i):this.node.setAttribute(i,t[i]));return this}c(t,i,n){let r=P.xmlElement(t,i,n);return this.node.appendChild(r),"string"!=typeof n&&"number"!=typeof n&&(this.node=r),this}cnode(t){let i,n=P.xmlGenerator();try{i=void 0!==n.importNode}catch(t){i=!1}let r=i?n.importNode(t,!0):P.copyElement(t);return this.node.appendChild(r),this.node=r,this}t(t){let i=P.xmlTextNode(t);return this.node.appendChild(i),this}h(t){let i=P.xmlGenerator().createElement("body");i.innerHTML=t;let n=P.createHtml(i);for(;n.childNodes.length>0;)this.node.appendChild(n.childNodes[0]);return this}},Handler:function(t,i,n,r,o,s,a){this.handler=t,this.ns=i,this.name=n,this.type=r,this.id=o,this.options=a||{matchBareFromJid:!1,ignoreNamespaceFragment:!1},this.options.matchBare&&(P.warn('The "matchBare" option is deprecated, use "matchBareFromJid" instead.'),this.options.matchBareFromJid=this.options.matchBare,delete this.options.matchBare),this.options.matchBareFromJid?this.from=s?P.getBareJidFromJid(s):null:this.from=s,this.user=!0}};P.Handler.prototype={getNamespace(t){let i=t.getAttribute("xmlns");return i&&this.options.ignoreNamespaceFragment&&(i=i.split("#")[0]),i},namespaceMatch(t){let i=!1;return!this.ns||(P.forEachChild(t,null,t=>{this.getNamespace(t)===this.ns&&(i=!0)}),i||this.getNamespace(t)===this.ns)},isMatch(t){let i=t.getAttribute("from");this.options.matchBareFromJid&&(i=P.getBareJidFromJid(i));let n=t.getAttribute("type");return!(!this.namespaceMatch(t)||this.name&&!P.isTagEqual(t,this.name)||this.type&&(Array.isArray(this.type)?-1===this.type.indexOf(n):n!==this.type)||this.id&&t.getAttribute("id")!==this.id||this.from&&i!==this.from)},run(t){let i=null;try{i=this.handler(t)}catch(t){throw P._handleError(t),t}return i},toString(){return"{Handler: "+this.handler+"("+this.name+","+this.id+","+this.ns+")}"}},P.TimedHandler=class{constructor(t,i){this.period=t,this.handler=i,this.lastCalled=(new Date).getTime(),this.user=!0}run(){return this.lastCalled=(new Date).getTime(),this.handler()}reset(){this.lastCalled=(new Date).getTime()}toString(){return"{TimedHandler: "+this.handler+"("+this.period+")}"}},P.Connection=class{constructor(t,i){for(const n in this.service=t,this.options=i||{},this.setProtocol(),this.jid="",this.domain=null,this.features=null,this._sasl_data={},this.do_bind=!1,this.do_session=!1,this.mechanisms={},this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.protocolErrorHandlers={HTTP:{},websocket:{}},this._idleTimeout=null,this._disconnectTimeout=null,this.authenticated=!1,this.connected=!1,this.disconnecting=!1,this.do_authentication=!0,this.paused=!1,this.restored=!1,this._data=[],this._uniqueId=0,this._sasl_success_handler=null,this._sasl_failure_handler=null,this._sasl_challenge_handler=null,this.maxRetries=5,this._idleTimeout=setTimeout(()=>this._onIdle(),100),y(this.options.cookies),this.registerSASLMechanisms(this.options.mechanisms),this.iqFallbackHandler=new P.Handler(t=>this.send(O({type:"error",id:t.getAttribute("id")}).c("error",{type:"cancel"}).c("service-unavailable",{xmlns:P.NS.STANZAS}
139)),null,"iq",["get","set"]),P._connectionPlugins)if(Object.prototype.hasOwnProperty.call(P._connectionPlugins,n)){const t=function(){};t.prototype=P._connectionPlugins[n],this[n]=new t,this[n].init(this)}}setProtocol(){let t=this.options.protocol||"";this.options.worker?this._proto=new P.WorkerWebsocket(this):0===this.service.indexOf("ws:")||0===this.service.indexOf("wss:")||0===t.indexOf("ws")?this._proto=new P.Websocket(this):this._proto=new P.Bosh(this)}reset(){this._proto._reset(),this.do_session=!1,this.do_bind=!1,this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.authenticated=!1,this.connected=!1,this.disconnecting=!1,this.restored=!1,this._data=[],this._requests=[],this._uniqueId=0}pause(){this.paused=!0}resume(){this.paused=!1}getUniqueId(t){let i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){let i=16*Math.random()|0;return("x"===t?i:3&i|8).toString(16)});return"string"==typeof t||"number"==typeof t?i+":"+t:i+""}addProtocolErrorHandler(t,i,n){this.protocolErrorHandlers[t][i]=n}connect(t,i,n,r,o,s,a){let d=arguments.length>7&&void 0!==arguments[7]?arguments[7]:3e3;this.jid=t,this.authzid=P.getBareJidFromJid(this.jid),this.authcid=a||P.getNodeFromJid(this.jid),this.pass=i,this.connect_callback=n,this.disconnecting=!1,this.connected=!1,this.authenticated=!1,this.restored=!1,this.disconnection_timeout=d,this.domain=P.getDomainFromJid(this.jid),this._changeConnectStatus(P.Status.CONNECTING,null),this._proto._connect(r,o,s)}attach(t,i,n,r,o,s,a){if(this._proto._attach)return this._proto._attach(t,i,n,r,o,s,a);{let t=Error('The "attach" method is not available for your connection protocol');throw t.name="StropheSessionError",t}}restore(t,i,n,r,o){if(!this._sessionCachingSupported()){let t=Error('The "restore" method can only be used with a BOSH connection.');throw t.name="StropheSessionError",t}this._proto._restore(t,i,n,r,o)}_sessionCachingSupported(){if(this._proto instanceof P.Bosh){if(!JSON)return!1;try{sessionStorage.setItem("_strophe_","_strophe_"),sessionStorage.removeItem("_strophe_")}catch(t){return!1}return!0}return!1}xmlInput(t){}xmlOutput(t){}rawInput(t){}rawOutput(t){}nextValidRid(t){}send(t){if(null!==t){if("function"==typeof t.sort)for(let i=0;i<t.length;i++)this._queueData(t[i]);else"function"==typeof t.tree?this._queueData(t.tree()):this._queueData(t);this._proto._send()}}flush(){clearTimeout(this._idleTimeout),this._onIdle()}sendPresence(t,i,n,r){let o=null;"function"==typeof t.tree&&(t=t.tree());let s=t.getAttribute("id");if(s||(s=this.getUniqueId("sendPresence"),t.setAttribute("id",s)),"function"==typeof i||"function"==typeof n){let t=this.addHandler(t=>{o&&this.deleteTimedHandler(o),"error"===t.getAttribute("type")?n&&n(t):i&&i(t)},null,"presence",null,s);r&&(o=this.addTimedHandler(r,()=>(this.deleteHandler(t),n&&n(null),!1)))}return this.send(t),s}sendIQ(t,i,n,r){let o=null;"function"==typeof t.tree&&(t=t.tree());let s=t.getAttribute("id");if(s||(s=this.getUniqueId("sendIQ"),t.setAttribute("id",s)),"function"==typeof i||"function"==typeof n){let t=this.addHandler(t=>{o&&this.deleteTimedHandler(o);let r=t.getAttribute("type");if("result"===r)i&&i(t);else{if("error"!==r){let t=Error(`Got bad IQ type of ${r}`);throw t.name="StropheError",t}n&&n(t)}},null,"iq",["error","result"],s);r&&(o=this.addTimedHandler(r,()=>(this.deleteHandler(t),n&&n(null),!1)))}return this.send(t),s}_queueData(t){if(null===t||!t.tagName||!t.childNodes){let t=Error("Cannot queue non-DOMElement.");throw t.name="StropheError",t}this._data.push(t)}_sendRestart(){this._data.push("restart"),this._proto._sendRestart(),this._idleTimeout=setTimeout(()=>this._onIdle(),100)}addTimedHandler(t,i){let n=new P.TimedHandler(t,i);return this.addTimeds.push(n),n}deleteTimedHandler(t){this.removeTimeds.push(t)}addHandler(t,i,n,r,o,s,a){let d=new P.Handler(t,i,n,r,o,s,a);return this.addHandlers.push(d),d}deleteHandler(t){this.removeHandlers.push(t);let i=this.addHandlers.indexOf(t);i>=0&&this.addHandlers.splice(i,1)}registerSASLMechanisms(t){this.mechanisms={}
139,(t=t||[P.SASLAnonymous,P.SASLExternal,P.SASLOAuthBearer,P.SASLXOAuth2,P.SASLPlain,P.SASLSHA1]).forEach(t=>this.registerSASLMechanism(t))}registerSASLMechanism(t){let i=new t;this.mechanisms[i.mechname]=i}disconnect(t){if(this._changeConnectStatus(P.Status.DISCONNECTING,t),t?P.warn("Disconnect was called because: "+t):P.info("Disconnect was called"),this.connected){let t=!1;this.disconnecting=!0,this.authenticated&&(t=N({xmlns:P.NS.CLIENT,type:"unavailable"})),this._disconnectTimeout=this._addSysTimedHandler(this.disconnection_timeout,this._onDisconnectTimeout.bind(this)),this._proto._disconnect(t)}else P.warn("Disconnect was called before Strophe connected to the server"),this._proto._abortAllRequests(),this._doDisconnect()}_changeConnectStatus(t,i,n){for(let n in P._connectionPlugins)if(Object.prototype.hasOwnProperty.call(P._connectionPlugins,n)){let r=this[n];if(r.statusChanged)try{r.statusChanged(t,i)}catch(t){P.error(`${n} plugin caused an exception changing status: ${t}`)}}if(this.connect_callback)try{this.connect_callback(t,i,n)}catch(t){P._handleError(t),P.error(`User connection callback caused an exception: ${t}`)}}_doDisconnect(t){"number"==typeof this._idleTimeout&&clearTimeout(this._idleTimeout),null!==this._disconnectTimeout&&(this.deleteTimedHandler(this._disconnectTimeout),this._disconnectTimeout=null),P.debug("_doDisconnect was called"),this._proto._doDisconnect(),this.authenticated=!1,this.disconnecting=!1,this.restored=!1,this.handlers=[],this.timedHandlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this._changeConnectStatus(P.Status.DISCONNECTED,t),this.connected=!1}_dataRecv(t,i){let n=this._proto._reqToData(t);if(null===n)return;for(this.xmlInput!==P.Connection.prototype.xmlInput&&(n.nodeName===this._proto.strip&&n.childNodes.length?this.xmlInput(n.childNodes[0]):this.xmlInput(n)),this.rawInput!==P.Connection.prototype.rawInput&&(i?this.rawInput(i):this.rawInput(P.serialize(n)));this.removeHandlers.length>0;){let t=this.removeHandlers.pop(),i=this.handlers.indexOf(t);i>=0&&this.handlers.splice(i,1)}for(;this.addHandlers.length>0;)this.handlers.push(this.addHandlers.pop());if(this.disconnecting&&this._proto._emptyQueue())return void this._doDisconnect();let r=n.getAttribute("type");if(null!==r&&"terminate"===r){if(this.disconnecting)return;let t=n.getAttribute("condition"),i=n.getElementsByTagName("conflict");return null!==t?("remote-stream-error"===t&&i.length>0&&(t="conflict"),this._changeConnectStatus(P.Status.CONNFAIL,t)):this._changeConnectStatus(P.Status.CONNFAIL,P.ErrorCondition.UNKOWN_REASON),void this._doDisconnect(t)}P.forEachChild(n,null,t=>{let i=[];this.handlers=this.handlers.reduce((n,r)=>{try{r.isMatch(t)&&(this.authenticated||!r.user)?(r.run(t)&&n.push(r),i.push(r)):n.push(r)}catch(t){P.warn("Removing Strophe handlers due to uncaught exception: "+t.message)}return n},[]),!i.length&&this.iqFallbackHandler.isMatch(t)&&this.iqFallbackHandler.run(t)})}_connect_cb(t,i,n){let r;P.debug("_connect_cb was called"),this.connected=!0;try{r=this._proto._reqToData(t)}catch(t){if(t.name!==P.ErrorCondition.BAD_FORMAT)throw t;this._changeConnectStatus(P.Status.CONNFAIL,P.ErrorCondition.BAD_FORMAT),this._doDisconnect(P.ErrorCondition.BAD_FORMAT)}if(!r||(this.xmlInput!==P.Connection.prototype.xmlInput&&(r.nodeName===this._proto.strip&&r.childNodes.length?this.xmlInput(r.childNodes[0]):this.xmlInput(r)),this.rawInput!==P.Connection.prototype.rawInput&&(n?this.rawInput(n):this.rawInput(P.serialize(r))),this._proto._connect_cb(r)===P.Status.CONNFAIL))return;if(!(r.getElementsByTagNameNS?r.getElementsByTagNameNS(P.NS.STREAM,"features").length>0:r.getElementsByTagName("stream:features").length>0||r.getElementsByTagName("features").length>0))return void this._proto._no_auth_received(i);let o=Array.from(r.getElementsByTagName("mechanism")).map(t=>this.mechanisms[t.textContent]).filter(t=>t);0!==o.length||0!==r.getElementsByTagName("auth").length?!1!==this.do_authentication&&this.authenticate(o):this._proto._no_auth_received(i)}sortMechanismsByPriority(t){for(let i=0;i<t.length-1;++i){let n=i;for(let r=i+1;r<t.length;++r)t[r].priority>t[n].priority&&(n=r);if(n!==i){let r=t[i];t[i]=t[n],t[n]=r}}return t}authenticate(t){this._attemptSASLAuth(t)||this._attemptLegacyAuth()}_attemptSASLAuth(t){t=this.sortMechanismsByPriority(t||[]);let i=!1;for(let n=0;n<t.length;++n){if(!t[n].test(this))continue;this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge_cb.bind(this),null,"challenge",null,null),this._sasl_mechanism=t[n],this._sasl_mechanism.onStart(this);let r=I("auth",{xmlns:P.NS.SASL,mechanism:this._sasl_mechanism.mechname});if(this._sasl_mechanism.isClientFirst){let t=this._sasl_mechanism.clientChallenge(this);r.t(btoa(t))}this.send(r.tree()),i=!0;break}return i}_sasl_challenge_cb(t){let i=atob(P.getText(t)),n=this._sasl_mechanism.onCh
139allenge(this,i),r=I("response",{xmlns:P.NS.SASL});return""!==n&&r.t(btoa(n)),this.send(r.tree()),!0}_attemptLegacyAuth(){null===P.getNodeFromJid(this.jid)?(this._changeConnectStatus(P.Status.CONNFAIL,P.ErrorCondition.MISSING_JID_NODE),this.disconnect(P.ErrorCondition.MISSING_JID_NODE)):(this._changeConnectStatus(P.Status.AUTHENTICATING,null),this._addSysHandler(this._onLegacyAuthIQResult.bind(this),null,null,null,"_auth_1"),this.send(O({type:"get",to:this.domain,id:"_auth_1"}).c("query",{xmlns:P.NS.AUTH}).c("username",{}).t(P.getNodeFromJid(this.jid)).tree()))}_onLegacyAuthIQResult(t){let i=O({type:"set",id:"_auth_2"}).c("query",{xmlns:P.NS.AUTH}).c("username",{}).t(P.getNodeFromJid(this.jid)).up().c("password").t(this.pass);return P.getResourceFromJid(this.jid)||(this.jid=P.getBareJidFromJid(this.jid)+"/strophe"),i.up().c("resource",{}).t(P.getResourceFromJid(this.jid)),this._addSysHandler(this._auth2_cb.bind(this),null,null,null,"_auth_2"),this.send(i.tree()),!1}_sasl_success_cb(t){if(this._sasl_data["server-signature"]){let i,n=/([a-z]+)=([^,]+)(,|$)/,r=atob(P.getText(t)).match(n);if("v"===r[1]&&(i=r[2]),i!==this._sasl_data["server-signature"])return this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._sasl_data={},this._sasl_failure_cb(null)}P.info("SASL authentication succeeded."),this._sasl_mechanism&&this._sasl_mechanism.onSuccess(),this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null);let i=[],n=(t,i)=>{for(;t.length;)this.deleteHandler(t.pop());return this._onStreamFeaturesAfterSASL(i),!1};return i.push(this._addSysHandler(t=>n(i,t),null,"stream:features",null,null)),i.push(this._addSysHandler(t=>n(i,t),P.NS.STREAM,"features",null,null)),this._sendRestart(),!1}_onStreamFeaturesAfterSASL(t){this.features=t;for(let i=0;i<t.childNodes.length;i++){let n=t.childNodes[i];"bind"===n.nodeName&&(this.do_bind=!0),"session"===n.nodeName&&(this.do_session=!0)}return this.do_bind?this.options.explicitResourceBinding?this._changeConnectStatus(P.Status.BINDREQUIRED,null):this.bind():this._changeConnectStatus(P.Status.AUTHFAIL,null),!1}bind(){if(!this.do_bind)return void P.log(P.LogLevel.INFO,'Strophe.Connection.prototype.bind called but "do_bind" is false');
139this._addSysHandler(this._onResourceBindResultIQ.bind(this),null,null,null,"_bind_auth_2");let t=P.getResourceFromJid(this.jid);t?this.send(O({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:P.NS.BIND}).c("resource",{}).t(t).tree()):this.send(O({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:P.NS.BIND}).tree())}_onResourceBindResultIQ(t){if("error"===t.getAttribute("type")){let i;return P.warn("Resource binding failed."),t.getElementsByTagName("conflict").length>0&&(i=P.ErrorCondition.CONFLICT),this._changeConnectStatus(P.Status.AUTHFAIL,i,t),!1}let i=t.getElementsByTagName("bind");if(!(i.length>0))return P.warn("Resource binding failed."),this._changeConnectStatus(P.Status.AUTHFAIL,null,t),!1;{let t=i[0].getElementsByTagName("jid");t.length>0&&(this.authenticated=!0,this.jid=P.getText(t[0]),this.do_session?this._establishSession():this._changeConnectStatus(P.Status.CONNECTED,null))}}_establishSession(){if(!this.do_session)throw Error(`Strophe.Connection.prototype._establishSession called but apparently ${P.NS.SESSION} wasn't advertised by the server`);this._addSysHandler(this._onSessionResultIQ.bind(this),null,null,null,"_session_auth_2"),this.send(O({type:"set",id:"_session_auth_2"}).c("session",{xmlns:P.NS.SESSION}).tree())}_onSessionResultIQ(t){if("result"===t.getAttribute("type"))this.authenticated=!0,this._changeConnectStatus(P.Status.CONNECTED,null);else if("error"===t.getAttribute("type"))return this.authenticated=!1,P.warn("Session creation failed."),this._changeConnectStatus(P.Status.AUTHFAIL,null,t),!1;return!1}_sasl_failure_cb(t){return this._sasl_success_handler&&(this.deleteHandler(this._sasl_success_handler),this._sasl_success_handler=null),this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._sasl_mechanism&&this._sasl_mechanism.onFailure(),this._changeConnectStatus(P.Status.AUTHFAIL,null,t),!1}_auth2_cb(t){return"result"===t.getAttribute("type")?(this.authenticated=!0,this._changeConnectStatus(P.Status.CONNECTED,null)):"error"===t.getAttribute("type")&&(this._changeConnectStatus(P.Status.AUTHFAIL,null,t),this.disconnect("authentication failed")),!1}_addSysTimedHandler(t,i){let n=new P.TimedHandler(t,i);return n.user=!1,this.addTimeds.push(n),n}_addSysHandler(t,i,n,r,o){let s=new P.Handler(t,i,n,r,o);return s.user=!1,this.addHandlers.push(s),s}_onDisconnectTimeout(){return P.debug("_onDisconnectTimeout was called"),this._changeConnectStatus(P.Status.CONNTIMEOUT,null),this._proto._onDisconnectTimeout(),this._doDisconnect(),!1}_onIdle(){for(;this.addTimeds.length>0;)this.timedHandlers.push(this.addTimeds.pop());for(;this.removeTimeds.length>0;){let t=this.removeTimeds.pop(),i=this.timedHandlers.indexOf(t);i>=0&&this.timedHandlers.splice(i,1)}let t=(new Date).getTime(),i=[];for(let n=0;n<this.timedHandlers.length;n++){let r=this.timedHandlers[n];!this.authenticated&&r.user||(r.lastCalled+r.period-t<=0?r.run()&&i.push(r):i.push(r))}this.timedHandlers=i,clearTimeout(this._idleTimeout),this._proto._onIdle(),this.connected&&(this._idleTimeout=setTimeout(()=>this._onIdle(),100))}},P.SASLMechanism=_,P.SASLAnonymous=class extends _{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"ANONYMOUS",arguments.length>1&&void 0!==arguments[1]&&arguments[1],arguments.length>2&&void 0!==arguments[2]?arguments[2]:20)}test(t){return null===t.authcid}},P.SASLPlain=class extends _{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"PLAIN",!(arguments.length>1&&void 0!==arguments[1])||arguments[1],arguments.length>2&&void 0!==arguments[2]?arguments[2]:50)}test(t){return null!==t.authcid}onChallenge(t){let i=t.authcid,n=t.authzid,r=t.domain,o=t.pass;if(!r)throw Error("SASLPlain onChallenge: domain is not defined!");let s=n!==`${i}@${r}`?n:"";return s+="\0",s+=i,s+="\0",v(s+=o)}},P.SASLSHA1=class extends _{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"SCRAM-SHA-1",!(arguments.length>1&&void 0!==arguments[1])||arguments[1],arguments.length>2&&void 0!==arguments[2]?arguments[2]:60)}test(t){return null!==t.authcid}onChallenge(t,i){let n,r,o,s,a,d,c,l,u="c=biws,",h=`${t._sasl_data["client-first-message-bare"]},${i},`,p=t._sasl_data.cnonce,m=/([a-z]+)=([^,]+)(,|$)/;for(;i.match(m);){let t=i.match(m);switch(i=i.replace(t[0],""),t[1]){case"r":n=t[2];break;case"s":r=t[2];break;case"i":o=t[2]}}if(n.slice(0,p.length)!==p)return t._sasl_data={},t._sasl_failure_cb();u+="r="+n,h+=u,r=atob(r)+"\0\0\0\x01";let g=v(t.pass);for(s=d=w.core_hmac_sha1(g,r),c=1;c<o;c++){for(a=w.core_hmac_sha1(g,w.binb2str(d)),l=0;l<5;l++)s[l]^=a[l];d=a}s=w.binb2str(s);let f=w.core_hmac_sha1(s,"Client Key"),_=w.str_hmac_sha1(s,"Server Key"),y=w.core_hmac_sha1(w.str_sha1(w.binb2str(f)),h);for(t._sasl_data["server-signature"]=w.b64_hmac_sha1(_,h),l=0;l<5;l++)f[l]^=y[l];return u+",p="+btoa(w.binb2str(f))}clientChallenge(t,i){let n=i||f.hexdigest(""+0x499602d2*Math.random()),r="n="+v(t.authcid);return r+=",r=",r+=n,t._sasl_data.cnonce=n,t._sasl_data["client-first-message-bare"]=r,r="n,,"+r}},P.SASLOAuthBearer=class extends _{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"OAUTHBEARER",!(arguments.length>1&&void 0!==arguments[1])||arguments[1],arguments.length>
1392&&void 0!==arguments[2]?arguments[2]:40)}test(t){return null!==t.pass}onChallenge(t){let i="n,";return null!==t.authcid&&(i=i+"a="+t.authzid),i+=",",i+="\x01",i+="auth=Bearer ",i+=t.pass,i+="\x01",v(i+="\x01")}},P.SASLExternal=class extends _{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"EXTERNAL",!(arguments.length>1&&void 0!==arguments[1])||arguments[1],arguments.length>2&&void 0!==arguments[2]?arguments[2]:10)}onChallenge(t){return t.authcid===t.authzid?"":t.authzid}},P.SASLXOAuth2=class extends _{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"X-OAUTH2",!(arguments.length>1&&void 0!==arguments[1])||arguments[1],arguments.length>2&&void 0!==arguments[2]?arguments[2]:30)}test(t){return null!==t.pass}onChallenge(t){let i="\0";return null!==t.authcid&&(i+=t.authzid),i+="\0",v(i+=t.pass)}};var L={Strophe:P,$build:I,$iq:O,$msg:k,$pres:N,SHA1:w,MD5:f,b64_hmac_sha1:w.b64_hmac_sha1,b64_sha1:w.b64_sha1,str_hmac_sha1:w.str_hmac_sha1,str_sha1:w.str_sha1};P.Request=class{constructor(t,i,n,r){this.id=++P._requestId,this.xmlData=t,this.data=P.serialize(t),this.origFunc=i,this.func=i,this.rid=n,this.date=NaN,this.sends=r||0,this.abort=!1,this.dead=null,this.age=function(){return this.date?(new Date-this.date)/1e3:0},this.timeDead=function(){return this.dead?(new Date-this.dead)/1e3:0},this.xhr=this._newXHR()}getResponse(){let t=null;if(this.xhr.responseXML&&this.xhr.responseXML.documentElement){if("parsererror"===(t=this.xhr.responseXML.documentElement).tagName)throw P.error("invalid response received"),P.error("responseText: "+this.xhr.responseText),P.error("responseXML: "+P.serialize(this.xhr.responseXML)),Error("parsererror")}else if(this.xhr.responseText){if(P.debug("Got responseText but no responseXML; attempting to parse it with DOMParser..."),!(t=(new s).parseFromString(this.xhr.responseText,"application/xml").documentElement))throw Error("Parsing produced null node");if(t.querySelector("parsererror")){P.error("invalid response received: "+t.querySelector("parsererror").textContent),P.error("responseText: "+this.xhr.responseText);let i=Error();throw i.name=P.ErrorCondition.BAD_FORMAT,i}}return t}_newXHR(){let t=null;return window.XMLHttpRequest?(t=new XMLHttpRequest).overrideMimeType&&t.overrideMimeType("text/xml; charset=utf-8"):window.ActiveXObject&&(t=new ActiveXObject("Microsoft.XMLHTTP")),t.onreadystatechange=this.func.bind(null,this),t}},P.Bosh=class t{constructor(t){this._conn=t,this.rid=Math.floor(0xffffffff*Math.random()),this.sid=null,this.hold=1,this.wait=60,this.window=5,this.errors=0,this.inactivity=null,this.lastResponseHeaders=null,this._requests=[]}_buildBody(){let t=I("body",{rid:this.rid++,xmlns:P.NS.HTTPBIND});return null!==this.sid&&t.attrs({sid:this.sid}),this._conn.options.keepalive&&this._conn._sessionCachingSupported()&&this._cacheSession(),t}_reset(){this.rid=Math.floor(0xffffffff*Math.random()),this.sid=null,this.errors=0,this._conn._sessionCachingSupported()&&window.sessionStorage.removeItem("strophe-bosh-session"),this._conn.nextValidRid(this.rid)}_connect(t,i,n){this.wait=t||this.wait,this.hold=i||this.hold,this.errors=0;let r=this._buildBody().attrs({to:this._conn.domain,"xml:lang":"en",wait:this.wait,hold:this.hold,content:"text/xml; charset=utf-8",ver:"1.6","xmpp:version":"1.0","xmlns:xmpp":P.NS.BOSH});n&&r.attrs({route:n});let o=this._conn._connect_cb;this._requests.push(new P.Request(r.tree(),this._onRequestStateChange.bind(this,o.bind(this._conn)),r.tree().getAttribute("rid"))),this._throttledRequestHandler()}_attach(t,i,n,r,o,s,a){this._conn.jid=t,this.sid=i,this.rid=n,this._conn.connect_callback=r,this._conn.domain=P.getDomainFromJid(this._conn.jid),this._conn.authenticated=!0,this._conn.connected=!0,this.wait=o||this.wait,this.hold=s||this.hold,this.window=a||this.window,this._conn._changeConnectStatus(P.Status.ATTACHED,null)}_restore(t,i,n,r,o){let s=JSON.parse(window.sessionStorage.getItem("strophe-bosh-session"));if(!(null!=s&&s.rid&&s.sid&&s.jid&&(null==t||P.getBareJidFromJid(s.jid)===P.getBareJidFromJid(t)||null===P.getNodeFromJid(t)&&P.getDomainFromJid(s.jid)===t))){let t=Error("_restore: n
139o restoreable session.");throw t.name="StropheSessionError",t}this._conn.restored=!0,this._attach(s.jid,s.sid,s.rid,i,n,r,o)}_cacheSession(){this._conn.authenticated?this._conn.jid&&this.rid&&this.sid&&window.sessionStorage.setItem("strophe-bosh-session",JSON.stringify({jid:this._conn.jid,rid:this.rid,sid:this.sid})):window.sessionStorage.removeItem("strophe-bosh-session")}_connect_cb(t){let i=t.getAttribute("type");if(null!==i&&"terminate"===i){let i=t.getAttribute("condition");P.error("BOSH-Connection failed: "+i);let n=t.getElementsByTagName("conflict");return null!==i?("remote-stream-error"===i&&n.length>0&&(i="conflict"),this._conn._changeConnectStatus(P.Status.CONNFAIL,i)):this._conn._changeConnectStatus(P.Status.CONNFAIL,"unknown"),this._conn._doDisconnect(i),P.Status.CONNFAIL}this.sid||(this.sid=t.getAttribute("sid"));let n=t.getAttribute("requests");n&&(this.window=parseInt(n,10));let r=t.getAttribute("hold");r&&(this.hold=parseInt(r,10));let o=t.getAttribute("wait");o&&(this.wait=parseInt(o,10));let s=t.getAttribute("inactivity");s&&(this.inactivity=parseInt(s,10))}_disconnect(t){this._sendTerminate(t)}_doDisconnect(){this.sid=null,this.rid=Math.floor(0xffffffff*Math.random()),this._conn._sessionCachingSupported()&&window.sessionStorage.removeItem("strophe-bosh-session"),this._conn.nextValidRid(this.rid)}_emptyQueue(){return 0===this._requests.length}_callProtocolErrorHandlers(i){let n=t._getRequestStatus(i),r=this._conn.protocolErrorHandlers.HTTP[n];r&&r.call(this,n)}_hitError(t){this.errors++,P.warn("request errored, status: "+t+", number of errors: "+this.errors),this.errors>4&&this._conn._onDisconnectTimeout()}_no_auth_received(t){P.warn("Server did not yet offer a supported authentication mechanism. Sending a blank poll request."),t=t?t.bind(this._conn):this._conn._connect_cb.bind(this._conn);let i=this._buildBody();this._requests.push(new P.Request(i.tree(),this._onRequestStateChange.bind(this,t),i.tree().getAttribute("rid"))),this._throttledRequestHandler()}_onDisconnectTimeout(){this._abortAllRequests()}_abortAllRequests(){for(;this._requests.length>0;){let t=this._requests.pop();t.abort=!0,t.xhr.abort(),t.xhr.onreadystatechange=function(){}}}_onIdle(){let t=this._conn._data;if(this._conn.authenticated&&0===this._requests.length&&0===t.length&&!this._conn.disconnecting&&(P.debug("no requests during idle cycle, sending blank request"),t.push(null)),!this._conn.paused){if(this._requests.length<2&&t.length>0){let i=this._buildBody();for(let n=0;n<t.length;n++)null!==t[n]&&("restart"===t[n]?i.attrs({to:this._conn.domain,"xml:lang":"en","xmpp:restart":"true","xmlns:xmpp":P.NS.BOSH}):i.cnode(t[n]).up());delete this._conn._data,this._conn._data=[],this._requests.push(new P.Request(i.tree(),this._onRequestStateChange.bind(this,this._conn._dataRecv.bind(this._conn)),i.tree().getAttribute("rid"))),this._throttledRequestHandler()}if(this._requests.length>0){let t=this._requests[0].age();null!==this._requests[0].dead&&this._requests[0].timeDead()>Math.floor(P.SECONDARY_TIMEOUT*this.wait)&&this._throttledRequestHandler(),t>Math.floor(P.TIMEOUT*this.wait)&&(P.warn("Request "+this._requests[0].id+" timed out, over "+Math.floor(P.TIMEOUT*this.wait)+" seconds since last activity"),this._throttledRequestHandler())}}}static _getRequestStatus(t,i){let n;if(4===t.xhr.readyState)try{n=t.xhr.status}catch(t){P.error("Caught an error while retrieving a request's status, reqStatus: "+n)}return void 0===n&&(n="number"==typeof i?i:0),n}_onRequestStateChange(i,n){if(P.debug("request id "+n.id+"."+n.sends+" state changed to "+n.xhr.readyState),n.abort)return void(n.abort=!1);if(4!==n.xhr.readyState)return;let r=t._getRequestStatus(n);if(this.lastResponseHeaders=n.xhr.getAllResponseHeaders(),this._conn.disconnecting&&r>=400)return this._hitError(r),void this._callProtocolErrorHandlers(n);let o=this._requests[0]===n,s=this._requests[1]===n,a=r>0&&r<500,d=n.sends>this._conn.maxRetries;(a||d)&&(this._removeRequest(n),P.debug("request id "+n.id+" should now be removed")),200===r?((s||o&&this._requests.length>0&&this._requests[0].age()>Math.floor(P.SECONDARY_TIMEOUT*this.wait))&&this._restartRequest
139(0),this._conn.nextValidRid(Number(n.rid)+1),P.debug("request id "+n.id+"."+n.sends+" got 200"),i(n),this.errors=0):0===r||r>=400&&r<600||r>=12e3?(P.error("request id "+n.id+"."+n.sends+" error "+r+" happened"),this._hitError(r),this._callProtocolErrorHandlers(n),r>=400&&r<500&&(this._conn._changeConnectStatus(P.Status.DISCONNECTING,null),this._conn._doDisconnect())):P.error("request id "+n.id+"."+n.sends+" error "+r+" happened"),a||d?d&&!this._conn.connected&&this._conn._changeConnectStatus(P.Status.CONNFAIL,"giving-up"):this._throttledRequestHandler()}_processRequest(i){let n=this._requests[i],r=t._getRequestStatus(n,-1);if(n.sends>this._conn.maxRetries)return void this._conn._onDisconnectTimeout();let o=n.age(),s=!isNaN(o)&&o>Math.floor(P.TIMEOUT*this.wait),a=null!==n.dead&&n.timeDead()>Math.floor(P.SECONDARY_TIMEOUT*this.wait),d=4===n.xhr.readyState&&(r<1||r>=500);if((s||a||d)&&(a&&P.error(`Request ${this._requests[i].id} timed out (secondary), restarting`),n.abort=!0,n.xhr.abort(),n.xhr.onreadystatechange=function(){},this._requests[i]=new P.Request(n.xmlData,n.origFunc,n.rid,n.sends),n=this._requests[i]),0===n.xhr.readyState){P.debug("request id "+n.id+"."+n.sends+" posting");try{let t=this._conn.options.contentType||"text/xml; charset=utf-8";n.xhr.open("POST",this._conn.service,!this._conn.options.sync),void 0!==n.xhr.setRequestHeader&&n.xhr.setRequestHeader("Content-Type",t),this._conn.options.withCredentials&&(n.xhr.withCredentials=!0)}catch(t){return P.error("XHR open failed: "+t.toString()),this._conn.connected||this._conn._changeConnectStatus(P.Status.CONNFAIL,"bad-service"),void this._conn.disconnect()}let t=()=>{if(n.date=new Date,this._conn.options.customHeaders){let t=this._conn.options.customHeaders;for(let i in t)Object.prototype.hasOwnProperty.call(t,i)&&n.xhr.setRequestHeader(i,t[i])}n.xhr.send(n.data)};n.sends>1?setTimeout(function(){t()},1e3*Math.min(Math.floor(P.TIMEOUT*this.wait),Math.pow(n.sends,3))):t(),n.sends++,this._conn.xmlOutput!==P.Connection.prototype.xmlOutput&&(n.xmlData.nodeName===this.strip&&n.xmlData.childNodes.length?this._conn.xmlOutput(n.xmlData.childNodes[0]):this._conn.xmlOutput(n.xmlData)),this._conn.rawOutput!==P.Connection.prototype.rawOutput&&this._conn.rawOutput(n.data)}else P.debug("_processRequest: "+(0===i?"first":"second")+" request has readyState of "+n.xhr.readyState)}_removeRequest(t){P.debug("removing request");for(let i=this._requests.length-1;i>=0;i--)t===this._requests[i]&&this._requests.splice(i,1);t.xhr.onreadystatechange=function(){},this._throttledRequestHandler()}_restartRequest(t){let i=this._requests[t];null===i.dead&&(i.dead=new Date),this._processRequest(t)}_reqToData(t){try{return t.getResponse()}catch(t){if("parsererror"!==t.message)throw t;this._conn.disconnect("strophe-parsererror")}}_sendTerminate(t){P.debug("_sendTerminate was called");let i=this._buildBody().attrs({type:"terminate"});t&&i.cnode(t.tree());let n=new P.Request(i.tree(),this._onRequestStateChange.bind(this,this._conn._dataRecv.bind(this._conn)),i.tree().getAttribute("rid"));this._requests.push(n),this._throttledRequestHandler()}_send(){clearTimeout(this._conn._idleTimeout),this._throttledRequestHandler(),this._conn._idleTimeout=setTimeout(()=>this._conn._onIdle(),100)}_sendRestart(){this._throttledRequestHandler(),clearTimeout(this._conn._idleTimeout)}_throttledRequestHandler(){this._requests?P.debug("_throttledRequestHandler called with "+this._requests.length+" requests"):P.debug("_throttledRequestHandler called with undefined requests"),this._requests&&0!==this._requests.length&&(this._requests.length>0&&this._processRequest(0),this._requests.length>1&&Math.abs(this._requests[0].rid-this._requests[1].rid)<this.window&&this._processRequest(1))}},P.Bosh.prototype.strip=null,P.Websocket=class{constructor(t){this._conn=t,this.strip="wrapper";const i=t.service;if(0!==i.indexOf("ws:")&&0!==i.indexOf("wss:")){let n="";"ws"===t.options.protocol&&"https:"!==window.location.protocol?n+="ws":n+="wss",n+="://"+window.location.host,0!==i.indexOf("/")?n+=window.location.pathname+i:n+=i,t.service=n}}_buildStream(){return I("open",{xmlns:P.NS.FRAMING,to:this._conn.domain,version:"1.0"})}_checkStreamError(t,i){let n;if(0===(n=t.getElementsByTagNameNS?t.getElementsByTagNameNS(P.NS.STREAM,"error"):t.getElementsByTagName("stream:error")).length)return!1;let r=n[0],o="",s="";for(let t=0;t<r.childNodes.length;t++){let i=r.childNodes[t];
139if("urn:ietf:params:xml:ns:xmpp-streams"!==i.getAttribute("xmlns"))break;"text"===i.nodeName?s=i.textContent:o=i.nodeName}let a="WebSocket stream error: ";return a+=o||"unknown",s&&(a+=" - "+s),P.error(a),this._conn._changeConnectStatus(i,o),this._conn._doDisconnect(),!0}_reset(){}_connect(){this._closeSocket(),this.socket=new r(this._conn.service,"xmpp"),this.socket.onopen=()=>this._onOpen(),this.socket.onerror=t=>this._onError(t),this.socket.onclose=t=>this._onClose(t),this.socket.onmessage=t=>this._onInitialMessage(t)}_connect_cb(t){if(this._checkStreamError(t,P.Status.CONNFAIL))return P.Status.CONNFAIL}_handleStreamStart(t){let i=!1,n=t.getAttribute("xmlns");"string"!=typeof n?i="Missing xmlns in <open />":n!==P.NS.FRAMING&&(i="Wrong xmlns in <open />: "+n);let r=t.getAttribute("version");return"string"!=typeof r?i="Missing version in <open />":"1.0"!==r&&(i="Wrong version in <open />: "+r),!i||(this._conn._changeConnectStatus(P.Status.CONNFAIL,i),this._conn._doDisconnect(),!1)}_onInitialMessage(t){if(0===t.data.indexOf("<open ")||0===t.data.indexOf("<?xml")){let i=t.data.replace(/^(<\?.*?\?>\s*)*/,"");if(""===i)return;let n=(new s).parseFromString(i,"text/xml").documentElement;this._conn.xmlInput(n),this._conn.rawInput(t.data),this._handleStreamStart(n)&&this._connect_cb(n)}else if(0===t.data.indexOf("<close ")){let i=(new s).parseFromString(t.data,"text/xml").documentElement;this._conn.xmlInput(i),this._conn.rawInput(t.data);let n=i.getAttribute("see-other-uri");if(n){let t=this._conn.service;(t.indexOf("wss:")>=0&&n.indexOf("wss:")>=0||t.indexOf("ws:")>=0)&&(this._conn._changeConnectStatus(P.Status.REDIRECT,"Received see-other-uri, resetting connection"),this._conn.reset(),this._conn.service=n,this._connect())}else this._conn._changeConnectStatus(P.Status.CONNFAIL,"Received closing stream"),this._conn._doDisconnect()}else{this._replaceMessageHandler();let i=this._streamWrap(t.data),n=(new s).parseFromString(i,"text/xml").documentElement;this._conn._connect_cb(n,null,t.data)}}_replaceMessageHandler(){this.socket.onmessage=t=>this._onMessage(t)}_disconnect(t){if(this.socket&&this.socket.readyState!==r.CLOSED){t&&this._conn.send(t);let i=I("close",{xmlns:P.NS.FRAMING});
139this._conn.xmlOutput(i.tree());let n=P.serialize(i);this._conn.rawOutput(n);try{this.socket.send(n)}catch(t){P.warn("Couldn't send <close /> tag.")}}setTimeout(()=>this._conn._doDisconnect(),0)}_doDisconnect(){P.debug("WebSockets _doDisconnect was called"),this._closeSocket()}_streamWrap(t){return"<wrapper>"+t+"</wrapper>"}_closeSocket(){if(this.socket)try{this.socket.onclose=null,this.socket.onerror=null,this.socket.onmessage=null,this.socket.close()}catch(t){P.debug(t.message)}this.socket=null}_emptyQueue(){return!0}_onClose(t){this._conn.connected&&!this._conn.disconnecting?(P.error("Websocket closed unexpectedly"),this._conn._doDisconnect()):t&&1006===t.code&&!this._conn.connected&&this.socket?(P.error("Websocket closed unexcectedly"),this._conn._changeConnectStatus(P.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._conn._doDisconnect()):P.debug("Websocket closed")}_no_auth_received(t){P.error("Server did not offer a supported authentication mechanism"),this._conn._changeConnectStatus(P.Status.CONNFAIL,P.ErrorCondition.NO_AUTH_MECH),t&&t.call(this._conn),this._conn._doDisconnect()}_onDisconnectTimeout(){}_abortAllRequests(){}_onError(t){P.error("Websocket error "+JSON.stringify(t)),this._conn._changeConnectStatus(P.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._disconnect()}_onIdle(){let t=this._conn._data;if(t.length>0&&!this._conn.paused){for(let i=0;i<t.length;i++)if(null!==t[i]){let n;n="restart"===t[i]?this._buildStream().tree():t[i];let r=P.serialize(n);this._conn.xmlOutput(n),this._conn.rawOutput(r),this.socket.send(r)}this._conn._data=[]}}_onMessage(t){let i,n='<close xmlns="urn:ietf:params:xml:ns:xmpp-framing" />';if(t.data===n)return this._conn.rawInput(n),this._conn.xmlInput(t),void(this._conn.disconnecting||this._conn._doDisconnect());if(0===t.data.search("<open ")){if(i=(new s).parseFromString(t.data,"text/xml").documentElement,!this._handleStreamStart(i))return}else{let n=this._streamWrap(t.data);i=(new s).parseFromString(n,"text/xml").documentElement}return this._checkStreamError(i,P.Status.ERROR)?void 0:this._conn.disconnecting&&"presence"===i.firstChild.nodeName&&"unavailable"===i.firstChild.getAttribute("type")?(this._conn.xmlInput(i),void this._conn.rawInput(P.serialize(i))):void this._conn._dataRecv(i,t.data)}_onOpen(){P.debug("Websocket open");let t=this._buildStream();this._conn.xmlOutput(t.tree());let i=P.serialize(t);this._conn.rawOutput(i),this.socket.send(i)}_reqToData(t){return t}_send(){this._conn.flush()}_sendRestart(){clearTimeout(this._conn._idleTimeout),this._conn._onIdle.bind(this._conn)()}};let M={};M.debug=P.LogLevel.DEBUG,M.info=P.LogLevel.INFO,M.warn=P.LogLevel.WARN,M.error=P.LogLevel.ERROR,M.fatal=P.LogLevel.FATAL,P.WorkerWebsocket=class extends P.Websocket{constructor(t){super(t),this._conn=t,this.worker=new SharedWorker(this._conn.options.worker,"Strophe XMPP Connection"),this.worker.onerror=t=>{var i;null==(i=console)||i.error(t),P.log(P.LogLevel.ERROR,`Shared Worker Error: ${t}`)}}get socket(){return{send:t=>this.worker.port.postMessage(["send",t])}}_connect(){this._messageHandler=t=>this._onInitialMessage(t),this.worker.port.start(),this.worker.port.onmessage=t=>this._onWorkerMessage(t),this.worker.port.postMessage(["_connect",this._conn.service,this._conn.jid])}_attach(t){this._messageHandler=t=>this._onMessage(t),this._conn.connect_callback=t,this.worker.port.start(),this.worker.port.onmessage=t=>this._onWorkerMessage(t),this.worker.port.postMessage(["_attach",this._conn.service])}_attachCallback(t,i){t===P.Status.ATTACHED?(this._conn.jid=i,this._conn.authenticated=!0,this._conn.connected=!0,this._conn.restored=!0,this._conn._changeConnectStatus(P.Status.ATTACHED)):t===P.Status.ATTACHFAIL&&(this._conn.authenticated=!1,this._conn.connected=!1,this._conn.restored=!1,this._conn._changeConnectStatus(P.Status.ATTACHFAIL))}_disconnect(t,i){i&&this._conn.send(i);let n=I("close",{xmlns:P.NS.FRAMING});this._conn.xmlOutput(n.tree());let r=P.serialize(n);this._conn.rawOutput(r),this.worker.port.postMessage(["send",r]),this._conn._doDisconnect()}_onClose(t){this._conn.connected&&!this._conn.disconnecting?(P.error("Websocket closed unexpectedly"),this._conn._doDisconnect()):t&&1006===t.code&&!this._conn.connected?(P.error("Websocket closed unexcectedly"),this._conn._changeConnectStatus(P.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._conn._doDisconnect()):P.debug("Websocket closed")}_closeSocket(){this.worker.port.postMessage(["_closeSocket"])}_replaceMessageHandler(){this._messageHandler=t=>this._onMessage(t)}_onWorkerMessage(t){let i=t.data,n=i[0];if("_onMessage"===n)this._messageHandler(i[1]);else if(n in this)try{this[n].apply(this,t.data.slice(1))}catch(t){P.log(P.LogLevel.ERROR,t)}else if("log"===n){let t=i[1],n=i[2];P.log(M[t],n)}else P.log(P.LogLevel.ERROR,`Found unhandled service worker message: ${i}`)}},i.$build=L.$build,i.$iq=L.$iq,i.$msg=L.$msg,i.$pres=L.$pres,i.Stro
139phe=L.Strophe;let F=w.b64_sha1;t.$build=I,t.$iq=O,t.$msg=k,t.$pres=N,t.Strophe=P,t.b64_sha1=F,Object.defineProperty(t,"__esModule",{value:!0})}(i)}},__webpack_module_cache__={};function __nested_rspack_require_1105903__(t){var i=__webpack_module_cache__[t];if(void 0!==i)return i.exports;var n=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(n.exports,n,n.exports,__nested_rspack_require_1105903__),n.exports}__nested_rspack_require_1105903__.amdO={},__nested_rspack_require_1105903__.n=t=>{var i=t&&t.__esModule?()=>t.default:()=>t;return __nested_rspack_require_1105903__.d(i,{a:i}),i},__nested_rspack_require_1105903__.d=(t,i)=>{for(var n in i)__nested_rspack_require_1105903__.o(i,n)&&!__nested_rspack_require_1105903__.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:i[n]})},__nested_rspack_require_1105903__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(t){if("object"==typeof window)return window}}(),__nested_rspack_require_1105903__.o=(t,i)=>Object.prototype.hasOwnProperty.call(t,i),__nested_rspack_require_1105903__.r=t=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var __nested_rspack_exports__=__nested_rspack_require_1105903__(154);return __nested_rspack_exports__})())},363949(t,i,n){"use strict";n.r(i),n.d(i,{default:()=>h}),n(396302);var r=n(296540),o=n(6147),s=n.n(o),a=n(31522),d=n(529633),c=n(42385);class l extends Error{constructor(t){super(t),this.code=DOMException.NOT_SUPPORTED_ERR}}async function u({skipOlm:t=!1}={}){if(window.jQuery||(window.$=window.jQuery=n(274692)),window.JitsiMeetJS||(window.JitsiMeetJS=n(775205)),window.JitsiMeetJS&&d.A.isIOSApp()&&Object.assign(window.JitsiMeetJS.util.browser,{isChromiumBased:()=>!0,isWebKitBased:()=>!1,supportsEncodedTransform:()=>!1,_engineVersion:112}),window.JitsiMeetJS&&d.A.isElectron()&&navigator.mediaDevices){var i;let t=null==(i=navigator.mediaDevices.getDisplayMedia)?void 0:i.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=i=>t?t(i).catch(t=>Promise.reject(new l(t))):Promise.reject(new l(Error("getDisplayMedia not supported")))}t||d.A.isIOSApp()?delete window.Olm:(await new Promise(t=>s()(a.A.getPath("/packs/js/lib-jitsi-meet.e2ee-worker.js"),{async:!0},t)),window.Olm&&await window.Olm.init({locateFile:t=>a.A.getPath(`/packs/js/${t}`)}).catch(t=>{c.A.error("Failed to initialize Olm, E2EE will be disabled",t),delete window.Olm}))}let h=({skipOlm:t=!1,children:i})=>{let[n,o]=(0,r.useState)(()=>d.A.supportsVideo());return(0,r.useEffect)(()=>{n&&u({skipOlm:t}).then(()=>o(!1))},[]),n?null:i}},594982(){},724972(){},245708(){}}]); 140//# sourceMappingURL=9678-7b49cf73b2751d3b.chunk.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.